2017-01-08 20 views
1

私はノードと非同期プログラミング(私はCのバックグラウンドから来ています)にはかなり慣れていて、デバイスを持つポートに自動接続するのに問題があります。 Node.jsのシリアルポートを使用している特定のvendorID私は、すべてが別々に働いています。私はポートに接続することができ、特定のvendorIDを持つポートを見つけることができますが、私が見つけたポートには接続できません。ここで私はこれまで持っているコードです:これは私が原因MYportポートが作成され、に接続された時点で定義されていないという事実にエラーを取得する実行されNode.jsのシリアルポートを持つ特定のデバイスへの自動接続

var SerialPort = require('serialport'); 

var MYport; 

SerialPort.list(function (err, ports) { 
    ports.forEach(function(port) { 
    if(port.vendorId == 9999){ 
     console.log('Found It') 
     MYport = port.comName.toString(); 
     console.log(MYport); 
    } 
    }); 
}); 

var port = new SerialPort(MYport, { 
    parser: SerialPort.parsers.readline('\n') 
}); 

コールバック関数を使用する可能性が高いことは知っていますが、わかりません。

答えて

1

SerialPort.listは非同期関数である助けを

おかげで、

ので、あなたは、非同期機能のEMITコールバックした後SERIALPORTへの接続を置く必要があります。このような

var SerialPort = require('serialport'); 

var MYport; 

SerialPort.list(function (err, ports) { 
    ports.forEach(function(port) { 
    if(port.vendorId == 9999){ 
     console.log('Found It') 
     MYport = port.comName.toString(); 
     console.log(MYport); 
    } 
    }); 

    var port = new SerialPort(MYport, { 
    parser: SerialPort.parsers.readline('\n') 
    }); 

}); 
+0

[OK]を、私は参照してください。私はまた、データを収集するport.on関数を追加し、リスト関数内にそれを含めて、すべてが今働いています。それはちょうど私にとっては直感的ではありません。助けてくれてありがとう! – Tyler

関連する問題