串口

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

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

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

SerialPort 接口是Web 串口 API的一部分,它提供对主机设备上的串口访问。

EventTarget SerialPort

构造函数

此接口的实例可以通过调用Serial 接口的方法获得,因此它没有自己的构造函数。

实例属性

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 串口 API
# dom-serialport

浏览器兼容性

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