Serial.available() no funciona correctamente

Hola!
Estoy intentando comunicar dos módulos ESP32 utilizando dos de los tres puertos serie de los que dispone cada módulo. En mi caso envió una trama por un puerto serie utilizando el protocolo ESP_Now al otro módulo, el cual recibe la trama y este por el otro puerto serie escribe la trama en un display, este modifica algunos datos para posteriormente enviar la trama modificada al módulo y este por ESP_Now la vuelve a enviar al otro módulo. Lo he conseguido pero solo necesito que me envié los datos cuando estos son diferentes, solo se me ocurre vaciando el buffer de entrada pero por lo que he leído en bastantes comentarios el serial.flush() solo sirve para versiones de arduino 1.0 por lo que no me funciona, estoy probando con if(Serial.available()) pero nunca entra ahi, y no se porque si continuamente estoy enviando una trama por el ESP_Now. No se como poder vaciar el buffer de entrada.

Muchas gracias por la ayuda de antemano!!

La comunicación en serie es asincrónica por diseño. Los datos ingresan y no puede adivinar cuándo el remitente enviará algo o si está terminado, a menos que tenga un protocolo con un marcador de finalización.

si lees en ingles te recomiendo mucho leer Serial Input Basics

➜ Necesita un buen protocolo del lado del remitente, para que el receptor pueda sincronizarse y el análisis pueda ser robusto.

1 Like