2014-07-01 35 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"); 
    } 
});