libusb, pyusb и python-escpos на машине с Windows
Я пытаюсь работать с принтером Epson POS TM-82 на Windows 7 (64 бит). Я установил драйвер принтера. У меня установлен Python 2.7.15 (64 бит). Для работы с Python я использую этот пакет, python-escpos.
После того, как я установил python-escpos и попытался запустить, как описано в документации, я получаю сообщение об ошибке:
from escpos.printer import Usb
Usb(0x04b8, 0x0e11)
usb.core.NoBackendError: Бэкэнд недоступен
После еще нескольких копаний я нашел эту вики, в соответствии с которой мне нужно использовать самую последнюю версию Zadig, приложения с графическим интерфейсом Automated Driver Installer для WinUSB, libusb-win32 и libusbK.
Итак, я скачал Zadig; из выпадающего меню выбрал TM-82, выбрал WinUSB для замены драйвера и успешно установил драйвер.
После этого я снова выполнил ту же документированную команду python-escpos сверху и получил ту же ошибку:
usb.core.NoBackendError: Бэкэнд недоступен
После еще одного исследования я нашел этот ответ на stackru. Поэтому, следуя ответу, я скачал zip-файл libusb и скопировал
libusb-1.0.20_2\MS64\dll\libusb-1.0.lib
к моемуC:\Windows\System32
, И, наконец, скопировалlibusb-1.0.20_2\MS64\static\libusb-1.0.lib
вC:\Python27\libs\
После этого я снова выполнил ту же документированную команду python-escpos сверху, и на этот раз я получил другую ошибку:
NotImplementedError: Операция не поддерживается или не реализована на этой платформе
Что мне здесь не хватает? Не могли бы вы мне помочь. Спасибо.
1 ответ
Отвечая на мой собственный вопрос здесь. Так что, оказывается, проблема была с библиотекой python-escpos. Мне пришлось удалить следующее из printer.py (модуль python этой библиотеки):
try:
check_driver = self.device.is_kernel_driver_active(0)
except NotImplementedError:
pass
if check_driver is None or check_driver:
try:
self.device.detach_kernel_driver(0)
except usb.core.USBError as e:
if check_driver is not None:
print("Could not detatch kernel driver: {0}".format(str(e)))
Подробности можно найти в моем блоге на Medium.