Use o bash para receber a entrada serial, faça algumas contas com essa entrada e envie para a porta serial virtual para outro aplicativo ler

Use o bash para receber a entrada serial, faça algumas contas com essa entrada e envie para a porta serial virtual para outro aplicativo ler

Eu tenho um arduino me enviando alguns números através da serial @9600 baud. Dois valores separados por vírgula enviados a cada 500 ms ou mais. cat /dev/ttyACM0fica assim: 10.5,20.3 com os números variando de -10 a 100. Tenho uma aplicação que recebe essas informações e coloca em um gráfico para eu visualizar. Meu problema é que o aplicativo em questão não tem a capacidade de fazer qualquer tipo de matemática com os valores fornecidos, então estou preso ao que o Arduino pode enviar para gráficos.

Preciso pegar os números e “condicioná-los”, por assim dizer. Melhor colocar o pseudocódigo abaixo:

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
} 

Agora - eu sei o que você está pensando - por que não fazer o "condicionamento" no arduino? Bem, eu preciso ser capaz de redefinir esse valor no final do dia, daí a necessidade de tempo do sistema, que é uma dor de cabeça, para passar de volta para o Arduino e torná-lo confiável.

Portanto, meu pensamento é criar um script bash que leia os dados recebidos do fluxo serial do Arduino e os "condicione" conforme necessário e, em seguida, envie os dados condicionados para meu outro aplicativo por meio de uma porta serial fictícia. Não tenho ideia de como fazer a parte da porta serial virtual de tudo isso. E meu conhecimento de bash também é limitado, então aprecio muito os exemplos. Acho que também não tenho ideia se isso é possível, mas espero encontrar uma solução.

Outra razão para o bash é que poderei enviar facilmente os valores condicionados para um csv para meu próprio uso.

Desde já, obrigado!

informação relacionada