WebUSB API
WebUSB API提供了一种方法,可以将非标准通用串行总线 (USB) 兼容设备服务公开到 Web,使 USB 更安全、更易于使用。
概念和用法
USB 是有线外设的事实标准。您连接到计算机的 USB 设备通常被分成多个设备类别,例如键盘、鼠标、视频设备等等。这些设备使用操作系统的类驱动程序进行支持。其中许多设备也可以通过WebHID API访问 Web。
除了这些标准化的设备之外,还有大量设备不属于任何类别。这些设备需要自定义驱动程序,并且由于利用它们所需的本机代码而无法从 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 |