如何解决什么时候应该使用 WebHID 而不是 WebUSB?
我有一个专有的 USB 设备,它具有通过 USB 闪烁的功能。我想从浏览器中复制此闪烁功能,但我不确定要使用什么 API。
访问 chrome://usb-internals/
检查我的设备给了我以下信息:
设备用类代码 8 宣传自己:大容量存储。该设备没有出现在我的文件系统中,例如它不是普通的 USB 随身碟。根据{{3}},出于安全原因,WebUSB 无法访问大容量存储设备,我应该改用 WebHID。
但是,使用 WebHID 仍然无法连接到我的设备。这是我使用的示例代码:
const filter = [
{
vendorId: 0xabcd,// correct VID:PID obtained via lsusb
productId: 0x1234
}
];
const [device] = await navigator.hid.requestDevice({ filter });
此外,访问 chrome://device-log/
对 USB 和 HID 设备有明显的区别。例如,当我插入鼠标时,Chrome 设备日志显示已连接 USB HID 设备。当我插入 U 盘时,我在调试日志中看到两行:一个 HID 设备,一个大容量存储设备。当我插入我的专有驱动器时,我得到一行:USB 大容量存储设备。
我如何说服 WebHID 连接到我的专有大容量存储设备?
解决方法
没有重大变化是不可能的:
USB mss 存储使用批量端点,HID 通过控制和中断端点传输。
您可以在单个 USB 设备(带有 IAD)上同时实现大容量存储和 HID,但 HID 的引导加载程序代码看起来与大容量存储明显不同。
USB 随身碟通常不支持 HID,除非有 LED 或按钮。
,您可以为该设备安装一个 WinUSB 驱动程序(Zadig 非常简单),然后使用 WebUSB 连接到该设备。
如果您需要编写自己的 SCSI 层,here's how we did it 用于血糖仪,该血糖仪还可安装为大容量存储设备以传输数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。