我正在尝试使用读卡器(https://www.ewent-online.com/tcpdf/pdf/ew/p/EW1052/)读取健康卡。
这是代码(从官方文档复制粘贴:https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web):
var device;
navigator['usb'].requestDevice({ filters: [] })
.then(selectedDevice => {
device = selectedDevice;
return device.open(); // Begin a session.
})
.then(() => device.selectConfiguration(1)) // Select configuration #1 forhe device.
.then(() => device.claimInterface(0)) // Request exclusive control over interface #2.
.then(() => device.controlTransferOut({
requestType: 'class',
recipient: 'interface',
request: 0x22,
value: 0x01,
index: 0x00}
)) // Ready to receive data
.then(() => device.transferIn(5, 64)) // Waiting for 64 bytes of data from endpoint #5.
.then(result => {
let decoder = new window['TextDecoder']();
console.log('Received: ' + decoder.decode(result.data));
})
.catch(error => {
console.log(error);
});
错误在这里:
device.claimInterface(0)
由于某种原因,我无法在课堂上使用。我不能弄清楚热,使它的工作,我已经阅读了所有的堆栈溢出相关的线程没有找到一个解决方案。
提前感谢!
2条答案
按热度按时间0md85ypi1#
您的设备实现了USB CCID类,该类位于Chrome保护的类列表中,如下文所述。实现这些类的接口不能通过WebUSB声明。
https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/LZXocaeCwDw/GLfAffGLAAAJ
nkkqxpd92#
navigator.usb.requestDevice({ filters:[{ vendorId:“设置您的产品vendorId”}] })
//如果您设置了错误的产品vendorId,则显示此错误