How to read length-prefixed binary message from Serial using Arduino
The following function allows you to read a binary message, prefixed by a single length
byte, from Serial
:
#include <Arduino.h>
void setup() {
Serial.begin(115200);
}
void HandleMessage(String msg) {
// TODO: Your code to handle the message goes here.
// See https://techoverflow.net/2022/11/15/how-to-print-string-as-sequence-of-hex-bytes-in-arduino/
// for an example of how to print the message as a sequence of hex bytes.
}
void ReadMessageFromSerial() {
// Wait until the length byte is available on Serial
while (Serial.available() == 0);
// Read the length of the message
int length = Serial.read();
// Read the rest of the message
String message = "";
for (int i = 0; i < length; i++) {
while (Serial.available() == 0);
message += char(Serial.read());
}
// Handle the message
HandleMessage(message);
}
void loop() {
ReadMessageFromSerial();
}