Считайте штрих-код со сканером в системе Windows 10 - PullRequest
0 голосов
/ 20 декабря 2018

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

Теперь я хочу написать приложение на python для чтения штрих-кодов и QR-кодов с помощью сканера.

Пока я не могу читать коды, в результате я получаю объект.

Что я должен сделать, что не так ???

Доступ к полному параметру со сканера возможен.

#importing modules
import usb
import usb.core
import usb.util
import usb.backend.libusb1

#device vid / pid
VID = 0x2010 
PID = 0x7638

#access the device registry
backend = usb.backend.libusb1.get_backend(find_library=lambda X: "C:\ProgramData\Anaconda3\libusb\amd64")

#some tries to get parameters / informations about the device
usb_error = usb.USBError('USB-Error', error_code='error', errno=None)
dev = usb.core.find(idVendor=VID, idProduct=PID)
dev.set_configuration()
if not dev:
    raise ValueError ("USB device not found")
    exit(1)

config = dev.configurations
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
    intf,
    custom_match = lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN)
ep_adr = ep.bEndpointAddress
dev.backend.open_device
adress = dev.address
manufaktur = dev.manufacturer
conf2 = dev.bNumConfigurations
dev_descriptor = dev.bDescriptorType
ser_num = dev.serial_number
busses = usb.busses()
for bus in busses:
    devices = bus.devices
    for dev in devices:
        print ("Device:", dev.filename)
        print ("  idVendor: %d (0x%04x)" % (dev.idVendor, dev.idVendor))
        print ("  idProduct: %d (0x%04x)" % (dev.idProduct, dev.idProduct))

print('cfg: ', str(cfg))
print('Manufacturer: ', str(manufaktur))
print('Serial Number', str(ser_num))
print('EP: ', ep)

print('Descriptor: ', dev_descriptor)

the actual result:

Device: 
  idVendor: 8208 (0x2010)
  idProduct: 30264 (0x7638)
cfg:    CONFIGURATION 1: 400 mA ==================================
   bLength              :    0x9 (9 bytes)
   bDescriptorType      :    0x2 Configuration
   wTotalLength         :   0x22 (34 bytes)
   bNumInterfaces       :    0x1
   bConfigurationValue  :    0x1
   iConfiguration       :    0x0 
   bmAttributes         :   0x80 Bus Powered
   bMaxPower            :   0xc8 (400 mA)
    INTERFACE 0: Human Interface Device ====================
     bLength            :    0x9 (9 bytes)
     bDescriptorType    :    0x4 Interface
     bInterfaceNumber   :    0x0
     bAlternateSetting  :    0x0
     bNumEndpoints      :    0x1
     bInterfaceClass    :    0x3 Human Interface Device
     bInterfaceSubClass :    0x1
     bInterfaceProtocol :    0x1
     iInterface         :    0x0 
      ENDPOINT 0x83: Interrupt IN ==========================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x83 IN
       bmAttributes     :    0x3 Interrupt
       wMaxPacketSize   :    0x8 (8 bytes)
       bInterval        :    0x1
Manufacturer:  USBKey Chip
Serial Number 202730041341
EP:        ENDPOINT 0x83: Interrupt IN ==========================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x83 IN
       bmAttributes     :    0x3 Interrupt
       wMaxPacketSize   :    0x8 (8 bytes)
       bInterval        :    0x1
Descriptor:  1

1 Ответ

0 голосов
/ 13 августа 2019

Получаемый объект должен быть строкой с полученным результатом сканирования.Попробуйте выполнить сканирование на консоль ...

У вашего сканера в качестве ВЫХОДА эмулируется только клавиатура USB.Все ПО внутри сканера представляет собой строку байтов в результате отсканированного изображения.

То, что вы пытаетесь сделать, - это использовать libusb для непосредственного общения с USB hw, что даст вам только эмуляциюКлавиатура HID.

Если вы хотите взломать, вам нужно поставить на карту сканера jtag или отсканировать config images, чтобы вызвать изменения конфигурации устройства.

...