postech
@postech
программист

Как поймать событие считывания со сканера ШК (USB)?

Добрый день.

Стоит задача получать данные со сканера штрих-кодов, подключенного через USB.

На моей машине при подключении сканера в USBDeview становится активным виртуальный COM-порт COM3 (он изначально существует в списке портов в "Диспетчере устройств"), соответственно, скрипт получает данные с помощью pyserial
import serial
ser = serial.Serial("COM3", 9600, timeout=1)
data = ser.readline()


Однако на удаленной машине, где скрипт должен работать (немного с другим типом сканера ШК), виртуальных COM-портов вообще нет.
Как в этом случае организовать перехват события "ШК считан" и получение данных от сканера?

Исходя из логики, что сканер ШК работает как клавиатура, пробовал подвязаться к data = input(), но так не работает.

Возможно, есть какой-то способ эмулировать виртуальный COM-порт и перенаправить (или дублировать) все вводимые данные с USB-устройства туда.
Спасибо

upd:
По рекомендациям попробовал слушать события клавиатуры, ввод со сканера перехватывается (сканер "вводит" набор символов с распознанного ШК + Enter), но столкнулся с проблемой: первый код сканируется нормально, второй - по 2 раза каждый символ, третий - по 3, и т.д. (скрин с логом). Строку данных очищаю каждую секунду, пробовал перезапускать Listener после каждого набора - эффекта нет. Может быть, кто-то знает, в чем проблема?

6641c1705b8e9969985295.png
  • Вопрос задан
  • 414 просмотров
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
У сканеров есть несколько режимов работы. Сейчас в основном используют клавиатуру(отсканированный код вводится как нажатия клавиш на клавиатуре).

Так что отслеживай нажатия и все. Понять что это сканер можно по задержке между символами.
Ответ написан
ValdikSS
@ValdikSS
Если ваш сканер — HID-устройство, представляющиеся клавиатурой, то самым надёжным вариантом будет чтение данных прямо из устройства.

https://github.com/holl-/win-raw-in
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы