bash를 사용하여 직렬 입력을 받은 다음 해당 입력에 대해 일부 계산을 수행한 다음 다른 응용 프로그램이 읽을 수 있도록 가상 직렬 포트로 보냅니다.

bash를 사용하여 직렬 입력을 받은 다음 해당 입력에 대해 일부 계산을 수행한 다음 다른 응용 프로그램이 읽을 수 있도록 가상 직렬 포트로 보냅니다.

직렬 @9600 전송 속도를 통해 나에게 몇 가지 숫자를 보내는 Arduino가 있습니다. 두 값은 쉼표로 구분되어 500밀리초 정도마다 전송됩니다. 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로 쉽게 보낼 수도 있다는 것입니다.

미리 감사드립니다!

관련 정보