Nextion zu Arduino, Serial Stream Problem

Ich habe auf der Basis des Codes von Whandal eine Funktion gebaut, die die Grundfunktionen des Nextion einlesen kann. Die Auswertung muss dann anhand des ersten Bytes erfolgen, da dieses bestimmt, welche Inhaltsbytes wie zu verarbeiten sind.

// nach Whandall 05.09.2019 forum.arduino.cc
// https://forum.arduino.cc/t/nextion-component-id-trennen/609217/19
const byte bufferSize = 15;
uint8_t buffer[bufferSize];

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

bool readNex(Stream &s) {
  static uint8_t bIndex = 0;
  bool allesDa = false;
  if (s.available()) {
    uint8_t inChar = s.read();
    buffer[bIndex++] = inChar;
		// 0x71 bei diesen Paketen können drei 0xFF Bestandteil des Pakets sein,
    // also ergibt es nur Sinn auf die Delimiter hinter dem Wert zu testen
    if (inChar == 0xFF && (bIndex >= (*buffer == 0x71 ? 8 : 3)) &&
        buffer[bIndex - 2] == 0xFF && buffer[bIndex - 3] == 0xFF) {
      allesDa = true;
    } else {
      allesDa = (bIndex == bufferSize);
    }
  }
  if (allesDa) bIndex = 0; // Index zurücksetzen 
  return allesDa;
}

void loop() {

unsigned long varVomNextion =0;
bool fertig = readNex(Serial2);
  if (fertig && buffer[0] == 0x71) { // Buffer[0] enthält das Kennbyte, nach dem die Auswertung erfolgen muss - hier numerische Daten
    varVomNextion = buffer[1]+buffer[2]*256+buffer[3]*65536+buffer[4]*16777216;
	  Serial.println(varVomNextion);
	}
}

Evtl. kannst Du damit mehr anfangen. 

Gruß Tommy

Edit: Für das Auslesen mehrerer Bytes des EEPROM brauchst Du evtl. einen größeren Puffer.