Web 串口 API
注意: 此功能在专用 Web 工作线程中可用。
Web 串口 API 提供了一种方法,使网站可以从串行设备读取数据并写入串行设备。 这些设备可以通过串行端口连接,也可以是模拟串行端口的 USB 或蓝牙设备。
概念和用法
Web 串口 API 是允许网站与连接到用户计算机的外围设备通信的一组 API 中的一个。 它提供连接到需要通过串行 API 通信的设备(而不是 USB,可以通过WebUSB API访问)的能力,或者可以通过WebHID API访问的输入设备。
串行设备的示例包括 3D 打印机和微控制器,例如BBC micro:bit 板。
接口
Serial
实验性-
提供从网页查找和连接到串行端口的属性和方法。
SerialPort
实验性-
提供对主机设备上的串行端口的访问。
对其他接口的扩展
示例
以下示例演示了 Web 串口 API 提供的一些功能。
检查可用端口
以下示例演示如何检查可用端口,并允许用户授予它访问其他端口的权限。
connect
和 disconnect
事件使网站能够在设备连接或断开连接时做出反应。 然后调用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.
});
});
从端口读取数据
以下示例演示如何从端口读取数据。 外部循环处理非致命错误,创建新的读取器,直到遇到致命错误并且SerialPort.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();
}
}
规范
规范 |
---|
Web 串口 API # serial-interface |
浏览器兼容性
BCD 表仅在浏览器中加载