kern回收的PyUSB Linux-USB设备

2024-10-04 11:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试通过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])

提前谢谢。你知道吗


Tags: coredevifdriverutil驱动程序打印机kernel