Форум: "Основная";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c