使用 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 供我自己使用。

提前致谢!

相关内容