我在网络应用中使用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 :(得分: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跟踪该进度。