libusb, pyusb и python-escpos на машине с Windows - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь работать с принтером 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. После еще нескольких копаний я нашел эту wiki , в соответствии с которой мне нужно использовать самую последнюю версию Zadig, приложения с графическим интерфейсом автоматического установщика драйверов для WinUSB, libusb-win32 и libusbK .

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

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

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

  2. После еще одного исследования я нашел этот ответ на stackoverflow. Поэтому, следуя ответу, я скачал 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 Ответ

0 голосов
/ 21 ноября 2018

Отвечая на мой собственный вопрос здесь. Так что, оказывается, проблема была с библиотекой 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)))

Подробности можно найти в моем блоге на Средний .

...