将域与serialport-node一起使用

时间:2014-07-01 01:48:59

标签: node-serialport

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

我希望这会产生预期的效果,但我会得到与上面相同的错误。

有没有人看到我没有得到的任何东西?

1 个答案:

答案 0 :(得分:0)

技巧是在实例化SerialPort对象时提供回调

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