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: Бэкэнд недоступен

  1. После еще нескольких копаний я нашел эту вики, в соответствии с которой мне нужно использовать самую последнюю версию Zadig, приложения с графическим интерфейсом Automated Driver Installer для WinUSB, libusb-win32 и libusbK.

    Итак, я скачал Zadig; из выпадающего меню выбрал TM-82, выбрал WinUSB для замены драйвера и успешно установил драйвер.

    После этого я снова выполнил ту же документированную команду python-escpos сверху и получил ту же ошибку:

    usb.core.NoBackendError: Бэкэнд недоступен

  2. После еще одного исследования я нашел этот ответ на 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.

Другие вопросы по тегам