Используйте 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-файл для собственного использования.

Заранее спасибо!

Связанный контент