我让node-serialport库在愉快路径的情况下工作得很好,但我想解决错误处理问题。
我目前正在处理的特定测试用例是串行设备没有插入电源。理想情况下,我应该能够检测到存在问题,然后在短暂的延迟后重试。
问题是我一直收到以下错误:
events.js:72
throw er; // Unhandled 'error' event
Error: cannot open /dev/ttyACM0我预计会出现这样的情况,因为设备没有插入,但我需要捕获它。try/catch显然不起作用,因为它是异步的。所以我尝试使用"domain",这似乎是推荐的方式:
function reconnect() {
var d = domain.create();
d.on("error", function(err) {
console.error(err);
setTimeout(reconnect, RETRY_DELAY_MS);
});
d.run(function() {
var gps = new SerialPort("/dev/ttyACM0");
gps.on("open", function() {
console.log("Success!");
});
gps.on("error", function(err) {
console.error(err);
setTimeout(reconnect, RETRY_DELAY_MS);
});
});
}我希望这会有预期的效果,但我得到了与上面相同的错误。
有没有人看到我没看懂的东西?
发布于 2014-08-01 12:16:24
诀窍是在实例化SerialPort对象时提供回调
var serial = new serialPort("/dev/ttyUSB0", { baudrate : 115200 },
function(error) {
if(error)
{
console.log("INIT ERROR: " + error.message + "\n");
}
});https://stackoverflow.com/questions/24501389
复制相似问题