使用 bash 接收串行輸入,然後對所述輸入進行一些數學運算,然後發送到虛擬串行端口以供另一個應用程式讀取

使用 bash 接收串行輸入,然後對所述輸入進行一些數學運算,然後發送到虛擬串行端口以供另一個應用程式讀取

我有一個arduino通過串行@9600波特率向我發送一些數字。兩個值以逗號分隔,每 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 腳本,從 arduino 串行流讀取傳入數據並根據需要“條件”它,然後通過虛擬串行端口將條件數據發送到我的其他應用程式。我對如何完成整個事情的虛擬串行端口部分幾乎一無所知。而且我對 bash 的了解也有限,所以我非常欣賞例子。我想我也不知道這是否可能,但我希望找到解決方案。

使用 bash 的另一個原因是我也可以輕鬆地將條件值傳送到 csv 供我自己使用。

先致謝!

相關內容