Serielles Telegramm lesen und verarbeiten

noiasca:
ja, im Prinzip könntest du den Sketch von Post 18 anpassen.

fylw:
Das Telegramm endet mit 3F 3F 3F 3F FF FF

Darauf basierend mal ein Vorschlag:

const uint16_t erw = 740; // Anzahl erwartete Zeichen
const uint16_t numChars = 750;
byte receivedChars[numChars];

boolean newData = false;

void setup() {
  Serial.begin(115200);
  Serial.println("\n<Arduino is ready>");
  Serial1.begin(9600);
}

void loop() {
  recvWithStartEndMarkers();
  showNewData();
}

void recvWithStartEndMarkers() {
  static uint16_t ndx = 0;
  byte rc;

  while (Serial1.available() > 0 && newData == false) {
    rc = Serial1.read();
    Serial.print(ndx); Serial.print('\t'); Serial.println(rc, HEX);
    receivedChars[ndx] = rc;
    if (ndx > 5 && receivedChars[ndx - 5] == 0x3F && receivedChars[ndx - 4] == 0x3F && receivedChars[ndx - 3] == 0x3F && receivedChars[ndx - 2] == 0x3F && receivedChars[ndx - 1] == 0xFF && receivedChars[ndx] == 0xFF) {
      if (ndx == (erw-1) && receivedChars[ndx - erw+1] == 0x01 && receivedChars[ndx - erw+2] == 0x01 && receivedChars[ndx - erw+3] == 0x01 && receivedChars[ndx - erw+4] == 0x01 && receivedChars[ndx - erw+5] == 0x3F && receivedChars[ndx - erw+6] == 0x3F && receivedChars[ndx - erw+7] == 0x3F && receivedChars[ndx - erw+8] == 0x3F ) {
        newData = true;
      }
      ndx = 0;
    } else {
      ndx = (1 + ndx) % numChars;
    }
  }
}

void showNewData() {
  if (newData == true) {
    Serial.print("\nDaten zur Auswertung: ");
    for (uint16_t i = 0; i < erw; i++)
    {
      if (receivedChars[i] < 0x10) Serial.print("0");
      Serial.print (receivedChars[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
    newData = false;
  }
}