获取 WebUSB API 中可用 USB 设备的列表

问题描述

在 WebUSB API 中有没有办法获取所有可用设备的列表?

在这里遇到的情况是一台计算机可以有多个相同的设备,假设它有 2 台相同的打印机。我想避免显示要求用户选择设备的弹出窗口,因此我想检查该设备是否已被认领。

我可以通过运行 inch 来检查设备是否已被认领,但这只会列出已认领的设备,如果有尚未认领的相同设备我不知道。

所以问题是,如果我认为该设备已被认领并且不显示对话框,则用户无法使用第二个设备,如果我从未考虑过已认领的设备,我将不得不每次都显示该对话框.

解决方法

没有用于获取所有可用设备列表的 API。网站只能通过请求用户许可才能访问设备(以及有关该设备的信息)。

我认为 navigator.usb.getDevices() 的作用有些混乱。它返回用户之前授予站点访问权限的一组连接设备,无论这些设备是否被声明。

我建议应用程序做的是使用 navigator.usb.getDevices() 向用户显示可用的设备集,并且有一个“添加设备”按钮,如果用户没有看到将调用 navigator.usb.requestDevice()他们正在寻找的设备。如果用户知道他们有两个设备并且需要连接到这两个设备,他们会点击该按钮两次。