Команда
PRINTOUT выполняет полный цикл действий по печати на чековый принтер.
- PRINTOUT <respfile> <data>
- <respfile> - имя файла ответа, в ResponseDir;
- <data> - имя выводимого файла, требуется указывать полный (абсолютный) путь, может отсутствовать - см. ниже.
- Ответ записывается в файл, первая строка может иметь одно из перечисленных значений:
- 0 OK ;Чек напечатан (на второй строке двузначное 16-ричное число, комбинация флагов состояния рулона, полученных по команде STATUS_ROLL (см. комментарии входящих в комплект программного продукта файлов PrinterCommands*.txt): 1 - сработал датчик приближения конца бумаги, 2 - сработал датчик отсутствия рулона, ноль означает нормальное состояние или неизвестное состояние.
- 1 BAD FILE ;не удалось открыть входной файл, или ошибка чтения
- 2 OFFLINE ;нет связи с принтером, или принтер не работает (диагностика на второй строке, двузначное 16-ричное число, равно статусу принтера, полученному по команде STATUS_PRINT (см. комментарии входящих в комплект программного продукта файлов PrinterCommands*.txt), ноль означает невозможность получения статуса, например, из-за ошибки связи)
- Нулевой код диагностики OFFLINE означает отсутствие принтера (по крайней мере, ошибку связи с принтером или ошибку настройки подключения).
- Ненулевой код диагностики OFFLINE соответствует возвращённому принтером коду состояния, интерпретация значения зависит от модели принтера.
- В любом случае, с точки зрения интерфейса приёма платежей, 2 OFFLINE означает неисправность принтера, не связанную с отсутствием бумаги.
- 3 NO PAPER
- В принтере кончилась бумага.
- Для отладки клиентских приложений можно "спровоцировать" результат 3 NO PAPER - см. CONFIG PrinterSimulateNoPaper (если задать ненулевое значение PrinterSimulateNoPaper, то любой вызов PRINTOUT будет завершаться с результатом 3 NO PAPER)
Если файл данных для печати не задан, то печать не выполняется, но проверка состояния принтера выполняется, т.е. возможен результат
0 OK,
2 OFFLINE,
3 NO PAPER.
При печати выполняется управление атрибутами шрифта.
Программа
PRINTOUT.EXE представляет собой безоконный (не консольный и не скрыто-оконный) процесс операционной системы, результат выполнения записывается в текстовый файл под указанным именем в пути
ResponseDir (конфигурируемый параметр службы
NDemia CashMatic Kiosk, настраивается командой
CONFIG).
Служба
NDemia CashMatic Kiosk должна работать на момент вызова
PRINTOUT.
Служба открывает файлы ответов и файлы данных в режиме
FILE_SHARE_DELETE, что позволяет вызывающей программе перед вызовом службы создать файл с флагом
FILE_FLAG_DELETE_ON_CLOSE (см. документацию по
Windows API, функция
CreateFile), и в дальнейшем не заботиться об удалении этого файла - операционная система автоматически удалит его даже при сбоях работы программного обеспечения.
Вызывающее приложение может узнать о готовности ответа по завершению процесса
PRINTOUT.EXE