私はシリアル@9600ボーレートで私にいくつかの数を送信するArduinoがあります。両方の値はカンマで区切られ、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シリアルストリームから着信データを読み込み、必要に応じて「条件」を指定し、条件付きデータを仮想シリアルポートを介して別のアプリケーションに送信するbashスクリプトを作成することです。私は全体の仮想シリアルポート部分を実行する方法をほとんど知りません。そしてbashに関する私の知識は限られているので、例を高く評価します。これが可能かどうかはわかりませんが、解決策を探したいです。
Bashを使用するもう一つの理由は、私が直接使用するために条件付き値をCSVに簡単に送信できることです。
よろしくお願いします!