Як зчитати бінарне повідомлення з префіксом довжини з Serial за допомогою Arduino

Наступна функція дозволяє зчитати бінарне повідомлення з префіксом у вигляді одного байта length з Serial:

read_length_prefixed_serial.cpp
#include <Arduino.h>

void setup() {
    Serial.begin(115200);
}

void HandleMessage(String msg) {
    // TODO: Ваш код для обробки повідомлення розміщується тут.
    // Див. https://techoverflow.net/2022/11/15/how-to-print-string-as-sequence-of-hex-bytes-in-arduino/
    // для прикладу того, як вивести повідомлення як послідовність шістнадцяткових байтів.
}

void ReadMessageFromSerial() {
    // Дочекатися, поки байт довжини стане доступним у Serial
    while (Serial.available() == 0);

    // Зчитати довжину повідомлення
    int length = Serial.read();

    // Зчитати решту повідомлення
    String message = "";
    for (int i = 0; i < length; i++) {
      while (Serial.available() == 0);
      message += char(Serial.read());
    }

    // Обробити повідомлення
    HandleMessage(message);
}

void loop() {
    ReadMessageFromSerial();
}

Дивіться схожі статті за категоріями: Allgemein Arduino Electronics Embedded