我正在尝试通过 WEBUSB 将 USB 热敏打印机连接到我的 Android 平板电脑(Samsung Galaxy Tab S4、Android 9),但在尝试声明接口时出现此错误:“未能声明接口 0:设备或资源忙(16)"
我正在发布代码,但我认为问题不在这里,因为它在 Windows 10 上运行良好(在使用 Zadig 将默认驱动程序更改为 WinUSB 之后):
this.printerProvider = navigator['usb'];
this.printerProvider.requestDevice({filters: []})
.then(selectedDevice => {
this.device = selectedDevice;
return this.device.open();
})
.then(() => {
return this.device.selectConfiguration(1);
})
.then(() => {
return this.device.claimInterface(this.device.configuration.interfaces[0].interfaceNumber);
})
.then(() => {
for (let ep of this.device.configuration.interfaces[0].alternate.endpoints) {
if (ep.direction == 'out') {
this.endpoint = ep;
console.log('USB PRINTER CONNECTED')
}
}
})
.catch((err) => {
console.log(err);
})
事实上,我使用本文提供的不错的工具得到了相同的结果: https ://labs.mwrinfosecurity.com/blog/webusb/ 这个工具基本上试图声明所有接口。
所以,我的猜测是 Android 本身已经声明了这个接口。我还尝试启用开发人员选项以查看那里是否有有用的东西,但我没有找到任何东西。
非常感谢任何帮助。
垫