Как решить «ошибка контрольного сообщения, ошибка win: было указано устройство, которое не существует» PyUSB - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь подключить чековый принтер POS к python и использую python -escpos для этого. Я использую windows 10.

Мой код в моем файле 'print.py':

from escpos.printer import Usb

p = Usb(0x0456,0x0808)

p.text('Hello World\n')

, но когда я его запускаю, я получаю следующий журнал ошибок:

Traceback (most recent call last):
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 223, in get_interface_and_endpoint
    return self._ep_info[endpoint_address]
KeyError: 1

Во время обработки вышеупомянутого исключения произошло другое исключение:

Traceback (most recent call last):
  File "print.py", line 5, in <module>
    p.text('Hello World\n')
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\escpos\escpos.py", line 437, in text
    self._raw(txt.encode())
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\escpos\printer.py", line 73, in _raw
    self.device.write(self.out_ep, msg, self.timeout)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 940, in write
    intf, ep = self._ctx.setup_request(self, endpoint)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 215, in setup_request
    intf, ep = self.get_interface_and_endpoint(device, endpoint_address)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 225, in get_interface_and_endpoint
    for intf in self.get_active_configuration(device):
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\core.py", line 239, in get_active_configuration
    bConfigurationValue=self.backend.get_configuration(self.handle)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\backend\libusb0.py", line 510, in get_configuration
    100)
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\backend\libusb0.py", line 593, in ctrl_transfer
    timeout
  File "C:\Users\Harry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\usb\backend\libusb0.py", line 431, in _check
    raise USBError(errmsg, ret)
usb.core.USBError: [Errno None] b'libusb0-dll:err [control_msg] sending control message failed, win error: A device which does not exist was specified.\r\n\n'

Кто-нибудь знает, что мне нужно сделать, чтобы сделать эту работу. Я установил libusb в свои папки System32 и SysWOW64, а также установил драйвер libusb-32 для моего принтера с zadig.

Используемый мной принтер - это POS-принтер Hoin 58mm.

Буду признателен, если кто-нибудь сможет объяснить мне, почему у меня возникает эта ошибка и как ее устранить!

...