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

Allerdings wird beim kontinuierlichen Lesen von Daten von einem seriellen Gerät in einer Schleife der zugehörige lesbare Strom immer gesperrt bleiben, bis der Leser auf einen Fehler stößt. In diesem Fall wird das Aufrufen von reader.cancel() dafür sorgen, 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 Transformströme verwendet werden. Siehe Schließen eines seriellen Ports für eine Anleitung.

Spezifikationen

Spezifikation
Web Serial API
# dom-serialport-close

Browser-Kompatibilität