尝试通过WebUSB在Google Chrome版本10.14.1
中的MacOS 71.0.3578.98
上读取USB条码扫描器。
设备在requestDevice对话框中显示为Usb211
,并成功打开,这是我在此处使用的代码:
const VENDOR_ID = 0x8888
navigator.usb.requestDevice({ filters: [{ vendorId: VENDOR_ID }] })
.then(selectedDevice => {
device = selectedDevice;
return device.open();
})
.then(() => device.selectConfiguration(1))
.then(() => device.claimInterface(device.configuration.interfaces[0].interfaceNumber)) # interfaceNumber is 0
.catch(error => { console.log(error); });
当我尝试claimInterface(0)
(这是device
对象中唯一可用的接口时,它失败,并显示错误An attempt to claim a USB device interface has been blocked because it implements a protected interface class.
(或SecurityError
DOMException {{1} })-由于最近的更改,预计该版本:https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/LZXocaeCwDw/GLfAffGLAAAJ
有什么办法可以以某种方式“更深入地调试”,因为我看不到仅使用可用接口的方法。
谢谢!
答案 0 :(得分:0)
如果唯一的可用接口被阻止,则无法通过WebUSB API使用它。工作中还有一个单独的API WebHID,旨在满足在授予对提供HID接口的设备的访问权限时的特定要求。
答案 1 :(得分:0)
通过将扫描仪切换到不同的接口来解决此问题-有4种接口模式,其中一种(“ USB VCOM”)允许有2种接口可用,因此claimInterface(1)
成功。