#include "Enuns.h" #ifndef SerialService #define SerialService const char EndLine = '$'; const char BeginSensor = '#'; const int MAX_PROTOCOLS = 20; class ProtocoloSerial { public: F_Code funcao; String protocolo; int idMensagem; }; 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; protocolCount++; } } else { protocoloAtual += entrada; } if (protocoloAtual.length() == 3 && _funcaoAtual == Nda) { _funcaoAtual = (F_Code)(protocoloAtual.toInt()); protocoloAtual = ""; } } } return protocolCount; // Retorna o número de protocolos lidos } int LerBufferSerialID(ProtocoloSerial (&protocolos)[MAX_PROTOCOLS]) { int protocolCount = 0; // Contador de protocolos if (Serial.available() > 0) { String protocoloAtual = ""; F_Code _funcaoAtual = Nda; int _id = 0; 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; protocolos[protocolCount].idMensagem = _id; protocolCount++; //protocoloAtual = ""; // Reseta o protocolo atual //_funcaoAtual = Nda; break; } } else if ((String)entrada == ";" && _id == 0) { _id = protocoloAtual.toInt(); protocoloAtual = ""; } else if ((String)entrada == ";" && _funcaoAtual == Nda) { _funcaoAtual = (F_Code)(protocoloAtual.toInt()); protocoloAtual = ""; } else { protocoloAtual += entrada; } } } return protocolCount; // Retorna o número de protocolos lidos } void EnviarDadosSerial(String Mensagem) { Serial.println(Mensagem); Serial.flush(); vTaskDelay(pdMS_TO_TICKS(10)); } String MontarProtocoloMensagemRecebida(int idMensagem) { String protocolo = (String)Msg + ";" + (String)idMensagem + ";" + EndLine; return protocolo; } String MontarProtocoloVerificacao(T_Code D_Code, int versao) { String Protocolo = (String)D_Code + ";" + (String)Chk + ";" + (String)versao + ";" + EndLine; return Protocolo; } String MontarProtocoloErro(T_Code D_Code) { String Protocolo = (String)D_Code + ";" + (String)Err + ";" + 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) { String Protocolo = (String)rpm + ";" + (String)potencia + ";" + (String)aceleracao + ";" + (String)sentido + ";" + (revertendo ? "1" : "0") + ";" + (String)rpm_offset; return Protocolo; } String MontarDadosProtocoloDHT22(float temperatura, float umidade, float indiceCalor) { String Protocolo = (String)temperatura + ";" + (String)umidade + ";" + (String)indiceCalor; return Protocolo; } 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) { String Protocolo = String(statusBico ? "1" : "0"); return Protocolo; } String MontarDadosProtocoloBombaPressurizadora(bool ligado, float percentualPotencia) { String Protocolo = String(ligado ? "1" : "0") + ";" + String(percentualPotencia); return Protocolo; } String MontarDadosProtocoloSensorGenerico(String dados1, String dados2 = "", String dados3 = "", String dados4 = "") { String Protocolo = dados1 + ";" + dados2 + ";" + dados3 + ";" + dados4; return Protocolo; } String MontarDadosProtocoloNTC10K(float temperatura) { String Protocolo = (String)temperatura; return Protocolo; } 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; } String MontarDadosProtocoloFluxo(int pulsos, int tempo) { String Protocolo = (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; } String MontarDadosProtocoloMagnetometro(int x, int y, int z, float orientacao) { String Protocolo = (String)x + ";" + (String)y + ";" + (String)z + ";" + (String)orientacao; return Protocolo; } 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; } String MontarDadosProtocoloSonarM(int distancias[36], int angulos[36], int posicao) { String Protocolo = (String)posicao + "_"; for (int i = 0; i < 36; i++) { Protocolo += (String)distancias[i] + "," + (String)angulos[i] + "-"; } return Protocolo; } #endif