【发布时间】:2020-11-01 05:56:29
【问题描述】:
WebUSB 的coverage 非常有限,但是对于这个项目来说没关系。
navigator.usb.requestDevice 方法成功:
navigator.usb.requestDevice({
filters: [{
vendorId: RECEIVER_VENDOR_ID,
productId: RECEIVER_PRODUCT_ID
}]
})
Chrome 获得访问设备的权限(通过模态交互)。
对于浏览器来说,设备存在:
console.log(device)
USBDevice {usbVersionMajor: 2, usbVersionMinor: 0, usbVersionSubminor: 0, deviceClass: 2, deviceSubclass: 2, …}
configuration: null
configurations: [USBConfiguration]
deviceClass: 2
deviceProtocol: 0
deviceSubclass: 2
deviceVersionMajor: 2
deviceVersionMinor: 0
deviceVersionSubminor: 0
manufacturerName: "STMicroelectronics"
opened: true
productId: 22336
productName: "STM32 Virtual ComPort"
serialNumber: "355837673037"
usbVersionMajor: 2
usbVersionMinor: 0
usbVersionSubminor: 0
vendorId: 1155
__proto__: etc...
我关注的例子receiver与Mozilla docs相呼应:
await usbDevice.selectConfiguration(1)
通过Web.dev article 了解通过网络访问 USB,同时希望获得一些 SO Magic。
我没有看到/做什么?
谢谢。
更新
检查 chrome://device-log(调试级别)返回:
USBUser[14:51:38] USB device added: vendor=1155 "STMicroelectronics", product=22336 "STM32 Virtual ComPort", serial="355837673037", guid=2bd99a9a-75bf-4782-8a0d-2f9e13b06e86
USBUser[14:51:30] USB device removed: guid=1b763328-45db-4152-9c56-9b592d614c3e
USBEvent[14:51:30] Failed to clear halt: Pipe error
【问题讨论】:
-
您在哪个平台上运行?如果您查看 chrome://device-log(将级别更改为“调试”),您应该会收到有关选择配置失败的更详细错误。
-
@ReillyGrant 谢谢。更新帖子,看到“无法清除停止:管道错误”。
-
该错误指向对 clearHalt() 的调用失败,而不是 selectConfiguration()。请检查您的代码以确保它在您认为的位置失败。未能清除停止条件可能表示与设备的更致命的通信错误。如果您检查内核日志 (dmesg),可能会有更多错误表明遇到的问题的根源,因为这可能表明与设备的连接不稳定。请使用其他 USB 数据线重试。
-
我想我已经尝试过使用几种不同的电缆,并且会再试一次,也会重新启动。 dmesg 的输入是gist.github.com/MikeiLL/85e8bdada20fff7c74d3461bc2ca48c8,如果您还有时间看一下。
标签: webusb