pyusb: 函数第一次成功,第二次失败
我有一个树莓派(我在用Linux系统)和一个可以测量一些数值的设备。
我写了一个Python服务器,当客户端发送一个“我想要这些数值”的命令时,我就会向设备请求一些数值。这是我和设备通信的函数:
def usbDevice:
dev = usb.core.find(idVendor=0xXXXX, idProduct=0xXXXX)
if dev is None:
return 'Not found'
dev.set_configuration()
dev.write(1, '\x05', 0) # ask for the values
time.sleep(2)
ret = dev.read(0x81,2048 , 0,1200) # endpoint, siz, interf, timeout ->meas. vals
print ret
return ret
当我开始通信时,一切都很顺利(我发送命令,设备也能正确回应)。但是第二次尝试时(无论我等多久),设备就不再回应我了。我知道我可以发送请求(我用打印“步骤XX”来查看哪里出错),但就是得不到回应……通常我会遇到超时异常,有时还会出现“资源忙”的异常。
我是不是应该在第一次使用后关闭USB通信?怎么做呢?尽管我总是用sudo权限编译,我还创建了一个.rules文件,所以我觉得这不是问题。
除此之外,我真的想知道这种建立USB通信的方式是否有问题,因为我以前用过类似的方法。(而且我对Python不太熟悉……)
1 个回答
1
你能提供一些额外的信息吗,比如你使用的Linux版本和内核号,例如:
uname -a
有一些已知的USB问题。好消息是,最近有一个修复方案可能解决了这些问题。简单来说,你可以使用rpi-update,这样就能更新内核(你至少需要版本#389)。