Bash를 사용하여 직렬 입력을 받은 다음 해당 입력으로 일부 계산을 수행한 다음 다른 앱이 읽을 수 있도록 가상 직렬 포트로 보냅니다.

Bash를 사용하여 직렬 입력을 받은 다음 해당 입력으로 일부 계산을 수행한 다음 다른 앱이 읽을 수 있도록 가상 직렬 포트로 보냅니다.

직렬 @9600 보드를 통해 나에게 몇 가지 숫자를 보내는 Arduino가 있습니다. 쉼표로 구분된 두 개의 값은 약 500ms마다 전송됩니다. cat /dev/ttyACM010.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를 사용하는 또 다른 이유는 내 자신이 사용할 수 있도록 조건부 값을 CSV로 쉽게 보낼 수 있다는 것입니다.

미리 감사드립니다!

관련 정보