serial-port - 在 Chrome 应用程序中检测串行端口断开连接

标签 serial-port google-chrome-app

我在 Web 应用程序中使用 Chrome 的串行端口 API ( http://developer.chrome.com/apps/serial.html )。

我遇到的问题是现在几乎所有串行端口都是通过 USB 设备实现的。如果用户断开(或只是重置)USB 设备,我没有任何办法知道。不仅如此,因为应用程序在 Chrome 中没有断开连接(因为它不知道),如果重新插入 USB 设备,就会发生不好的事情(在 Linux 上它只是获得了不同的名称,但在 Windows 中却不是)完全可用)。

我能做到的最好的是:

  var checkConnection = function() {
    chrome.serial.getControlSignals(connectionInfo.connectionId, function (sigs) { 
      var connected = "cts" in sigs;
      if (!connected) console.log("Disconnected");
   });
  } // called every second or so

还有更好的办法吗?回调将是理想的!

最佳答案

看起来在所有平台上应该是安全的,假设获得 0 字节的 read 回调意味着 EOF,这反过来又很好地表明设备已断开连接。

chrome.serial.read(connectionId, function(readInfo) {
    if (readInfo.bytesRead === 0) {
        /// Safely assume the device is gone. Clean up.
        chrome.serial.close(connectionId);
        /// ...
    }
});

串行 API 将在接下来的几周内进行改进(至少在 Canary 中),以增加稳定性改进、基于事件的读取 API 以及更清晰地检测超时和错误条件(例如断开连接的设备)的能力。您可以通过 http://crbug.com/307184 跟踪进度。 .

关于serial-port - 在 Chrome 应用程序中检测串行端口断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360402/

相关文章:

javascript - Chrome 打包应用程序 - 从 background.js 传递到另一个脚本页面的消息

javascript - Chrome 28 应用程序,getUserMedia PERMISSION_DENIED

c# - 指定的参数超出了有效值的范围。参数名称 : size & Serial Port Communication

visual-c++ - 使用定时器提高读/写串行端口的速度

php - 在 PHP 中读取 COM(串行调制解调器)

html - 修复了移动 chrome 浏览器上特定部分的背景图像不起作用

google-chrome - chrome 打包应用程序上的打印支持

javascript - 什么时候是调用 webview.clearData 的最佳时间

linux - 具有相同序列号的 USB 到串行设备之间的持久性

python - 通过串行传输标准输出不起作用