我试图打印到TM-T20II热敏打印机,以便可以打印收据。这是我的代码:
from escpos import printer
from escpos import *
import escpos
from escpos import config
import usb.core
import usb.util
import usb.backend.libusb1
from ctypes import c_void_p, c_int
backend = usb.backend.libusb1.get_backend(find_library=lambda x: "libusb-1.0.dll")
backend.lib.libusb_set_option.argtypes = [c_void_p, c_int]
backend.lib.libusb_set_option(backend.ctx, 1)
p = printer.Usb(0x04b8,0x0e15,0,0x82,0x01, backend=backend)
p.text('test')
我使用的是usbdk后端,如果没有它,我会收到“ NotImplementedError:此平台不支持或未实现操作”的信息。我这样做是因为要使我的程序正常工作,我需要使用默认的Epson驱动程序。当我运行此代码时,我得到的错误是:
<文件“ C:\ Users \ maxsl \ anaconda3 \ lib \ site-packages \ usb \ core.py”,行234,在get_interface_and_endpoint中返回self._ep_info [endpoint_address]
KeyError:1
在处理上述异常期间,发生了另一个异常:
文件“ C:\ Users \ maxsl \ anaconda3 \ lib \ site-packages \ usb \ backend \ libusb1.py”,第604行,在_check中,出现USBError(_strerror(ret),ret,_libusb_errno [ret])
USBError:[Errno无]其他错误>
仅当我添加时才会发生此错误p.text()
。查找打印机和其他所有物品都没有问题。我也想说这write()
在PyUSB模块中有效,但是对于我来说不必将程序中的输出转换为令人困惑的ESC / P语言会更加方便。
我正在将Spyder 4与anaconda(python 3.7)64位,libusb 1.0.22b9,github上的最新pyusb(PyPi版本出现未实现的错误)以及python-escpos 3.0a8一起使用。我相信它们都是64位的。我在System32中有64x文件夹中的libusb1.dll,在SysWoW64中有86x的文件夹,如推荐的那样。我也安装了Usbdk。如果您有任何要解决的想法或需要更多详细信息,请告诉我。谷歌搜索了大约一个星期。
对于其他与我有相同问题的人,我所要做的就是安装爱普生的TM虚拟端口驱动程序并将打印机设置为COM端口。然后,我必须进入打印机的设置,然后手动将端口更改为虚拟端口。然后,我将代码更改为此:
from escpos import printer
pr = printer.Serial('COM2')
data= '''
hello world
'''
pr.text(data)
pr.close()
终于成功了!您可以看到我将代码缩减了很多。事实证明,我什至不需要更改后端。因此,奇怪的USB不起作用,而串行起作用。只要它起作用!感谢kunif为我的解决方案提供指导,甚至从未考虑过检查串行端口。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句