Команда Zebra CPCL PCX переводит принтер в режим приема на неопределенный срок

Попытка печати на принтере Brother RJ-4230B в линейном режиме CPCL через Brother Print SDK.

Принтер застревает на «Получении», когда я отправляю эти байты, используя driver.sendRawData(bytes):

      ! 0 200 200 2596 1
PW 575
TONE 0
SPEED 3
ON-FEED IGNORE
NO-PACE
BAR-SENSE
PCX 190 12 
����
FORM
PRINT

���� представляет собой 4 байта тестового образа PCX. Есть и другие изображения, которые мне нужно отправить аналогичным образом.

Этот подход, кажется, соответствует руководству и примерам, которые я нашел в Интернете, но он не работает. Вот страница руководства для команды PCX:

Командная строка:

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}\r\nFORM\r\nPRINT\r\nпрежде чем он будет преобразован в байты.

Я также пробовал без FORM:

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}\r\nPRINT\r\n"

и без \r\nв командной строке РСХ:

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 {pcx image data bytes}\r\nPRINT\r\n"

Также различные комбинации с использованием STARTPCX.LBL и/или ENDPCX.LBL:

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}\r\nENDPCX.LBL\r\nPRINT\r\n

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}ENDPCX.LBL\r\nPRINT\r\n

STARTPCX.LBL\r\n! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n!{pcx image data bytes}\r\nENDPCX.LBL\r\nPRINT\r\n

STARTPCX.LBL\r\n! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}ENDPCX.LBL\r\nPRINT\r\n

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nSTARTPCX.LBL\r\nPCX 190 12 \r\n{pcx image data bytes}ENDPCX.LBL\r\nPRINT\r\n

Как я могу заставить принтер распознавать конец отправки встроенных данных?

2 ответа

Проблема оказалась в том, что я отправлял байты растрового изображения, когда нужно было преобразовать растровое изображение в файл PCX и вместо этого отправить эти байты. Кроме того, убедитесь, что вы не ставите \r\n между командой PCX и потоком байтов.

      ! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 {pcx image data bytes}\r\nPRINT\r\n"

См. ПРЕОБРАЗОВАНИЕ ФАЙЛОВ PCX ДЛЯ ПРИНТЕРОВ ZPL ИЗ КОМАНДНОЙ СТРОКИ .
Загрузка PCX в ZPL, например. быть ~DYR:ARROW,B,X,268,,(чтобы было что тестировать).
Также представляется уместным справочник по языку команд принтера Camero (CPCL). Убедись, что bytesдействительно монохромный. В примере размер 268в основном сообщает об этом, когда загрузка завершена, заранее - подобно тому, как HTTP-сервер может сообщать длину содержимого перед загрузкой.

Когда переданный контент-длина больше, чем он есть на самом деле, он может ожидать большего в EOF.

В качестве альтернативы, для прямой печати файла PCX (пока поддерживается), команда, например. быть:

      ! 0 200 200 500 1
PCX 0 30

Наверное перепутал Brother с Zebra, но CPCL (см. справочник) все равно.
Окончание строки \r\nэто ДОС; альтернативой было бы \n(не уверен, какой из них применяется для CPCL).
Отказ от ответственности: я знаю только серию QL, а не серию RJ, и у меня нет тестового оборудования.

Другие вопросы по тегам