SerialPort: connected 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

注意:此功能在 专用 Web Workers 中可用。

connected 属性是 SerialPort 接口的一个只读属性,它返回一个布尔值,指示端口是否 逻辑连接 到设备。

描述

当无线设备超出主机的范围时,Web 应用打开的任何无线串行端口都会自动关闭,即使它仍然保持逻辑连接。在这种情况下,Web 应用可以尝试使用 SerialPort.open() 重新打开端口。

但是,如果无线设备被有意断开(例如,用户通过操作系统控制面板选择断开连接),Web 应用应避免重新打开端口,以防止重新连接到无线设备。

以下代码片段显示了如何使用 connected 属性来区分这两种情况:

js
const ports = await navigator.serial.getPorts();
for (const port of ports) {
  if (port.connected) {
    // The port is logically connected
    // automatically try to reopen the port
    await port.open({ baudRate: 9600 });
  } else {
    // The port is not logically connected; at this point you could
    // prompt the user to make sure the Bluetooth device is available, and
    // Show a "connect" button to allow them to try opening the port if desired
  }
}

一个布尔值 — 如果端口逻辑连接,则为 true,否则为 false

示例

端口连接时进行日志记录

当用户按下 <button> 时,以下代码片段会调用 Serial.requestPort(),提示他们选择一个串行端口进行连接,然后将连接状态的消息记录到控制台。

js
requestPortButton.addEventListener("click", async () => {
  const port = await navigator.serial.requestPort();
  console.log(`Requested serial port. Connected: ${port.connected}`);
});

连接和断开连接时记录连接状态

您可以使用以下代码片段在 connectdisconnect 事件触发时记录连接状态。

js
navigator.serial.addEventListener("connect", ({ target: port }) => {
  console.log(`Connect event fired. Connected: ${port.connected}`);
});

navigator.serial.addEventListener("disconnect", ({ target: port }) => {
  console.log(`Disconnect event fired. Connected: ${port.connected}`);
});

规范

规范
Web Serial API
# dom-serialport-connected

浏览器兼容性