串口
注意: 此功能在专用 Web 工作线程中可用。
SerialPort
接口是Web 串口 API的一部分,它提供对主机设备上的串口访问。
构造函数
此接口的实例可以通过调用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
解析后,可以访问 readable
和 writable
属性,以获取ReadableStream
和WritableStream
实例,用于接收数据和发送数据到连接的设备。
从端口读取数据
以下示例演示如何从端口读取数据。外部循环处理非致命错误,创建新的读取器,直到遇到致命错误并且 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 的浏览器中加载。