Cómo leer un mensaje binario con prefijo de longitud desde Serial usando Arduino

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