Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

SerialPort: close() Methode

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

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

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

Die close() Methode der SerialPort-Schnittstelle gibt ein Promise zurück, das aufgelöst wird, wenn der Port geschlossen wird.

Syntax

js
close()

Parameter

Keine.

Rückgabewert

Ein Promise.

Beschreibung

close() schließt den seriellen Port, wenn die zuvor gesperrten SerialPort.readable- und SerialPort.writable-Mitglieder entsperrt sind, das heißt, die releaseLock()-Methoden für ihren jeweiligen Leser und Schreiber wurden aufgerufen.

Wenn jedoch kontinuierlich Daten von einem seriellen Gerät in einer Schleife gelesen werden, bleibt der zugehörige lesbare Stream immer gesperrt, bis der Leser einen Fehler erkennt. In diesem Fall bewirkt ein Aufruf von reader.cancel(), dass reader.read() sofort mit { value: undefined, done: true } aufgelöst wird, was der Schleife erlaubt, reader.releaseLock() aufzurufen.

Das Schließen eines seriellen Ports ist komplizierter, wenn Transform-Streams verwendet werden. Siehe Schließen eines seriellen Ports für Anleitungen.

Beispiele

Schließen eines Ports nach dem Lesen, sobald der Stream beendet ist

Das folgende Beispiel zeigt, wie ein Port geschlossen wird, nachdem kontinuierlich Daten davon gelesen wurden, sobald der Stream beendet ist. Ein keepReading-Flag steuert, wann mit dem Lesen aufgehört werden soll. Ein Klick auf einen Button setzt keepReading auf false und annulliert den Leser, was verursacht, dass reader.read() sofort aufgelöst wird, sodass die Schleife die Sperre freigeben kann und close() aufgerufen werden kann.

js
// Without transform streams.

let keepReading = true;
let reader;

async function readUntilClosed() {
  while (port.readable && keepReading) {
    reader = port.readable.getReader();
    try {
      while (true) {
        const { value, done } = await reader.read();
        if (done) {
          // reader.cancel() has been called.
          break;
        }
        // value is a Uint8Array.
        console.log(value);
      }
    } catch (error) {
      // Handle error...
    } finally {
      // Allow the serial port to be closed later.
      reader.releaseLock();
    }
  }

  await port.close();
}

const closedPromise = readUntilClosed();

document.querySelector("button").addEventListener("click", async () => {
  // User clicked a button to close the serial port.
  keepReading = false;
  // Force reader.read() to resolve immediately and subsequently
  // call reader.releaseLock() in the loop example above.
  reader.cancel();
  await closedPromise;
});

Spezifikationen

Spezifikation
Web Serial API
# dom-serialport-close

Browser-Kompatibilität