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

これで目的の効果が得られると期待していますが、上記と同じエラーが発生します。

私が得ていないものを見ている人はいますか?

4

1 に答える 1

0

秘訣は、SerialPort オブジェクトをインスタンス化するときにコールバックを提供することです

var serial = new serialPort("/dev/ttyUSB0", { baudrate : 115200 },
  function(error) {
     if(error)
     {
      console.log("INIT ERROR: " + error.message + "\n");
     }
});
于 2014-08-01T04:16:23.890 に答える