【问题标题】:How to find correct USB device configuration and interface for use in WebUSB?如何找到正确的 USB 设备配置和接口以在 WebUSB 中使用?
【发布时间】:2021-08-16 15:26:29
【问题描述】:

在 WebUSB 中要连接到设备,我们必须选择 configurationinterface
还可以选择使用备用界面。

我如何知道要使用哪些?
我是否需要事先知道这一点,还是可以尝试为每台设备进行检测?

if (!device.configuration)    await device.selectConfiguration(0);

await device.claimInterface(device.configuration.interfaces[0].interfaceNumber)

例如,假设我可以拥有热敏打印机和相机,我能检测到每一个吗?

另外,我如何检查设备是否已被认领?我必须检查每个接口吗?

【问题讨论】:

    标签: javascript usb webapi webusb


    【解决方案1】:

    我如何知道要使用哪些?我需要事先知道吗? 我可以尝试检测每个设备吗?

    正如https://web.dev/devices-introduction/#:~:text=human-readable%20protocol.-,With,-WebUSB%2C%20without%20clear 所说,没有关于此设备的明确文档以及此设备支持哪些 USB 命令,这很难,但幸运的猜测仍然可能。

    观看来自 Suz Hinton 的 Exploring WebUSB and its exciting potential。您还可以通过捕获原始 USB 流量并使用 Wireshark 等外部工具和基于 Chromium 的浏览器中的内部页面 about://usb-internals 等内置浏览器工具检查 USB descriptors 来对该设备进行逆向工程。

    比如说,我可以拥有热敏打印机和相机,我可以吗? 能逐一检测吗?

    相机可能会被挡住。在about://usb-internals/ 中检查您的设备会告诉您,在这种情况下您应该会看到"Blocked by WebUSB"

    另外,我如何检查设备是否已被认领?我必须检查每个接口吗?

    一般来说,我建议https://web.dev/usb/https://www.beyondlogic.org/usbnutshell/usb1.shtml 分别从WebUSB 和USB 开始。

    对于您的具体问题,如果无法执行这些操作,device.open()device.claimInterface() 承诺将失败。

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      相关资源
      最近更新 更多