Наступна функція дозволяє зчитати бінарне повідомлення з префіксом у вигляді одного байта 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
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow