Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.06;
Скачать: CL | DM;

Вниз

DOS-печать из Delphi   Найти похожие ветки 

 
Андрей Бочкарев   (2002-12-20 22:02) [0]

Уважаемые мастера!
Столкнулся с проблемой: не могу послать управляющую последовательность для принтера (escape-последовательность) в порт LPT1. Это необходимо, чтобы DOS-приложение могло печатать узким шрифтом на HP LaserJet5000.
Смотрел на форумах. Для текстовой печати в Delphi обычно рекомендуют AssignPrn:
procedure TForm1.Button1Click(Sender: TObject);
var
To_Prn : TextFile;
begin
AssignPrn(To_Prn);
Rewrite(To_Prn);
Writeln(To_Prn, "Printer in Text Mode");
CloseFile(To_Prn);
end;

Пробовал. Этот код работает для обычных символов, но не для управляющих! Все управляющие символы, в том числе Escape-символ, принтер печатает как квадратики.
Что делать, подскажите!


 
Song ©   (2002-12-20 22:31) [1]

В этом Вашем отрывке не видно, как Вы пытаетесь послать управлюящие символы.


 
Андрей Бочкарев   (2002-12-21 00:34) [2]

Например, Esc-команду выбора альбомной ориентации страницы при печати на HP5000
<Esc>&l1O
я пытался послать как
Writeln(To_Prn, #27"&l1O");


 
Вообще   (2002-12-21 03:30) [3]

то, посылка Esc-команды, обычно выглядит так:
Writeln(To_Prn,#27,CmndLoByte,CmndHiBite);
А что есть посылка принтеру строки &110 - я просто не знаю!


 
KSergey ©   (2002-12-21 12:22) [4]

Не знаю, просто как предположение: возможно, эти команды открывают как-бы "текстовый" файл, который при приходе управляющих символов либо вовсе закрывается, либо еще и перевирает все (с этим точно сталкивался, но в ДОС-программе: вместо посылаемого #13 всегда преобразовывал в #10#13, и когда это были символы не конца строки, а часть управляющей последовательности (вернее, часть графических даных).. в общем искал я долго...)


 
Anatoly Podgoretsky ©   (2002-12-21 13:01) [5]

KSergey © (21.12.02 12:22)
#13#10 а то это извращенное, могут быть проблемы

Андрей Бочкарев (20.12.02 22:02)
AssignPrn(To_Prn);
попробуй заменить на
AssignFlle(F,"LPT1");



 
ILYA1   (2002-12-22 02:28) [6]

Как то довелось делать программку печати ДОСовских файлов.
Так я просто в начало файла добавлял управляющие Esc-последовательности, а потом командой WinExec("copy "+DOS_file_name+" LPT"+n_porta);
Прошу меня извинить, синтексис команды не помню. Думаю, что идея ясна. На принтерах HP2100 HP4100 все успешно и по сей день.
Успехов!


 
Андрей Бочкарев   (2002-12-23 22:24) [7]

Спасибо Anatoly Podgoretsky!
Вместо AssignPrn(To_Prn); надо использовать
AssignFile(To_Prn,"LPT1");
тогда передача ESC-символов
последующим Writeln (To_Prn,"ESC-последов")
происходит корректно.



Страницы: 1 вся ветка

Текущий архив: 2003.01.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
6-15184
LittleBat
2002-11-06 09:14
2003.01.06
SMS send


3-14940
HazMat
2002-12-13 10:23
2003.01.06
SQLWNTM.DLL


7-15320
Дмитрий К.К.
2002-10-25 15:58
2003.01.06
Добавить в избранное: Opera


6-15194
Дмитрий К.К.
2002-11-04 21:32
2003.01.06
---|Ветка была без названия|---


14-15291
Sergo
2002-12-18 08:18
2003.01.06
Электромагнитная картина мира