2016-09-28 8 views
0

私は問題がありますが、WindowsではNodeJSとnpmモジュール "Serialport"を使ってスケールからウェイトを取得しようとしています。nodeJSでウェイトの結果を得るには

私が問題にしているのは、スケールに送信したコマンドに関係なく、データを返さないということです。

私はすでに、私はnwJSに作っていたプロジェクトのモジュールSERIALPORTをコンパイルし、私は次のコードを持っている:

var SerialPort = require('serialport'); 

      var port = new SerialPort('COM4', { 
       parser: SerialPort.parsers.readline('W\n'), 
       baudRate: 9600, 
       dataBits: 7, 
       stopBits: 1, 
       parity: 'even', 
       bufferSize: 1024 
      }); 

function write() { 
      port.open(function(err) { 
       console.log("Writing serial data: "); 
       port.on('data', function(data) { 
        console.log('Data: ' + data); 
       }); 
       port.write(resultString, function(err, res) { 
        if (err) { 
         console.log(err); 
        } 
        port.close(); 
       }); 
      }); 
     } 
    port.on('error', function(err) { 
       console.log('Error: ', err.message); 
      }) 
      setTimeout(write, 1000); 

注: パーサーWの\ nはその文字列ですスケールは体重を送信する必要があります。私はcooltermという別のアプリケーションでそれをテストしました

ありがとうございました。

+1

port.on( 'data'、function(data){ console.log( 'Data:' + data); }); – ippi

+0

ありがとうございます。申し訳ありませんが、ここでコードを書いたとき、私は "データ"を忘れていましたが、コードでは機能しません。 – Ronald

+0

それがどのように動作するかを理解するには、スケールについてはserialPortのマニュアルを参照する必要があります。 – jfriend00

答えて

1

おそらく問題はパーサーの設定です。代わりに、ReadLineメソッドパーサの:それは「データ」イベントが発生かなっているかどうかを確認するためにバイト長パーサを試すトラブルシューティングするために、動作しない場合

var weight_parser = port.pipe(new Delimiter({delimiter: new Buffer('W\n')})); 
... 
parser: weight_parser, 
... 
parser.on('data', console.log); 

parser: SerialPort.parsers.readline('W\n'), 

デリミタパーサーを試してみてください。

+0

回答ありがとうございました – Ronald

+0

DelimeterまたはByteLengthパーサにはどのような機能がありましたか? –

+0

この問題はParserにあって、私は 'W \ n'を使っていましたが、それを行う正しい方法があります。 var weight_parser = port.pipe(新しいデリミタ({区切り文字:新しいバッファ( '\ n')})); – Ronald

関連する問題