Webusb:尝试在 Windows 上打开打印机时访问被拒绝

reb*_*ins 6 windows printing google-chrome point-of-sale webusb

我试图允许 POS Web 应用程序使用 Chrome webusb API 直接打印到 StarMicronics(或任何收据打印机)。

我几乎完全相同地使用此处的示例,只是我已将vendorId过滤器修改为 StarMicronics 的供应商 ID。我还尝试过使用完全空的过滤器。它在我测试过的 Mac 电脑上运行良好,但问题出在 Windows 上。

当我单击“打印”按钮时,Chrome 会打开连接窗口,列出我的设备,我可以选择它并单击“连接”。所以navigator.usb.getDevices()工作很棒。当我刷新窗口时,将网站连接到设备后,Chrome 再次毫无问题地找到该设备。

当我尝试这样做时,问题就来了device.open()。我在控制台中收到此错误:DOMException: Access Denied.从这一点来看,我不能执行任何操作device.selectConfiguration()device.claimInterface()因为我收到的错误是必须首先打开设备,显然。

我已经在 Chrome 中启用了我所知道的所有标志: #enable-experimental-web-platform-features #enable-webusb #new-usb-backend

但这些都没有帮助。我还尝试使用其他打印机,例如 HP deskjet 和 Dymo Label Writer,均出现相同的错误消息:访问被拒绝。

再次强调,它在 Mac 上运行良好。

对此的任何帮助将不胜感激。

Rei*_*ant 5

您在 Windows 上收到“访问被拒绝”错误,因为已经有一个驱动程序已声明该设备的所有权。Windows 驱动程序模型要求为将由用户空间应用程序(如 Chrome)访问的任何设备加载“winusb.sys”驱动程序。

请参阅对之前有关智能卡读卡器问题的回答,该读卡器在 Windows 上遇到同样的困难。