私は、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 に簡単に送信して自分で使用できるようになることです。
前もって感謝します!