agrobot_base/Firmware/Modulos/SerialService.h

221 lines
5.6 KiB
C
Raw Normal View History

2023-10-09 16:06:23 +00:00
#include "Enuns.h"
#ifndef SerialService
#define SerialService
const char EndLine = '$';
const char BeginSensor = '#';
2024-04-15 10:57:37 +00:00
const int MAX_PROTOCOLS = 20;
class ProtocoloSerial {
public:
F_Code funcao;
String protocolo;
};
int LerBufferSerial(ProtocoloSerial (&protocolos)[MAX_PROTOCOLS]) {
int protocolCount = 0; // Contador de protocolos
if (Serial.available() > 0) {
String protocoloAtual = "";
F_Code _funcaoAtual = Nda;
while (Serial.available()) {
char entrada = (char)Serial.read();
if (entrada == EndLine) {
if (protocoloAtual.length() > 0 && protocolCount < MAX_PROTOCOLS) {
protocolos[protocolCount].funcao = _funcaoAtual;
protocolos[protocolCount++].protocolo = protocoloAtual;
protocoloAtual = ""; // Reseta o protocolo atual
_funcaoAtual = Nda;
}
} else {
protocoloAtual += entrada;
}
if (protocoloAtual.length() == 3 && _funcaoAtual == Nda) {
_funcaoAtual = (F_Code)((String)protocoloAtual[0] + (String)protocoloAtual[1] + (String)protocoloAtual[2]).toInt();
protocoloAtual = "";
}
}
}
return protocolCount; // Retorna o número de protocolos lidos
}
2023-10-09 16:06:23 +00:00
void EnviarDadosSerial(String Mensagem) {
Serial.println(Mensagem);
Serial.flush();
2023-11-30 00:41:22 +00:00
vTaskDelay(pdMS_TO_TICKS(10));
2023-10-09 16:06:23 +00:00
}
2024-04-15 10:57:37 +00:00
String MontarProtocoloVerificacao(T_Code D_Code, int versao) {
2023-10-09 16:06:23 +00:00
String Protocolo =
(String)D_Code + ";" +
2024-04-15 10:57:37 +00:00
(String)Chk + ";" +
(String)versao + ";" +
EndLine;
return Protocolo;
}
String MontarProtocoloErro(T_Code D_Code) {
String Protocolo =
(String)D_Code + ";" +
(String)Err + ";" +
2023-10-09 16:06:23 +00:00
EndLine;
return Protocolo;
}
String MontarProtocoloSensor(S_Code TipoSensor, String Componente, String Dados) {
String Protocolo =
BeginSensor +
(String)TipoSensor + ";" +
Componente + ";" +
Dados +
EndLine;
return Protocolo;
}
String MontarDadosProtocoloTeste(bool Testando, String Componente, String Resultado, String Comando, String Leitura) {
String Protocolo =
(Testando ? "1;" : "0;") +
Componente + ";" +
Resultado + ";" +
Comando + ";" +
Leitura +
EndLine;
return Protocolo;
}
String MontarDadosProtocoloRPM(float rpm, double potencia, StatusMotor aceleracao, Sentido sentido, bool revertendo, float rpm_offset) {
2023-10-09 16:06:23 +00:00
String Protocolo =
(String)rpm + ";" +
(String)potencia + ";" +
2023-11-30 00:41:22 +00:00
(String)aceleracao + ";" +
(String)sentido + ";" +
(revertendo ? "1" : "0") + ";" +
(String)rpm_offset;
2023-10-09 16:06:23 +00:00
return Protocolo;
}
String MontarDadosProtocoloDHT22(float temperatura, float umidade, float indiceCalor) {
String Protocolo =
(String)temperatura + ";" +
(String)umidade + ";" +
(String)indiceCalor;
return Protocolo;
}
2023-11-30 00:41:22 +00:00
String MontarDadosProtocoloEncoder(Sentido sentido, int angulo, bool ref0, bool ref90, bool ref270, bool referenciando, bool referenciado) {
String Protocolo =
(String)sentido + ";" +
(String)angulo + ";" +
(ref0 ? "1" : "0") + ";" +
(ref90 ? "1" : "0") + ";" +
(ref270 ? "1" : "0") + ";" +
(referenciando ? "1" : "0") + ";" +
(referenciado ? "1" : "0");
return Protocolo;
}
String MontarDadosProtocoloBicoPulverizador(bool statusBico) {
2024-01-03 10:52:37 +00:00
String Protocolo =
String(statusBico ? "1" : "0");
2024-01-03 10:52:37 +00:00
return Protocolo;
}
2024-04-01 11:03:25 +00:00
String MontarDadosProtocoloBombaPressurizadora(bool ligado, float percentualPotencia) {
String Protocolo =
String(ligado ? "1" : "0") + ";" +
String(percentualPotencia);
return Protocolo;
}
2023-11-30 00:41:22 +00:00
String MontarDadosProtocoloSensorGenerico(String dados1, String dados2 = "", String dados3 = "", String dados4 = "") {
String Protocolo =
dados1 + ";" +
dados2 + ";" +
dados3 + ";" +
dados4;
return Protocolo;
}
2024-01-18 19:22:28 +00:00
String MontarDadosProtocoloNTC10K(float temperatura) {
String Protocolo =
(String)temperatura;
return Protocolo;
}
2024-01-23 17:10:34 +00:00
String MontarDadosProtocoloTensao(float leitura, float vPin, float vReal) {
String Protocolo =
(String)leitura + ";" +
(String)vPin + ";" +
(String)vReal;
return Protocolo;
}
String MontarDadosProtocoloCorrente(float leitura, float vPin, float corrente) {
String Protocolo =
(String)leitura + ";" +
(String)vPin + ";" +
(String)corrente;
return Protocolo;
}
String MontarDadosProtocoloINA226(float busVoltage, float shuntVoltage, float current, float power) {
String Protocolo =
(String)busVoltage + ";" +
(String)shuntVoltage + ";" +
(String)current + ";" +
(String)power;
return Protocolo;
}
String MontarDadosProtocoloUltrassom(float distancia, long duracao) {
String Protocolo =
(String)distancia + ";" +
(String)duracao;
return Protocolo;
}
2024-04-01 11:03:25 +00:00
String MontarDadosProtocoloFluxo(int pulsos, int tempo) {
String Protocolo =
2024-04-01 11:03:25 +00:00
(String)pulsos + ";" +
(String)tempo;
return Protocolo;
}
String MontarDadosProtocoloMassa(float massa) {
String Protocolo =
(String)massa;
return Protocolo;
}
String MontarDadosProtocoloPressao(float pressao, int leitura) {
String Protocolo =
(String)pressao + ";" +
(String)leitura;
return Protocolo;
}
2024-03-13 18:33:13 +00:00
String MontarDadosProtocoloMagnetometro(int x, int y, int z, float orientacao) {
String Protocolo =
(String)x + ";" +
(String)y + ";" +
(String)z + ";" +
(String)orientacao;
return Protocolo;
}
2024-04-15 10:57:37 +00:00
String MontarDadosProtocoloLeituraSensor(float leitura) {
String Protocolo =
(String)leitura;
return Protocolo;
}
String MontarDadosProtocoloSonar(long distancia, long angulo, int posicao) {
String Protocolo =
(String)distancia + ";" +
(String)angulo + ";" +
(String)posicao;
return Protocolo;
}
2023-10-09 16:06:23 +00:00
#endif