WebUSB API
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die WebUSB API bietet eine Möglichkeit, nicht-standardisierte Universal Serial Bus (USB)-kompatible Geräte-Dienste im Web verfügbar zu machen, um USB sicherer und benutzerfreundlicher zu gestalten.
Konzepte und Nutzung
USB ist der De-facto-Standard für kabelgebundene Peripheriegeräte. Die USB-Geräte, die Sie an Ihren Computer anschließen, werden typischerweise in verschiedene Geräteklassen eingeteilt—wie Tastaturen, Mäuse, Videogeräte usw. Diese werden mithilfe des Klassentreibers des Betriebssystems unterstützt. Viele dieser Geräte sind auch über die WebHID API im Web zugänglich.
Zusätzlich zu diesen standardisierten Geräten gibt es eine große Anzahl von Geräten, die in keine Klasse passen. Diese benötigen benutzerdefinierte Treiber und sind aufgrund des benötigten nativen Codes nicht über das Web zugänglich. Die Installation eines dieser Geräte erfordert oft die Suche nach Treibern auf der Website eines Herstellers und, wenn Sie das Gerät auf einem anderen Computer verwenden möchten, das erneute Durchlaufen dieses Prozesses.
WebUSB ermöglicht es, dass diese nicht-standardisierten USB-Geräte-Dienste im Web verfügbar gemacht werden. Dies bedeutet, dass Hardwarehersteller eine Möglichkeit anbieten können, mit der ihr Gerät über das Web zugänglich ist, ohne ihre eigene API bereitstellen zu müssen.
Beim Anschließen eines neuen WebUSB-kompatiblen Geräts zeigt der Browser eine Benachrichtigung mit einem Link zur Website des Herstellers an. Beim Besuch der Seite fordert der Browser die Erlaubnis an, eine Verbindung zu dem Gerät herzustellen, und danach ist das Gerät einsatzbereit. Es müssen keine Treiber heruntergeladen und installiert werden.
Schnittstellen
USB
-
Bietet Attribute und Methoden zum Suchen und Verbinden von USB-Geräten von einer Webseite aus.
USBConnectionEvent
-
Der Ereignistyp, der an
USB
-connect
oderdisconnect
-Ereignisse übergeben wird, wenn der User-Agent erkennt, dass ein neues USB-Gerät mit dem Host verbunden oder vom Host getrennt wurde. USBDevice
-
Bietet Zugriff auf Metadaten zu einem verbundenen USB-Gerät und Methoden zu dessen Steuerung.
USBInTransferResult
-
Repräsentiert das Ergebnis einer Datenübertragung vom USB-Gerät zum USB-Host.
USBOutTransferResult
-
Repräsentiert das Ergebnis einer Datenübertragung vom USB-Host zum USB-Gerät.
USBIsochronousInTransferPacket
-
Repräsentiert den Status eines einzelnen Pakets aus einer Anfrage zur Datenübertragung vom USB-Gerät zum USB-Host über einen isochronen Endpunkt.
USBIsochronousInTransferResult
-
Repräsentiert das Ergebnis einer Anfrage zur Datenübertragung vom USB-Gerät zum USB-Host.
USBIsochronousOutTransferPacket
-
Repräsentiert den Status eines einzelnen Pakets aus einer Anfrage zur Datenübertragung vom USB-Host zum USB-Gerät über einen isochronen Endpunkt.
USBIsochronousOutTransferResult
-
Repräsentiert das Ergebnis einer Anfrage zur Datenübertragung vom USB-Host zum USB-Gerät.
USBConfiguration
-
Bietet Informationen über eine bestimmte Konfiguration eines USB-Geräts und die von ihm unterstützten Schnittstellen.
USBInterface
-
Bietet Informationen über eine Schnittstelle, die vom USB-Gerät bereitgestellt wird.
USBAlternateInterface
-
Bietet Informationen über eine bestimmte Konfiguration einer Schnittstelle, die vom USB-Gerät bereitgestellt wird.
USBEndPoint
-
Bietet Informationen über einen Endpunkt, der vom USB-Gerät bereitgestellt wird.
Beispiele
Zugriff auf ein verbundenes Gerät
Das folgende Beispiel demonstriert, wie ein verbundenes Arduino-Gerät mit USB.requestDevice()
, das eine vendorId
von 0x2341
hat, zugegriffen wird.
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);
});
Finden aller verbundenen Geräte
Mit USB.getDevices()
können Sie alle verbundenen Geräte finden. Im folgenden Beispiel, mit dem verbundenen Arduino-Gerät, werden Produkt- und Herstellername in der Konsole ausgegeben.
navigator.usb.getDevices().then((devices) => {
devices.forEach((device) => {
console.log(device.productName); // "Arduino Micro"
console.log(device.manufacturerName); // "Arduino LLC"
});
});
Spezifikationen
Specification |
---|
WebUSB API |