Ответ команды ESC/POS

Доброе утро,

Я разрабатываю киоск-приложение. В этом приложении мне нужно отправить несколько команд на принтер с протоколом ESC/POS.

У меня есть несколько команд, которые дают мне информацию о принтере (состояние принтера, состояние конца бумаги). Для отправки команды я использую эту функцию, но мне также нужно прочитайте ответ принтера. Как мне это сделать? (Принтер подключен в режиме USB).

Я разрабатываю на delphi xe2

Спасибо


person dvdan    schedule 15.05.2015    source источник
comment
Похоже, последний параметр для Escape должен быть указателем на структуру данных (ноль в вашем связанном примере) для получения вывода.   -  person Ondrej Kelle    schedule 15.05.2015
comment
@TOndrej спасибо, но я не знаю, как устроен lpvOutData в delphi.. Я пытался использовать TPassThroughData в примере, но безуспешно..   -  person dvdan    schedule 15.05.2015
comment
Добро пожаловать. Структура, вероятно, зависит от принтера и должна быть описана в его документации.   -  person Ondrej Kelle    schedule 15.05.2015
comment
Я не уверен в этом.. В инструкции нет информации. И я пробовал много решений (массив байтов, короткая строка, строка, целое число ...), но ничего не работает   -  person dvdan    schedule 15.05.2015
comment
Я не говорю о руководстве пользователя, вам нужна техническая документация, предназначенная для разработчиков.   -  person Ondrej Kelle    schedule 15.05.2015
comment
@TOndrej, я говорил о руководстве разработчика. Тип, возвращаемый принтером, — byte.   -  person dvdan    schedule 15.05.2015


Ответы (2)


В примере предполагается, что тип вашей строки простой, например shortstring. Попробуйте объявить s как shortstring. Он не может работать с widestring или unicode.

person Rohit Gupta    schedule 15.05.2015
comment
штамп(ы) процедуры: короткая строка; тип TPassThroughData = запись nLen: Integer; Данные: массив [0 .. 255] байт; конец; var PTBlock: TPassThroughData; PTReply: TPassThroughData; начать Printer.BeginDoc; PTBlock.nLen := длина(и); StrPCopy(@PTBlock.Data, с); Escape(Printer.Handle, PASSTHROUGH, 0, @PTBlock, @PTReply); Принтер.КонецДокумента; конец; Что-то меняется, но ничего не меняется... - person dvdan; 15.05.2015

Вы проверили, создает ли соединение USB новый последовательный порт?

Если в диспетчере устройств отображается новый последовательный порт, я могу помочь вам отправить команду ESC с компонентом Delphi Comport.

Но если последовательный порт не отображается, я понятия не имею, как управлять термопринтером.

person Dennies Chang    schedule 09.06.2018