2014-07-01 34 views
0

我有一个幸福路径的情况下工作正常的node-serialport库,但我想解决错误处理。使用域与串行端口节点

我正在处理的特定测试案例只是简单地说串行设备没有插入。理想情况下,我可以检测到存在问题,然后在短暂延迟后重试。

的问题是,我不断收到以下错误:

events.js:72 
    throw er; // Unhandled 'error' event 

Error: cannot open /dev/ttyACM0 

我希望这样的事情,因为该设备没有插好,但我要抓住它。 try/catch显然不起作用,因为它是异步的。所以我想“域”,这似乎是推荐的方法:

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); 
     }); 
    }); 
} 

我希望它可以收到预期的效果,但我得到了同样的错误如上。

有没有人看到我只是没有得到什么?

回答

0

诀窍是提供回调实例化的SerialPort对象

var serial = new serialPort("/dev/ttyUSB0", { baudrate : 115200 }, 
    function(error) { 
    if(error) 
    { 
     console.log("INIT ERROR: " + error.message + "\n"); 
    } 
});