Добрый день.
Стоит задача получать данные со сканера штрих-кодов, подключенного через 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 после каждого набора - эффекта нет. Может быть, кто-то знает, в чем проблема?