Serial

可用性有限

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

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

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

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

Serial 介面是 Web Serial API 的一部分,它提供了用於從網頁查詢和連線序列埠的屬性和方法。

EventTarget Serial

例項方法

Serial.requestPort() 實驗性

返回一個 Promise,該 Promise 解析為一個 SerialPort 例項,代表使用者選擇的裝置。此方法必須透過 瞬時啟用 呼叫。

Serial.getPorts() 實驗性

返回一個 Promise,該 Promise 解析為一個 SerialPort 物件陣列,代表已連線到主機且來源具有訪問許可權的序列埠。

事件

以下事件可以透過從 SerialPort 冒泡的方式供 Serial 使用:

SerialPort connect 事件

當埠已連線到裝置時觸發的事件。

SerialPort disconnect 事件

當埠已與裝置斷開連線時觸發的事件。

示例

以下示例展示了網站如何檢查可用埠並允許使用者授予其訪問其他埠的許可權。

在載入時,會為 connectdisconnect 事件新增監聽器,以便網站能夠響應裝置連線或斷開系統連線的情況。然後呼叫 getPorts() 方法來檢視網站已具有訪問許可權的已連線埠。

如果網站沒有訪問任何已連線埠的許可權,它必須等到使用者啟用才能繼續。在此示例中,我們為此任務使用按鈕上的 click 事件處理程式。將過濾器傳遞給 requestPort(),其中包含一個 USB 供應商 ID,以僅將顯示給使用者的裝置集限制為特定製造商生產的 USB 裝置。

js
navigator.serial.addEventListener("connect", (e) => {
  // Connect to `e.target` or add it to a list of available ports.
});

navigator.serial.addEventListener("disconnect", (e) => {
  // Remove `e.target` from the list of available ports.
});

navigator.serial.getPorts().then((ports) => {
  // Initialize the list of available ports with `ports` on page load.
});

button.addEventListener("click", () => {
  const usbVendorId = 0xabcd;
  navigator.serial
    .requestPort({ filters: [{ usbVendorId }] })
    .then((port) => {
      // Connect to `port` or add it to the list of available ports.
    })
    .catch((e) => {
      // The user didn't select a port.
    });
});

規範

規範
Web Serial API
# serial-interface

瀏覽器相容性