0

我有一个专有的 USB 设备,它通过 USB 具有闪烁功能。我想从浏览器中复制这个闪烁功能,但我不确定要使用什么 API。

访问chrome://usb-internals/检查我的设备给了我以下信息:

USB 设备说明:类代码 8,大容量存储设备

该设备使用类别代码 8:大容量存储来宣传自己。该设备没有出现在我的文件系统中,例如它不是普通的 USB 随身碟。根据这个 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 连接到我的专有大容量存储设备?

4

2 回答 2

0

没有重大变化是不可能的:

USB mss 存储使用批量端点,HID 通过控制和中断端点传输。

您可以在单个 USB 设备(使用 IAD)上同时实现大容量存储和 HID,但 HID 的引导加载程序代码看起来与大容量存储有很大不同。

USB 随身碟通常不支持 HID,除非有 LED 或按钮。

于 2021-07-11T15:00:02.437 回答
0

您可以为设备安装 WinUSB 驱动程序(Zadig使其非常容易),然后使用 WebUSB 连接到设备。

如果您需要编写自己的 SCSI 层,以下是我们为血糖仪编写的方法,该血糖仪也作为大容量存储设备安装以传输数据。

于 2021-07-12T10:18:54.150 回答