#include <Arduino.h>
// Inicializa a comunicação Serial
void setup() {
Serial.begin(9600);
Serial.println("Inicializando Serial...");
}
// Variáveis para controle do parser
char serialData;
bool inicioComando = false;
bool aguardandoValor = false;
String comando;
String buffer;
int valor = 0;
// Função para parsear o progresso baseado nos dados recebidos
void parseData(char data) {
// Checa se o dado é o início de um comando
if (isalpha(data)) {
comando = data; // Guarda o comando
inicioComando = true;
buffer = ""; // Limpa o buffer para o novo valor
} else if (inicioComando && data == ':') {
aguardandoValor = true; // Próximo estado, esperando o valor
} else if (data == '\r' || data == '\n') {
// Final do comando, processa o valor
if (aguardandoValor && comando == "B") {
valor = buffer.toInt();
Serial.print("Meu valor: ");
Serial.println(valor);
} else if (aguardandoValor && comando == "C") {
valor = buffer.toInt();
Serial.print("Meu valor de C: ");
Serial.println(valor);
} else {
Serial.println("Comando inválido ou sem valor.");
}
// Reset das variáveis para o próximo comando
inicioComando = false;
aguardandoValor = false;
buffer = "";
} else if (aguardandoValor && data != ':') {
buffer += data; // Acumula o valor
}
}
// Loop principal que aguarda dados na porta serial
void loop() {
if (Serial.available() > 0) {
serialData = static_cast<char>(Serial.read());
parseData(serialData); // Chama o parser
}
}