我有一个树莓派(我用的是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通信的方式是否有问题,因为我过去使用过类似的东西。
能否提供其他信息,例如linux发行版和内核号?
uname -a
有已知的USB问题。好消息是,最近的一次修复可能已经解决了这些问题。基本上,使用rpi-update,它应该更新内核(您至少需要#389)。