DOMException:无法设置设备配置 Chrome 86
DOMException: Unable to set device configuration Chrome 86
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 I am following echoes the Mozilla docs:
await usbDevice.selectConfiguration(1)
通过 Web 访问 USB 上的 Web.dev article 我的方法,同时希望有一些 SO Magic。
我不是什么seeing/doing?
谢谢。
更新
正在检查 chrome://设备日志(调试级别)returns:
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
因为 USB——尤其是 WebUSB——似乎比我使用的 http 连接更脆弱,在使用 Javascript 接口的同时,我还尝试使用 PyUSB 提取数据.目标是将数据从设备写入 CSV 文件,这样两者都可以工作。
在此 related post 中,我概述了该过程中的一些额外步骤,包括:
- 正在重启机器
- 已连接设备
- 一个好 USB数据线
- 正在 DEBUG 级别检查
chrome://device-log
- 使用 Serial App
的演示
- 使用
kexstat
检查状态,使用 kextunload
“取消声明”
- 查看内核日志
dmesg
我很乐意接受比这更可靠的“答案”,但我终于看到了一些数据:
let rawStream = new Uint8Array(data.buffer)
console.log(rawstream)
Uint8Array(69) [51, 48, 49, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 13, 10]
和
let segments = String.fromCharCode.apply(null, rawStream).split(' ')
console.log(segments)
["300", "V1.06", "585AEEDD", "00000000", "00000000", "00000000", "00000000", "00000000", "00000000", "
↵"]
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 I am following echoes the Mozilla docs:
await usbDevice.selectConfiguration(1)
通过 Web 访问 USB 上的 Web.dev article 我的方法,同时希望有一些 SO Magic。
我不是什么seeing/doing?
谢谢。
更新
正在检查 chrome://设备日志(调试级别)returns:
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
因为 USB——尤其是 WebUSB——似乎比我使用的 http 连接更脆弱,在使用 Javascript 接口的同时,我还尝试使用 PyUSB 提取数据.目标是将数据从设备写入 CSV 文件,这样两者都可以工作。
在此 related post 中,我概述了该过程中的一些额外步骤,包括:
- 正在重启机器
- 已连接设备
- 一个好 USB数据线
- 正在 DEBUG 级别检查
chrome://device-log
- 使用 Serial App 的演示
- 使用
kexstat
检查状态,使用kextunload
“取消声明” - 查看内核日志
dmesg
我很乐意接受比这更可靠的“答案”,但我终于看到了一些数据:
let rawStream = new Uint8Array(data.buffer)
console.log(rawstream)
Uint8Array(69) [51, 48, 49, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 13, 10]
和
let segments = String.fromCharCode.apply(null, rawStream).split(' ')
console.log(segments)
["300", "V1.06", "585AEEDD", "00000000", "00000000", "00000000", "00000000", "00000000", "00000000", "
↵"]