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.
Das SerialPort
-Interface der Web Serial API ermöglicht Zugriff auf einen seriellen Anschluss des Host-Geräts.
Konstruktor
Instanzen dieses Interfaces können durch Aufrufen von Methoden des Serial
Interfaces erhalten werden, daher besitzt es keinen eigenen Konstruktor.
Instanzeigenschaften
SerialPort.connected
Schreibgeschützt Experimentell-
Gibt einen booleschen Wert zurück, der anzeigt, ob der Anschluss logisch mit dem Gerät verbunden ist.
SerialPort.readable
Schreibgeschützt Experimentell-
Gibt einen
ReadableStream
zum Empfangen von Daten vom Gerät zurück, das mit dem Anschluss verbunden ist. SerialPort.writable
Schreibgeschützt 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.
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.
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
.
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