WebUSB API
注意:此功能在 Web Workers 中可用。
WebUSB API 提供了一种将非标准通用串行总线 (USB) 兼容设备服务暴露给 Web 的方法,使 USB 更安全、更易于使用。
概念与用法
USB 是有线外围设备的行业标准。您连接到计算机的 USB 设备通常分为多种设备类,例如键盘、鼠标、视频设备等。这些设备通过操作系统的类驱动程序得到支持。其中许多设备也可以通过 WebHID API 访问。
除了这些标准化设备之外,还有大量设备不属于任何类别。这些设备需要自定义驱动程序,并且由于需要原生代码才能利用它们,因此无法从 Web 访问。安装这些设备之一通常涉及在制造商的网站上搜索驱动程序,如果您想在另一台计算机上使用该设备,则需要再次重复此过程。
WebUSB 提供了一种将这些非标准化 USB 设备服务暴露给 Web 的方法。这意味着硬件制造商将能够提供一种方法,使其设备可以从 Web 访问,而无需提供自己的 API。
连接新的 WebUSB 兼容设备时,浏览器会显示一个通知,其中包含指向制造商网站的链接。到达网站后,浏览器会提示您授予连接设备的权限,然后即可使用该设备。无需下载和安装驱动程序。
接口
USB-
提供用于在网页中查找和连接 USB 设备的属性和方法。
USBConnectionEvent-
当用户代理检测到新的 USB 设备已连接或断开与主机的连接时,传递给
USB的connect或disconnect事件的事件类型。 USBDevice-
提供访问配对 USB 设备的元数据和控制它的方法。
USBInTransferResult-
表示从 USB 设备向 USB 主机传输数据的请求结果。
USBOutTransferResult-
表示从 USB 主机向 USB 设备传输数据的请求结果。
USBIsochronousInTransferPacket-
表示通过同步端点从 USB 设备向 USB 主机传输数据的请求中各个数据包的状态。
USBIsochronousInTransferResult-
表示从 USB 设备向 USB 主机传输数据的请求结果。
USBIsochronousOutTransferPacket-
表示通过同步端点从 USB 主机向 USB 设备传输数据的请求中各个数据包的状态。
USBIsochronousOutTransferResult-
表示从 USB 主机向 USB 设备传输数据的请求结果。
USBConfiguration-
提供有关 USB 设备的特定配置以及它支持的接口的信息。
USBInterface-
提供有关 USB 设备提供的接口的信息。
USBAlternateInterface-
提供有关 USB 设备提供的接口的特定配置的信息。
USBEndPoint-
提供有关 USB 设备提供的端点的信息。
示例
访问已连接的设备
以下示例演示了如何使用 USB.requestDevice() 访问已连接的 Arduino 设备,该设备的 vendorId 为 0x2341。
navigator.usb
.requestDevice({ filters: [{ vendorId: 0x2341 }] })
.then((device) => {
console.log(device.productName); // "Arduino Micro"
console.log(device.manufacturerName); // "Arduino LLC"
})
.catch((error) => {
console.error(error);
});
查找所有已连接的设备
您可以使用 USB.getDevices() 查找所有已连接的设备。在以下示例中,连接了 Arduino 设备后,产品名称和制造商名称将打印到控制台。
navigator.usb.getDevices().then((devices) => {
devices.forEach((device) => {
console.log(device.productName); // "Arduino Micro"
console.log(device.manufacturerName); // "Arduino LLC"
});
});
规范
| 规范 |
|---|
| WebUSB API |
浏览器兼容性
加载中…