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 vor der Verwendung auf produktiven Webseiten.

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

Die SerialPort.close()-Methode des SerialPort-Interfaces 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 Mitglieder SerialPort.readable und SerialPort.writable entsperrt sind, was bedeutet, dass die releaseLock()-Methoden für ihren jeweiligen Leser und Schreiber aufgerufen wurden.

Wenn jedoch kontinuierlich Daten von einem seriellen Gerät in einer Schleife gelesen werden, bleibt der zugehörige lesbare Stream immer gesperrt, bis der reader auf einen Fehler stößt. In diesem Fall wird durch Aufruf von reader.cancel() erzwungen, dass reader.read() sofort mit { value: undefined, done: true } aufgelöst wird, wodurch 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 Transform-Streams verwendet werden. Lesen Sie Einen seriellen Port schließen für eine Anleitung.

Spezifikationen

Specification
Web Serial API
# dom-serialport-close

Browser-Kompatibilität