1

我正在 Chrome 上测试新的 webusb api ( https://wicg.github.io/webusb/ ) 并且正在测试从 USB 设备发送 (transferOut) 和接收 (transferIn)。

它工作得很好,但我尝试读取的数据比预期的要少(2 个字节而不是 3 个字节,其中消息的长度实际上用前两个字节表示)。

问题是当我读取的字节数少于预期时,USB api 返回状态“babble”。之后如何保证正常通信?我仍然可以发送数据,但接收数据总是返回错误“DOMException:发生传输错误”。

我尝试运行 device.clearHalt("in", 1) (方向“in”和端点 1),但它也不起作用(抛出“DOMException:无法清除端点。”)。

有人遇到过这个问题吗?

(我在 OSX 上使用 Chrome 65.0.3325.181)

4

1 回答 1

3

如上所述,我仍在研究从babble错误中恢复的最佳方法,但解决此问题的最简单方法是避免transferIn()使用不是端点最大数据包大小倍数的长度进行调用。在软件中处理额外的数据比尝试从硬件协议错误中恢复要容易得多。

于 2018-06-29T22:57:52.840 回答