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 vor der Verwendung auf produktiven Webseiten.
Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.
Die SerialPort
-Schnittstelle der Web Serial API bietet Zugriff auf einen seriellen Port des Host-Geräts.
Konstruktor
Instanzen dieser Schnittstelle können durch Aufrufen von Methoden der Serial
-Schnittstelle erhalten werden, daher besitzt sie keinen eigenen Konstruktor.
Instanzeigenschaften
SerialPort.readable
Schreibgeschützt Experimentell-
Gibt einen
ReadableStream
zurück, um Daten vom Gerät zu empfangen, das mit dem Port verbunden ist. SerialPort.writable
Schreibgeschützt Experimentell-
Gibt einen
WritableStream
zurück, um Daten an das Gerät zu senden, das mit dem Port verbunden ist.
Instanzmethoden
SerialPort.forget()
Experimentell-
Gibt ein
Promise
zurück, das aufgelöst wird, wenn der Port geschlossen und vergessen wird. SerialPort.getInfo()
Experimentell-
Gibt ein Objekt zurück, das Eigenschaften des Ports enthält.
SerialPort.open()
Experimentell-
Gibt ein
Promise
zurück, das aufgelöst wird, wenn der Port geöffnet wird. Standardmäßig wird der Port mit 8 Daten-Bits, 1 Stopp-Bit und ohne Paritätsprüfung geöffnet. SerialPort.setSignals()
Experimentell-
Setzt Steuersignale am Port 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 Zustand der Steuersignale des Ports enthält. SerialPort.close()
Experimentell-
Gibt ein
Promise
zurück, das aufgelöst wird, wenn der Port geschlossen wird.
Ereignisse
connect
Experimentell-
Ein Ereignis, das ausgelöst wird, wenn der Port mit dem Gerät verbunden wurde.
disconnect
Experimentell-
Ein Ereignis, das ausgelöst wird, wenn der Port vom Gerät getrennt wurde.
Beispiele
Öffnen eines Ports
Bevor auf einem seriellen Port kommuniziert wird, muss dieser geöffnet werden. Das Öffnen des Ports ermöglicht es der Seite, die notwendigen Parameter anzugeben, die steuern, wie Daten gesendet und empfangen werden. Entwickler sollten die Dokumentation für das Gerät überprüfen, mit dem sie sich verbinden, um die geeigneten Parameter zu finden.
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
zugegriffen werden, um die Instanzen von ReadableStream
und WritableStream
zu erhalten, um Daten vom verbundenen Gerät zu empfangen und an dieses zu senden.
Daten von einem Port lesen
Das folgende Beispiel zeigt, wie man Daten von einem Port liest. Die äußere Schleife behandelt nicht-fatale Fehler und erstellt einen neuen Leser, bis ein fataler Fehler auftritt und readable
null
wird.
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();
}
}
Daten an einen Port schreiben
Das folgende Beispiel zeigt, wie man eine Zeichenkette an einen Port schreibt. Ein TextEncoder
konvertiert die Zeichenkette vor der Übertragung in ein Uint8Array
.
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