表題の件を試した際のメモです。
GR-ROSE と Node.js のプログラムとの間で、一方向のシリアル通信を軽く試してみます。
GR-ROSE側
以下の公式のプログラムを動かしてみます。
●GR-ROSE チュートリアル:IDE for GRでスケッチ | Renesas
https://www.renesas.com/jp/ja/products/gadget-renesas/boards/gr-rose/project-arduino-sketch-ide-gr
開発には IDE for GR を使う形で、手順は上記のページ内のとおりです。
書き込みをする際、GR-ROSE のリセットボタンを押して USBドライブとして認識させてから行う、というのがあったりします。
プログラムは以下で、サンプルほぼそのままです。
遅延の設定だけ、100ミリ秒から 1秒に変えています。
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(PIN_LED1, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(PIN_LED1, LOW);
delay(1000);
digitalWrite(PIN_LED1, HIGH);
delay(1000);
Serial.println("hello");
}
こちらの動作確認を、IDE for GR のシリアルモニタで行っておきましょう。
以下のように、一定時間ごとに「hello」という文字列が出てくれば OK です。
Node.js側
Node.js側は、以下を使ったりするとシリアル通信を扱えるようになります。
●serialport - npm
https://www.npmjs.com/package/serialport
かなり前ですが、以下の記事に出てくるお試しの際に、利用したことがありました。
●#toio を Alexa や micro:bit から操作する 〜概要編〜(JavaScriptライブラリを使ってみた) - Qiita
https://qiita.com/youtoy/items/0ee56f5395e3f4c72c51
今回は、読み取りだけできれば良いので、公式ドキュメントの Readline Parser のサンプルを利用します。
以下で「【自分の環境に合わせて変更】」と書いている部分は、ご自身の環境の設定に合わせて変更してください。
const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const port = new SerialPort('/dev/【自分の環境に合わせて変更】')
const parser = port.pipe(new Readline({ delimiter: '\r\n' }))
parser.on('data', console.log)
GR-ROSE は PC につないだまま動作させ、その状態でプログラムを実行すると、以下の出力が得られました。
おわりに
とりあえず、公式サンプルを流用した GR-ROSE と Node.js のプログラムの間でシリアル通信を試しました。
さらに、両方のプログラムに処理を追加していって、何か面白そうなものを作っていければと思います。