SerialPort

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

注意:此功能在 專用 Web Workers 中可用。

Web Serial API 的 SerialPort 介面提供了對主機裝置上序列埠的訪問。

EventTarget SerialPort

建構函式

此介面的例項可透過呼叫 Serial 介面的方法來獲取,因此它沒有自己的建構函式。

例項屬性

SerialPort.connected 只讀 實驗性

返回一個布林值,指示埠是否已邏輯連線到裝置。

SerialPort.readable 只讀 實驗性

返回一個 ReadableStream,用於從連線到埠的裝置接收資料。

SerialPort.writable 只讀 實驗性

返回一個 WritableStream,用於向連線到埠的裝置傳送資料。

例項方法

SerialPort.forget() 實驗性

返回一個 Promise,當對序列埠的訪問被撤銷時解析。呼叫此方法會“忘記”裝置,重置任何先前設定的許可權,以便呼叫站點無法再與埠通訊。

SerialPort.getInfo() 實驗性

返回一個包含埠可用的裝置標識資訊的物件。

SerialPort.open() 實驗性

返回一個 Promise,當埠開啟時解析。預設情況下,埠以 8 個數據位、1 個停止位和無奇偶校驗進行開啟。

SerialPort.setSignals() 實驗性

設定埠上的控制訊號,並返回一個 Promise,當訊號設定完成後解析。

SerialPort.getSignals() 實驗性

返回一個 Promise,當解析時,它將包含埠控制訊號當前狀態的物件。

SerialPort.close() 實驗性

返回一個 Promise,當埠關閉時解析。

事件

connect 實驗性

當埠連線到裝置時觸發。

disconnect 實驗性

當埠與裝置斷開連線時觸發。

示例

開啟埠

在與序列埠通訊之前,必須將其開啟。開啟埠允許站點指定控制資料傳輸和接收所需引數。開發者應查閱他們正在連線的裝置的文件以獲取適當的引數。

js
await port.open({ baudRate: 9600 /* pick your baud rate */ });

一旦 open() 返回的 Promise 解析,就可以訪問 readablewritable 屬性,以獲取用於從連線的裝置接收資料和向連線的裝置傳送資料的 ReadableStreamWritableStream 例項。

從埠讀取資料

以下示例顯示瞭如何從埠讀取資料。外部迴圈處理非致命錯誤,建立新的讀取器,直到遇到致命錯誤並且 readable 變為 null

js
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();
  }
}

向埠寫入資料

以下示例顯示瞭如何將字串寫入埠。在傳輸之前,TextEncoder 將字串轉換為 Uint8Array

js
const encoder = new TextEncoder();
const writer = port.writable.getWriter();
await writer.write(encoder.encode("PING"));
writer.releaseLock();

規範

規範
Web Serial API
# dom-serialport

瀏覽器相容性