我希望从使用WebUSB迁移到SerialAPI (这里有很好的解释)。
当前代码:
try {
let device = await navigator.usb.requestDevice({
filters: [{
usbVendorId: RECEIVER_VENDOR_ID
}]
})
this.connect(device)
} catch (error) {
console.log(DEVICE_NAME + ': Permission Denied')
}
新代码:
try {
let device = await navigator.serial.requestPort({
filters: [{
usbVendorId: RECEIVER_VENDOR_ID
}]
})
this.connect(device)
} catch (error) {
console.log(DEVICE_NAME + ': Permission Denied')
}
新代码似乎可以工作,但我认为这是因为浏览器已经通过旧代码请求了设备。
我尝试过重新启动 Chrome 并清除所有浏览历史记录。甚至关闭了 USB 声明页面并使用另一个应用程序声明了该设备(在此期间返回错误DOMException: Unable to claim interface),但 Chrome 似乎不想再次询问。它只是愉快地通过先前的连接传输数据。
我希望使用 SerialAPI 能够避免与其他进程争夺 USB,或者至少输给它们。
更新
我已经忘记了:
Failed to execute 'requestPort' on 'Serial': "Must be handling a user gesture to show a permission request"
这是否意味着用户需要使用按钮通过 SerialUSB 连接到设备?我认为使用 WebUSB 我能够自动弹出连接窗口。
大话西游666
GCT1015
米琪卡哇伊
相关分类