La siguiente función te permite leer un mensaje binario, prefijado por un único byte de length, desde Serial:
read_length_prefixed_serial.cpp
#include <Arduino.h>
void setup() {
Serial.begin(115200);
}
void HandleMessage(String msg) {
// TODO: Tu código para manejar el mensaje va aquí.
// See https://techoverflow.net/2022/11/15/how-to-print-string-as-sequence-of-hex-bytes-in-arduino/
// para un ejemplo de cómo imprimir el mensaje como una secuencia de bytes hexadecimales.
}
void ReadMessageFromSerial() {
// Esperar hasta que el byte de longitud esté disponible en Serial
while (Serial.available() == 0);
// Leer la longitud del mensaje
int length = Serial.read();
// Leer el resto del mensaje
String message = "";
for (int i = 0; i < length; i++) {
while (Serial.available() == 0);
message += char(Serial.read());
}
// Manejar el mensaje
HandleMessage(message);
}
void loop() {
ReadMessageFromSerial();
}
Echa un vistazo a artículos similares por categoría:
General Arduino Electrónica Embebido
Si este artículo te ha ayudado, considera invitarme a un café o hacer una donación vía PayPal para apoyar la investigación y publicación de nuevos artículos en TechOverflow