LoginSignup
6
7

More than 5 years have passed since last update.

Node.jsでRS232Cを受信、Arduinoをモニター

Posted at

Arduinoのプログラムのデバックする時に、Serial.print を使うことは良くあることだと思います。Windows のフリーのアプリケーションを使ってモニターしても良かったのですが、自分なりにあれこれやりたかったのでnode で受信するようにしました。

私の環境

serialportのインストール

npm install serialport

Arduino側(送信側のプログラム)

テストプログラムです。n のインクリメントのリミットは無視しています。

monitortest.ino
void setup() {
  Serial.begin(9600);
}

int n=0;

void loop() {
  Serial.print("ABC");
  Serial.println(n,DEC);
  delay(500);
  n++;
}

node 側(受信側のプログラム)

COM ポートはコンパネ、デバイスマネジャで確認、今回はCOM6に接続されています。

rs232cmonitor.js
serialport = require('serialport');
var portName = 'COM6';
var sp = new serialport(portName,{
    baudRate: 9600,
    dataBits: 8,
    parity: 'none',
    stopBits: 1,
    flowControl: false,
});

sp.on('data', function (data) {
  console.log('Data:', data);
});

受信例

送信側と受信側のモニターのタイミングで、一度にデータが複数受信される場合と、ばらばらに受信される場合があるようです。

receive1.log
Data: <Buffer 41>
Data: <Buffer 42>
Data: <Buffer 43>
Data: <Buffer 31>
Data: <Buffer 30>
Data: <Buffer 36>
Data: <Buffer 31>
Data: <Buffer 0d>
Data: <Buffer 0a>
receive2.log
Data: <Buffer 41>
Data: <Buffer 42 43 31 30 35 39 0d 0a>

Parsers を使うと、ASCII文字に変換できます。

rs232cmonitor_add.js
const Readline = serialport.parsers.Readline;
const parser = new Readline();
sp.pipe(parser);
parser.on('data', console.log);

以下のように表示されます。

receive3.log
ABC1063
ABC1064
ABC1065
'''



6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7