2

尝试通过 WebUSB10.14.1在 Google Chrome 版本中读取 MacOS 上的 USB 条码扫描仪。71.0.3578.98

使用条形码扫描仪:https ://www.ebay.co.uk/itm/Barcode-Scanner-USB-Handheld-Wired-Portable-Laser-Scan-Bar-Code-Reader-Scan-POS/282865082953

设备在 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)(这是对象中唯一可用的接口时,它会因错误(或DOMException )device而失败- 由于最近的更改,这是预期的:https ://groups.google.com/a/chromium.org /forum/#!msg/blink-dev/LZXocaeCwDw/GLfAffGLAAAJAn attempt to claim a USB device interface has been blocked because it implements a protected interface class.SecurityErrorThe requested interface implements a protected class.

有没有办法以某种方式“更深入地调试”,因为我看不到只使用可用接口的方法。

谢谢!

4

2 回答 2

1

如果唯一可用的接口被阻止,则无法通过 WebUSB API 使用它。有一个单独的 API WebHID正在开发中,旨在满足在授予对提供 HID 接口的设备的访问权限时的特定要求。

于 2018-12-31T21:37:48.847 回答
0

通过将扫描仪切换到不同的接口解决了这个问题 - 有 4 种接口模式,其中一种(“USB VCOM”)允许有 2 个接口可用,所以claimInterface(1)很成功。

于 2019-01-01T21:52:30.350 回答