检测Chrome应用中的串行端口断开连接

时间:2013-10-14 12:35:41

标签: serial-port google-chrome-app

我在网络应用中使用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

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

1 个答案:

答案 0 :(得分:3)

在所有平台上看起来应该是安全的,假设获得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跟踪该进度。