我有一个专有的usb设备,在usb上有闪烁功能。我想从浏览器中复制这个闪烁功能,但我不确定要使用什么api。
参观 chrome://usb-internals/
要检查我的设备,请提供以下信息:
该设备使用类别代码8:大容量存储进行自我宣传。该设备未显示在我的文件系统中,例如,它不是正常的usb pendrive。根据这个stackoverflow回答,由于安全原因,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设备已连接。当我插入usb pendrive时,调试日志中有两行代码:一个hid设备,一个大容量存储设备。当我插入我的专用驱动器时,我得到一条线路:usb大容量存储设备。
我如何说服webhid连接到我的专有大容量存储设备?
2条答案
按热度按时间rjjhvcjd1#
如果没有重大变化,则不可能:
usb mss存储使用批量端点,hid通过控制和中断端点传输。
您可以在单个usb设备(带有iad)上实现大容量存储和hid,但是hid的引导加载程序代码看起来与大容量存储的代码有很大的不同。
usb Pendrive通常不支持hid,除非有led或按钮。
fwzugrvs2#
您可以为该设备安装winusb驱动程序(zadig使其非常简单),然后使用webusb连接到该设备。
如果您需要编写自己的scsi层,下面是我们如何为血糖仪编写的,血糖仪也作为大容量存储设备安装以传输数据。