Как правильно подойти к вопросу: некорректная работа USB Serial принтера. В чём дело?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: имеется система Windows 10 IoT Enterprise (исходная точка разработки, по определённым причинам поменять на другую её не получится). Под неё разрабатывается система, частью которой являются внешние устройства, одно из которых - принтер (не классический HP и т.п.). При подключении этого принтера к системе, даже в случае если разрабатываемое ПО не запущено, принтер начинает печатать "мусорные бланки". Подключается он посредством USB-B to USB-A кабеля, в системе определяется как USB Serial Device с COM9 - исходя из данных девайс менеджера системы. Во время процесса этой печати так же невозможно программно открыть COM порт, который задействован для принтера. Открытие и печать того, что нам нужно, можно произвести только по окончанию печати. Методом долгих исследований удалось выяснить, что дело в usbser.sys драйвере Windows 10 IoT Enterprise (FTDI драйвер для этого устройства корректно не ставится). Мусорная печать начинается только после запуска системы в момент опроса всех подключённых устройств. Или после того как USB-B кабель был вставлен в порт принтера при уже загруженной системе, при отключении - сразу останавливается. Под рукой оказались Windows 10 Pro и Windows 10 Enterprise Evaluation (без IoT) - при подключении принтера тем же способом к ним такого поведения не наблюдается. COM порт успешно открывается сразу же и принтер без проблем начинает печатать сходу. Тип устройства и драйвер определяются такими же.

По вводным: теоретическая причина такого странного поведения: указанный USB драйвер для IoT Enterprise отличается по формату отправляемых дескрипторов для этого класса устройств и принтер воспринимает низкоуровневые USB запроса как данные на печать.
Сейчас ситуация такая: втыкать в другой USB-порт на компьютере IoT Enterprise проверяли, вероятность "грязного внутренного буфера" тоже исключается: питание принтера идёт от внешнего источника в 12V и до включения в него USB кабеля печать не происходит.

Сейчас ситуация такая: вопрос: есть ли возможность заменить конкретно для этого устройства подходящий драйвер другим или написать под него фильтр? Наткнулся на информацию по последним, но так и не понял как правильно настроить.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Редакция DevOps Ответ

Некорректная работа USB Serial принтера обычно упирается в драйвер, выбранный порт, скорость/параметры COM или формат команд, который отправляет приложение. USB Serial — это не “обычный USB-принтер”, а устройство, которое выглядит как виртуальный COM-порт.

Сначала проверьте диспетчер устройств: какой COM-порт создан, нет ли жёлтого значка, какой чип используется — CH340, FTDI, Prolific, CP210x. Для каждого нужен свой нормальный драйвер.

Дальше проверьте параметры порта:

  • baud rate: 9600/19200/115200 — как требует принтер;
  • data bits/parity/stop bits;
  • flow control: none/hardware/software;
  • кодировка и команды: ESC/POS, ZPL, TSPL или свой протокол.

Быстрая проверка через терминал:

mode COM3
echo test > COM3

mode COM3 echo test > COM3

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

Если приложение видит порт, но печать “кракозябрами”, проверьте кодировку: CP866, Windows-1251, UTF-8 и поддержку кириллицы в прошивке принтера. Для ESC/POS часто нужно явно выбрать кодовую страницу.

Итог: определите чип USB-Serial, поставьте правильный драйвер, проверьте COM-параметры и протокол печати. Самая частая ошибка — обращаться к serial-принтеру как к обычному системному принтеру или отправлять не тот формат команд.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно