我正在尝试通过USB与标签打印机通信。我有点用了!在我看来,内核(或其他驱动程序)在我尝试使用USB设备时重新声明了它。我用了几秒钟,但再长一点,设备就不可用了。设备已注册为打印机(类别7)。你知道吗
如果我运行下面的代码,它按预期工作,我从打印机获得响应数据,但如果我在任何地方中断它,我会有几秒钟的时间来逐步通过,但如果我再离开它,一个usb.core.USBError:[Errno 19]未引发此类设备(可能已断开)异常。你知道吗
有没有办法告诉内核或其他驱动程序不要使用这个设备?或者一个更好的方法来访问它的读/写端点可能通过打印机驱动程序,而不是低水平的USB?你知道吗
import usb.core
import usb.util
dev = usb.core.find(idVendor=0x1203, idProduct=0x0273)
if dev is None :
raise ValueError("USB device not found")
wasAttached = False
if dev.is_kernel_driver_active(0):
try:
dev.detach_kernel_driver(0)
usb.util.claim_interface(dev, 0)
wasAttached = True
print("kernel driver detached")
except usb.core.USBError as e:
sys.exit("Could not detach kernel driver: ")
else:
print("no kernel driver attached")
cfg = dev.get_active_configuration()
if cfg.bConfigurationValue != 1 :
dev.set_configuration(1)
cmd = bytes([27, ord('!'), ord('S'), ord('\r'), ord('\n')])
l = dev.write(1, cmd)
print('Sent + ' + str(l))
readBuf = bytes(256)
n = dev.read(130, 256)
print('Read + ' + str(n))
usb.util.release_interface(dev, 0)
if wasAttached :
dev.attach_kernel_driver(0)
给出以下响应,显示驱动程序在启动时已连接到内核,并且数据在我拥有时发送到打印机并从打印机接收。你知道吗
kernel driver detached
Sent + 5
Read + array('B', [2, 64, 64, 64, 64, 3, 13, 10])
提前谢谢。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐