Устранение неполадок драйвера термопринтера - PullRequest
3 голосов
/ 21 августа 2009

Привет всем. Я устраняю проблему термопринтера при печати через Bluetooth. Это принтер Extech 3750T, работающий под управлением Windows CE. Драйвер реализован поверх Winsock и написан на C ++. Насколько я могу судить, соединение в соответствии со спецификацией.

Кажется, проблема в том, что иногда (примерно один из десяти), когда изображение печатается, принтер просто останавливается. Затем, когда отправляется следующее задание на печать, оно выводит одну строку (шириной в один пиксель) мусора и печатает новую страницу.

Драйвер построен на основе RTF и переводит команды и графику RTF в символы, специфичные для принтера, и escape-последовательности. Руководство разработчика доступно здесь:

http://www.adtech.com.pl/upload/3750T_Developers_Manual.pdf

На этом этапе я совершенно уверен, что это не проблема управления потоком (кроме изменения размеров буфера может как-то помочь).

Одна вещь, которая подтверждается, заключается в том, что всякий раз, когда принтер облажается, он отправляет на устройство управляющий символ отсутствия бумаги, но к этому времени уже слишком поздно его спасать.

Кроме того, я думаю, что проблема вызвана отправкой изображения , пока текст все еще печатается. Грязный хак, вызванный просто ожиданием, равным 5 секундам, кажется, заставляет его уйти, но это неудобно для реализации в производственной среде, так как размер текста (размер шрифта, вес и т. Д.) Влияет на необходимую задержку.

Я думаю, что я ищу предложения о том, как решить эту проблему, а не явные решения.

Есть идеи?

1 Ответ

4 голосов
/ 04 сентября 2009

Примерно через 7 дней после этого я получил некоторую поддержку от производителя принтера и решил проблему, отправляя изображения по одной строке за раз. Этот конкретный принтер использует механизм сжатия изображений, где байт представляет собой либо 8 битов графики, либо может произвольно повторяться максимум 129 раз.

Я пытался разбить поток данных на каждый байт, но это не помогло. Я думаю, это потому, что изображение не любит разбиваться на несколько передач. Передача по одной строке за раз (примерно 72 байта) устранила проблему.

...