windows机器上的libusb、pyusb和python-escpos



我正在尝试在windows 7(64位(上使用Epson POS TM-82打印机。我已经安装了打印机的驱动程序。我安装了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的自动驱动程序安装程序GUI应用程序。

    所以,我下载了Zadig;从下拉菜单中选择TM-82,选择WinUSB替换驱动程序并成功安装驱动程序。

    在那之后,我再次从上面运行了相同的python escpos文档命令,并得到了相同的错误:

    usb.core.NoBackendError:没有可用的后端

  2. 经过更多的研究,我在stackoverflow上找到了这个答案。因此,根据答案,我下载了libusb-zip文件,并将libusb-1.0.20_2MS64dlllibusb-1.0.lib复制到我的C:WindowsSystem32。并最终将libusb-1.0.20_2MS64staticlibusb-1.0.lib复制到C:Python27libs

    在那之后,我再次从上面运行了相同的python escpos文档命令,这次我得到了一个不同的错误:

    NotImplementedError:此平台上不支持或未实现操作

我这里缺少什么?你能帮帮我吗?谢谢。

在这里回答我自己的问题。事实证明,问题出在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上找到。

最新更新