如何在 WebUSB 中找到正确的 USB 设备配置和接口?
How to find correct USB device configuration and interface for use in WebUSB?
在 WebUSB 中,要连接到设备,我们必须 select configuration
和 interface
。
还可以选择使用备用界面。
我怎么知道要使用哪些?
我是否需要事先知道这一点,或者我可以尝试检测每个设备?
if (!device.configuration) await device.selectConfiguration(0);
await device.claimInterface(device.configuration.interfaces[0].interfaceNumber)
假设我可以使用热敏打印机和相机,我能检测到每一个吗?
此外,如何检查设备是否已被认领?我必须检查每个接口吗?
How can I know which ones to use? Do I need to know this beforehand or
can I try to detect for each device?
正如https://web.dev/devices-introduction/#:~:text=human-readable%20protocol.-,With,-WebUSB%2C%20without%20clear所说,没有关于此设备的明确文档以及此设备支持的USB命令,这很难,但幸运的猜测仍然是可能的。
使用外部工具(如 Wireshark)和内置浏览器工具(如基于 Chromium 的浏览器中的内部页面 about://usb-internals
)观看 Exploring WebUSB and its exciting potential from Suz Hinton. You can also reverse-engineer this device by capturing raw USB traffic and inspecting USB descriptors。
Lets say I can have thermal printers and cameras for example, would I
be able to detect for each one?
相机可能会被挡住。在 about://usb-internals/
中检查您的设备会告诉您应该看到的 "Blocked by WebUSB" 情况。
Also, how can I check if a device is already claimed? Do I have to check every interface?
一般来说,我建议https://web.dev/usb/ and https://www.beyondlogic.org/usbnutshell/usb1.shtml分别从WebUSB和USB入手。
对于您的具体问题,如果无法执行这些操作,device.open()
和 device.claimInterface()
承诺将失败。
在 WebUSB 中,要连接到设备,我们必须 select configuration
和 interface
。
还可以选择使用备用界面。
我怎么知道要使用哪些?
我是否需要事先知道这一点,或者我可以尝试检测每个设备?
if (!device.configuration) await device.selectConfiguration(0);
await device.claimInterface(device.configuration.interfaces[0].interfaceNumber)
假设我可以使用热敏打印机和相机,我能检测到每一个吗?
此外,如何检查设备是否已被认领?我必须检查每个接口吗?
How can I know which ones to use? Do I need to know this beforehand or can I try to detect for each device?
正如https://web.dev/devices-introduction/#:~:text=human-readable%20protocol.-,With,-WebUSB%2C%20without%20clear所说,没有关于此设备的明确文档以及此设备支持的USB命令,这很难,但幸运的猜测仍然是可能的。
使用外部工具(如 Wireshark)和内置浏览器工具(如基于 Chromium 的浏览器中的内部页面 about://usb-internals
)观看 Exploring WebUSB and its exciting potential from Suz Hinton. You can also reverse-engineer this device by capturing raw USB traffic and inspecting USB descriptors。
Lets say I can have thermal printers and cameras for example, would I be able to detect for each one?
相机可能会被挡住。在 about://usb-internals/
中检查您的设备会告诉您应该看到的 "Blocked by WebUSB" 情况。
Also, how can I check if a device is already claimed? Do I have to check every interface?
一般来说,我建议https://web.dev/usb/ and https://www.beyondlogic.org/usbnutshell/usb1.shtml分别从WebUSB和USB入手。
对于您的具体问题,如果无法执行这些操作,device.open()
和 device.claimInterface()
承诺将失败。