pyusb: 函数第一次成功,第二次失败

1 投票
1 回答
1084 浏览
提问于 2025-04-17 19:26

我有一个树莓派(我在用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)。

撰写回答