Web Serial API

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.

Die Web Serial API bietet eine Möglichkeit für Websites, von seriellen Geräten zu lesen und an diese zu schreiben. Diese Geräte können über einen seriellen Anschluss verbunden sein oder USB- oder Bluetooth-Geräte sein, die einen seriellen Anschluss emulieren.

Konzepte und Verwendung

Die Web Serial API ist eine von mehreren APIs, die es Websites ermöglichen, mit Peripheriegeräten zu kommunizieren, die mit dem Computer eines Benutzers verbunden sind. Sie bietet die Möglichkeit, Geräte anzuschließen, die vom Betriebssystem erfordern, über die serielle API zu kommunizieren, im Gegensatz zu USB, das über die WebUSB API zugänglich ist, oder Eingabegeräten, die über die WebHID API zugänglich sind.

Beispiele für serielle Geräte sind 3D-Drucker und Mikrocontroller wie das BBC micro:bit Board.

Schnittstellen

Serial Experimentell

Bietet Attribute und Methoden zum Auffinden und Verbinden mit seriellen Anschlüssen von einer Webseite aus.

SerialPort Experimentell

Ermöglicht den Zugriff auf einen seriellen Anschluss auf dem Hostgerät.

Erweiterungen zu anderen Schnittstellen

Gibt ein Serial Objekt zurück, das den Einstiegspunkt in die Web Serial API darstellt, um die Kontrolle über serielle Anschlüsse zu ermöglichen.

WorkerNavigator.serial Schreibgeschützt Experimentell

Gibt ein Serial Objekt zurück, das den Einstiegspunkt in die Web Serial API darstellt, um die Kontrolle über serielle Anschlüsse zu ermöglichen.

Beispiele

Die folgenden Beispiele zeigen einige der Funktionalitäten, die die Web Serial API bietet.

Verfügbare Anschlüsse überprüfen

Das folgende Beispiel zeigt, wie verfügbare Anschlüsse überprüft werden können und der Benutzer ermächtigt wird, dem Zugriff auf zusätzliche Anschlüsse zuzustimmen.

Die connect- und disconnect-Ereignisse ermöglichen es Websites, zu reagieren, wenn ein Gerät mit dem System verbunden oder davon getrennt wird. Die Methode getPorts() wird dann aufgerufen, um verbundene Anschlüsse zu sehen, auf die die Website bereits Zugriff hat.

Wenn die Website auf keine verbundenen Anschlüsse zugreifen kann, muss sie warten, bis sie eine Benutzeraktivierung erhält, um fortzufahren. In diesem Beispiel verwenden wir einen click Ereignis-Handler auf einem Button für diese Aufgabe. Ein Filter wird an requestPort() mit einer USB-Vendor-ID übergeben, um die dem Benutzer angezeigte Menge an Geräten auf nur die USB-Geräte eines bestimmten Herstellers zu beschränken.

js
navigator.serial.addEventListener("connect", (e) => {
  // Connect to `e.target` or add it to a list of available ports.
});

navigator.serial.addEventListener("disconnect", (e) => {
  // Remove `e.target` from the list of available ports.
});

navigator.serial.getPorts().then((ports) => {
  // Initialize the list of available ports with `ports` on page load.
});

button.addEventListener("click", () => {
  const usbVendorId = 0xabcd;
  navigator.serial
    .requestPort({ filters: [{ usbVendorId }] })
    .then((port) => {
      // Connect to `port` or add it to the list of available ports.
    })
    .catch((e) => {
      // The user didn't select a port.
    });
});

Daten von einem Anschluss lesen

Das folgende Beispiel zeigt, wie Daten von einem Anschluss gelesen werden. Die äußere Schleife behandelt nicht fatale Fehler, indem ein neuer Leser erstellt wird, bis ein fataler Fehler auftritt und SerialPort.readable null wird.

js
while (port.readable) {
  const reader = port.readable.getReader();
  try {
    while (true) {
      const { value, done } = await reader.read();
      if (done) {
        // |reader| has been canceled.
        break;
      }
      // Do something with |value|...
    }
  } catch (error) {
    // Handle |error|...
  } finally {
    reader.releaseLock();
  }
}

Spezifikationen

Specification
Web Serial API
# serial-interface

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch