所以我对 USB 和 PyUSB 比较陌生。我正在尝试使用 PyUSB 与蓝牙设备通信。要初始化它,我需要发送一个命令并从设备读回一些数据。我使用dev.write(0x02, msg)
and来做到这一点ret = dev.read(0x81, 0x07)
。我知道成功响应的命令结构和格式。响应应该有 7 个字节,但我只得到 2 个字节。
此设备有一个仅在 Windows 上运行的参考程序。我已经运行它并使用 USBPcap/wireshark 来监控流量。从这里我可以看到,在我的命令发送后,设备以 2 字节的响应响应了几次,然后最终以完整的 7 字节响应。我正在 Raspberry Pi 上进行 python 工作,所以我无法轻松监控流量。
我认为问题是由于读取需要 7 个字节,然后在达到默认超时后返回结果,而没有收到后续响应。我可以将字节设置为 2 并进行多次读取,但我无法知道消息是否有更多我丢失的字节。因此,我正在寻找一种在请求读取之前检查缓冲区中消息长度的方法,以便我可以指定大小。
此外,是否有缓冲区或任何需要清除的东西,以确保我正在阅读下一条消息。似乎无论我运行多少次读取命令,我都会得到相同的响应。