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

浏览器兼容性