背景・目的
現在、Node.js + serialportライブラリを使用し、
raspiをシリアル接続し、入力したコマンドの結果をコンソールに出力させるスクリプトを作成しています。
最終的には、シリアル通信可能な機器に接続し、コマンドを送受信する事が目的であり、
現在は、Ubuntu搭載機器に接続し、スクリプトを実装しています。
該当のソースコード
Nodejs
1const SerialPort = require('serialport'); 2const { Readline } = SerialPort.parsers; 3const port = new SerialPort("COM6", { baudRate: 115200 }); 4 5port.write('ls\r\n', function (err) { 6 if (err) { 7 console.log('Error writing: ', err.message) 8 } 9}) 10 11const parser = port.pipe(new Readline({ delimiter: '\r\n' })); 12parser.on('data', (value) => { 13 console.log(value); 14})
発生している事象
上記スクリプトを実行すると、下記の様に出力されます。
node .\main.js ls sample_1 sample_2 sample_3 sample_4 sample_5 ubuntu@ubuntu:~$ ←ここは空白になっており、何も出力する文字が無い場合、このまま固まり、処理が全く進まない。
出力結果は理想なのですが、問題は処理の話であり、
上記スクリプトでの実行結果は、ユーザが強制終了をさせない限り(Ctrl + C)、ずっと動作し続ける(処理が固まっているように見える)事になっております。
また、この動作はThreadX、Ubuntuの両方で確認が取れています。
解決したい内容
原因は、予想としては下記の
parser.on('data', (value) => { console.log(value); })
だと考えているのですが、終了させる処理が、公式サイトにもStack OverFlowにも見当たらず、1か月程沼にはまっております。
最終目的は、この処理を終了させることです。
(具体的には、エンターキーを押せば反応する)
どなたか、ご教授の程、お願いいたします。
補足情報(FW/ツールのバージョンなど)
OS : Windows 10 Pro
Node.js : v14.18.0
serialport : v9.2.4
使用機器 : raspi3 model-B (Ubuntu 20.04.02 LTS)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。