如何使用 Arduino 从 Serial 读取长度前缀二进制消息

以下函数允许你从 Serial 读取以单个 length 字节为前缀的二进制消息:

read_length_prefixed_serial.cpp
#include <Arduino.h>

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

void HandleMessage(String msg) {
    // TODO:处理消息的代码放在这里。
    // See 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();
}

Check out similar posts by category: Allgemein, Arduino, Electronics, Embedded