什么时候应该使用webhid而不是webusb?

olmpazwi  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(765)

我有一个专有的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连接到我的专有大容量存储设备?

rjjhvcjd

rjjhvcjd1#

如果没有重大变化,则不可能:
usb mss存储使用批量端点,hid通过控制和中断端点传输。
您可以在单个usb设备(带有iad)上实现大容量存储和hid,但是hid的引导加载程序代码看起来与大容量存储的代码有很大的不同。
usb Pendrive通常不支持hid,除非有led或按钮。

fwzugrvs

fwzugrvs2#

您可以为该设备安装winusb驱动程序(zadig使其非常简单),然后使用webusb连接到该设备。
如果您需要编写自己的scsi层,下面是我们如何为血糖仪编写的,血糖仪也作为大容量存储设备安装以传输数据。

相关问题