SerialPort

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, bevor Sie diese produktiv verwenden.

Hinweis: Dieses Feature ist verfügbar in Dedicated Web Workers.

Das SerialPort-Interface der Web Serial API ermöglicht Zugriff auf einen seriellen Anschluss des Host-Geräts.

EventTarget SerialPort

Konstruktor

Instanzen dieses Interfaces können durch Aufrufen von Methoden des Serial Interfaces erhalten werden, daher besitzt es keinen eigenen Konstruktor.

Instanzeigenschaften

SerialPort.connected Nur lesbar Experimentell

Gibt einen booleschen Wert zurück, der anzeigt, ob der Anschluss logisch mit dem Gerät verbunden ist.

SerialPort.readable Nur lesbar Experimentell

Gibt einen ReadableStream zum Empfangen von Daten vom Gerät zurück, das mit dem Anschluss verbunden ist.

SerialPort.writable Nur lesbar Experimentell

Gibt einen WritableStream zum Senden von Daten an das Gerät zurück, das mit dem Anschluss verbunden ist.

Instanzmethoden

SerialPort.forget() Experimentell

Gibt ein Promise zurück, das aufgelöst wird, wenn der Zugriff auf den seriellen Anschluss widerrufen wird. Ein Aufruf dieser Methode "vergisst" das Gerät, setzt alle zuvor festgelegten Berechtigungen zurück, sodass die aufrufende Site nicht mehr mit dem Anschluss kommunizieren kann.

SerialPort.getInfo() Experimentell

Gibt ein Objekt zurück, das identifizierende Informationen für das über den Anschluss verfügbare Gerät enthält.

SerialPort.open() Experimentell

Gibt ein Promise zurück, das aufgelöst wird, wenn der Anschluss geöffnet wird. Standardmäßig wird der Anschluss mit 8 Datenbits, 1 Stoppbit und ohne Paritätsprüfung geöffnet.

SerialPort.setSignals() Experimentell

Setzt Steuersignale am Anschluss und gibt ein Promise zurück, das aufgelöst wird, wenn diese gesetzt sind.

SerialPort.getSignals() Experimentell

Gibt ein Promise zurück, das mit einem Objekt aufgelöst wird, das den aktuellen Status der Steuersignale des Anschlusses enthält.

SerialPort.close() Experimentell

Gibt ein Promise zurück, das aufgelöst wird, wenn der Anschluss geschlossen wird.

Ereignisse

connect Experimentell

Wird ausgelöst, wenn der Anschluss mit dem Gerät verbunden wird.

disconnect Experimentell

Wird ausgelöst, wenn der Anschluss vom Gerät getrennt wird.

Beispiele

Öffnen eines Anschlusses

Bevor über einen seriellen Anschluss kommuniziert werden kann, muss dieser geöffnet werden. Das Öffnen des Anschlusses ermöglicht es der Site, die erforderlichen Parameter anzugeben, die steuern, wie Daten übertragen und empfangen werden. Entwickler sollten die Dokumentation für das Gerät, mit dem sie sich verbinden, konsultieren, um die geeigneten Parameter zu finden.

js
await port.open({ baudRate: 9600 /* pick your baud rate */ });

Sobald das von open() zurückgegebene Promise aufgelöst wird, können die Attribute readable und writable abgerufen werden, um die Instanzen von ReadableStream und WritableStream zum Empfangen von Daten vom und Senden von Daten an das angeschlossene Gerät zu erhalten.

Lesen von Daten aus einem Anschluss

Das folgende Beispiel zeigt, wie Daten von einem Anschluss gelesen werden können. Die äußere Schleife behandelt nicht-kritische Fehler und erstellt einen neuen Leser, bis ein kritischer Fehler auftritt und 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();
  }
}

Schreiben von Daten in einen Anschluss

Das folgende Beispiel zeigt, wie ein String in einen Anschluss geschrieben wird. Ein TextEncoder konvertiert den String vor der Übertragung in ein Uint8Array.

js
const encoder = new TextEncoder();
const writer = port.writable.getWriter();
await writer.write(encoder.encode("PING"));
writer.releaseLock();

Spezifikationen

Specification
Web Serial API
# dom-serialport

Browser-Kompatibilität

BCD tables only load in the browser