我在 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/