我正在尝试通过WEBUSB将USB热敏打印机连接到我的安卓平板电脑(三星Galaxy Tab S4,安卓9),但在尝试声明接口时出现以下错误:“无法声明接口0:设备或资源忙(16)”
我发布了代码,但我认为问题不在这里,因为它在Windows10上运行良好(在使用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本身已经拥有了这个接口。我还试图启用开发人员选项,以查看其中是否有有用的东西,但我没有找到任何东西。
任何帮助都是非常感谢的。
垫子
发布于 2019-07-30 05:39:48
当打印机插入电源时,lsusb -v会说什么?ls /sys/bus/usb/devices还应该列出实际的配置。也许可以尝试将USB端口模式设置为“只充电”(因为这样就不会加载任何特定的内核驱动程序)……或者试试demo。
发布于 2019-08-08 01:15:03
接口描述符显示这是一个USB打印机类设备(协议2表示双向)。据我所知,Android没有为内核内置的USB接口类提供驱动程序。可能发生的情况是,设备上有另一个应用程序(如打印机服务)已声明此接口。检查系统设置中的“打印”部分,看看您是否安装了任何东西。
https://stackoverflow.com/questions/57261350
复制相似问题