串口

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中可用。

实验性:这是一个实验性技术
在生产环境中使用此功能之前,请仔细查看浏览器兼容性表

注意:此功能在专用 Web 工作线程中可用。

Serial 接口是 Web 串口 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 串口 API
# serial-interface

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。