![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать на POS-принтер с определением состояния процесса [D7, WinXP]
DeadAlice © (2010-11-22 17:04:00)Всем хорошего дня!
Есть рулонный принтер, поддерживающий ESC/POS систему команд. Подключен он через Ethernet-модуль, но его драйвера благополучно показывают его как локально подключенное устройство. Есть программа, в которой производится вывод на принтер примерно такого вида:
Printer.PrinterIndex:=Printer.Printers.IndexOf('THERMAL LK-TXXX');
Printer.BeginDoc;
directtoprinter(Chr($1B) + '@',false);
directtoprinter(Chr($1B) + 'M1',false);
directtoprinter('Тест!',true);
Printer.EndDoc;
Но это не удовлетворяет цели, так как хотелось бы при печати каждой строки получать статус принтера - не закончилась ли в нем бумага или случилось еще чего. Вопрос: есть ли способ в случае с объектом Printer получать при печати состояние принтера?
Вариант 2. Если нет, то для Ethernet и USB принтеров есть хитрый трюк, команда "net use lpt1: \\127.0.0.1\printer" транслирующая последовательный порт в принтер. Можно ли реализовать это действия функциями WinApi в программе?
DiamondShark (2010-11-22 18:22:00) [1]
> хотелось бы при печати каждой строки получать статус принтера
Со спулером -- унреально.
DiamondShark (2010-11-22 18:09:00) [2]Я не помню, как там всё устроено в объекте Printer, а дельфей под рукой нет. Но если я ничего не путаю, то он реализует только GDI-печать.
Вам же нужен, судя по задаче, RAW-вывод.
Тогда:
OpenPrinter
StartDocPrinter
WritePrinter
ReadPrinter (если драйвер поддерживает)
GetJob