SerialPort: close()-Methode

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.

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

Beschreibung

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

Beim kontinuierlichen Lesen von Daten von einem seriellen Gerät mit einer Schleife bleibt der zugehörige lesbare Stream jedoch immer gesperrt, bis der Leser auf einen Fehler stößt. In diesem Fall erzwingt der Aufruf von reader.cancel(), dass reader.read() sofort mit { value: undefined, done: true } aufgelöst wird, sodass die Schleife reader.releaseLock() aufrufen 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;
});

Das Schließen eines seriellen Ports ist komplizierter, wenn Transformationsströme verwendet werden. Siehe Close a serial port für Anleitungen.

Syntax

js
close()

Parameter

Keine.

Rückgabewert

Ein Promise.

Spezifikationen

Specification
Web Serial API
# dom-serialport-close

Browser-Kompatibilität

BCD tables only load in the browser