我试图允许 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 上运行良好。
对此的任何帮助将不胜感激。
我正在开发一个JavaScript库,以通过chrome webusb API使用CCID协议执行智能卡操作。当我在Linux和MacOS上插入智能卡读卡器时,一切都会顺利进行,但是当尝试声明该接口时,我却卡在了Windows上。我试图以管理员身份运行chrome,在Windows上禁用智能卡服务/ CCID驱动程序,以防万一有人声称该接口,但是却无济于事。我一直显示“无法声明接口:访问被拒绝(权限不足)”消息。这真的是权限问题吗?还是我不知道阻止某些Windows服务访问?
编辑:我尝试在另一台Mac,读者无法正常工作。从CCID驱动程序info.plist中删除了特定的供应商ID /产品ID之后,我设法使其工作。所以我想在Windows上也会发生同样的问题,一个CCID驱动程序正在“阻塞”访问接口。我有什么选择?
设备描述符:
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x1a44 VASCO Data Security International
idProduct 0x0001 Digipass 905 SmartCard Reader
bcdDevice 1.02
iManufacturer 1 VASCO
iProduct 2 DP905v1.1
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 93
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 50mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0 …Run Code Online (Sandbox Code Playgroud)