bashを使用してシリアル入力を受け取り、その入力に対して計算を行い、別のアプリが読み取れるように仮想シリアルポートに送信します。

bashを使用してシリアル入力を受け取り、その入力に対して計算を行い、別のアプリが読み取れるように仮想シリアルポートに送信します。

私は、9600 ボーのシリアルでいくつかの数値を送信する Arduino を持っています。コンマで区切られた 2 つの値が、約 500 ミリ秒ごとに送信されます。cat /dev/ttyACM0これは、10.5,20.3 のようで、数値の範囲は -10 から 100 です。この情報を受信し、それをグラフに表示して視覚化するアプリケーションがあります。問題は、問題のアプリケーションには、与えられた値を使用して何らかの計算を行う機能がないため、Arduino がグラフ化のために送信できるものしか使用できないことです。

いわば、数字を取得して「条件付け」する必要があります。以下に擬似コードを入力すると良いでしょう。

read value1 //values parsed from serial using comma as a seperator
read value2 //I have no idea how to do that but I know its doable lol

var kwh = 0;
var lastReadTime = systemTimeMillis();

Loop {
var addKwh = (value1 + value2) * 120 * (systemTimeMillis() - lastReadTime)/1000/60/60/1000
kwh = kwh + addKwh
lastReadTime = systemTimeMillis();
echo $value1 + "," + $value2 + "," + $kwh > virtualSerialPortForOtherApplicationToRead
} 

さて、皆さんが何を考えているかは分かっています。Arduino で「調整」を行えばいいのではないでしょうか。一日の終わりにこの値をリセットする必要があるので、システム時間が必要になります。これを Arduino に渡して信頼性を確保するのは大変面倒です。

そこで、私は、Arduino シリアル ストリームから受信データを読み取り、必要に応じて「調整」し、調整したデータをダミー シリアル ポート経由で他のアプリケーションに送信する bash スクリプトを作成することを考えました。この全体の仮想シリアル ポート部分をどのように行うのか、私にはほとんどわかりません。また、bash に関する私の知識も限られているため、例があると本当にありがたいです。これらが実現可能かどうかもわかりませんが、解決策を見つけたいと思っています。

bash を使用するもう 1 つの理由は、条件付きの値を CSV に簡単に送信して自分で使用できるようになることです。

前もって感謝します!

関連情報