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 |
瀏覽器相容性
載入中…