Nextion zu Arduino, Serial Stream Problem

Hallo zusammen,

ich war am WE fleissig und habe mich speziell mit der Datenübertragung vom Nextion beschäftigt. Mein spezielles Problem konnte ich lösen. Die Schalter und Slider bekomme ich nun korrekt geliefert und ich kann den eigentlichen Code weitertreiben.

@Thommy: die Arbeitsweise vom Nextion war mir schon klar, einzig der Simulator hat mich ins Schleudern gebracht, weil er zwei einzelne Zeilen, 1x die 0x65 und 1x die 0x71 lieferte. Da hatte ich keine Idee dazu, wie man es verknüpft.
Dass es ein einziger Stream ist und bleibt, habe ich erst später erkannt.
Danke an alle Helfer, das hätte ich alleine nie geschafft.

Nachfolgend der ungepflegte Code, wie ich es auf die Schnelle gelöst habe. Vielleicht hilft es jemandem weiter.

Gruß und Dank, Franz

type or paste code here
// Grundlage aus https://forum.arduino.cc/t/nextion-component-id-trennen/609217/18
// Doku zum Thema unter: Component_ID_trennen_01.docx
// im Forum ist es der Artikel #19
// 
// Test mit UNO, daher softwareSerial....
//
//  - Slider:
//    im ReleaseEvent die SendID aktivieren, und im MoveEvent noch die 
//	Weiterreichung auf das Nummernfeld einstellen.
//	so wird beim Loslassen des Schiebers der letzte Wert mit
//	'get Slider1.val' über die Schnittstelle gesendet,
//	Antwort:  	71 64 00 00 00 FF FF FF (dez.Wert=100) 
//			65 01 01 00 FF FF FF -> wegen TouchEvent 
//-------------------------------------------------------------------------------

#include <SoftwareSerial.h>
SoftwareSerial Serial2(2, 3); // RX, TX

const byte bufferSize = 64;

int hGiessMenge1 = 0; // Variablen beinhalten den Sliderwert
int hGiessMenge2 = 0;
int hGiessMenge3 = 0;
int hGiessMenge4 = 0;
int hGiessMenge5 = 0;
int hGiessMenge6 = 0;

boolean Slider1 = LOW;  // Hilfsmerker für die Auswertung
boolean Slider2 = LOW;
boolean Slider3 = LOW;
boolean Slider4 = LOW;
boolean Slider5 = LOW;
boolean Slider6 = LOW;

unsigned long VarFromNextion = 0; // beinhaltet den Sliderwert
int led = 13;
boolean StateLed = LOW;

void setup() 
{
  Serial.begin(9600);
  Serial2.begin(9600);
  pinMode(led, OUTPUT);
}

void loop() 
{
    static uint8_t bIndex;
    static uint8_t buffer[bufferSize];
    bool allesDa = false;

//-----------Einleseroutine nach Whandall+Thommy----------------------
      if (Serial2.available()) 
        {
          uint8_t inChar = Serial2.read();
          buffer[bIndex++] = inChar;
  
          if (inChar == 0xFF && (bIndex >= (*buffer == 0x71 ? 8 : 3)) &&
              buffer[bIndex - 2] == 0xFF && buffer[bIndex - 3] == 0xFF) 
              {
                allesDa = true;
              } 
              else 
              {
                allesDa = (bIndex == bufferSize);
              }

                  Serial.print("                inChar ");
                  Serial.print(inChar);
                  Serial.print("    allesDa ");
                  Serial.println(allesDa);
                  
        }// end if Serial.available()
        
//---- Auswertung ------------ ----------------        
        if (allesDa) 
          {
            if (*buffer == 0x71)
              {
/*                Serial.print(F("Kennung: "));
                Serial.println(buffer[0],HEX);
                Serial.print(F("Byte1 d: "));
                Serial.println(buffer[1],DEC);
                Serial.print(F("Byte2  : "));
                Serial.println(buffer[2],HEX);
                Serial.print(F("Byte3  : "));
                Serial.println(buffer[3],HEX);
                Serial.print(F("Byte4  : "));
                Serial.println(buffer[4],HEX);
                Serial.print(F("Byte5  : "));
                Serial.println(buffer[5],HEX);
                Serial.print(F("Byte6  : "));
                Serial.println(buffer[6],HEX);
                Serial.print(F("Byte7  : "));
                Serial.println(buffer[7],HEX);
                Serial.print(F("Byte8  : "));
                Serial.println(buffer[8],HEX);
*/
                VarFromNextion = buffer[1]+buffer[2]*256+buffer[3]*65536+buffer[4]*16777216;
                Serial.println(VarFromNextion);
                
              }
    //---------------------------------------------------------------------------            
                //slider1 page0
                if ((*buffer == 0x65)  && (buffer[1] == 0) && (buffer[2] == 6))
                  {
/*                    Serial.print(F("0x65 : "));
                    Serial.println(buffer[0],HEX);
                    Serial.print(F("Page : "));
                    Serial.println(buffer[1]);
                    Serial.print(F("ID   : "));
                    Serial.println(buffer[2]);
                    //Serial.print(F("Event: "));
                    //Serial.println(buffer[3] ? F("PRESS") : F("RELEASE"));
*/                       
                    Slider1 = true;
                    Serial.print(F("Slider 1 "));
                    Serial.println(Slider1);
                  }
                  else 
                  {
                    Slider1 = false; 
                    Serial.print(F("Slider 1 "));
                    Serial.println(Slider1);
                                
                  }
    //----------------------------------------------------------------------------
                  // slider 2 page0
                   if ((*buffer == 0x65)  && (buffer[1] == 0) && (buffer[2] == 2))
                  {
/*                    Serial.print(F("0x65 : "));
                    Serial.println(buffer[0],HEX);
                    Serial.print(F("Page : "));
                    Serial.println(buffer[1]);
                    Serial.print(F("ID   : "));
                    Serial.println(buffer[2]);
                    //Serial.print(F("Event: "));
                    //Serial.println(buffer[3] ? F("PRESS") : F("RELEASE"));
*/    
                    Slider2 = true;
                    Serial.print(F("Slider 2 "));
                    Serial.println(Slider2);                                
                  }
                  else 
                  {
                    Slider2 = false;  
                    Serial.print(F("Slider 2 "));
                    Serial.println(Slider2);                           
                  }
//----------------------------------------------------------------------------  
//slider3 page0            
if ((*buffer == 0x65)  && (buffer[1] == 0) && (buffer[2] == 8))
                  {
/*                    Serial.print(F("0x65 : "));
                    Serial.println(buffer[0],HEX);
                    Serial.print(F("Page : "));
                    Serial.println(buffer[1]);
                    Serial.print(F("ID   : "));
                    Serial.println(buffer[2]);
                    //Serial.print(F("Event: "));
                    //Serial.println(buffer[3] ? F("PRESS") : F("RELEASE"));
*/    
                    Slider3 = true;
                    Serial.print(F("Slider 3 "));
                    Serial.println(Slider3);                                
                  }
                  else 
                  {
                    Slider3 = false;  
                    Serial.print(F("Slider 3 "));
                    Serial.println(Slider3);                           
                  }
//---------------------------------------------------------------------------- 
//Slider4 page0 
if ((*buffer == 0x65)  && (buffer[1] == 0) && (buffer[2] == 10))
                  {
/*                    Serial.print(F("0x65 : "));
                    Serial.println(buffer[0],HEX);
                    Serial.print(F("Page : "));
                    Serial.println(buffer[1]);
                    Serial.print(F("ID   : "));
                    Serial.println(buffer[2]);
                    //Serial.print(F("Event: "));
                    //Serial.println(buffer[3] ? F("PRESS") : F("RELEASE"));
*/    
                    Slider4 = true;
                    Serial.print(F("Slider 4 "));
                    Serial.println(Slider4);                                
                  }
                  else 
                  {
                    Slider4 = false;  
                    Serial.print(F("Slider 4 "));
                    Serial.println(Slider4);                           
                  }
//---------------------------------------------------------------------------- 
//Slider1 page01
if ((*buffer == 0x65)  && (buffer[1] == 1) && (buffer[2] == 1))
                  {
/*                    Serial.print(F("0x65 : "));
                    Serial.println(buffer[0],HEX);
                    Serial.print(F("Page : "));
                    Serial.println(buffer[1]);
                    Serial.print(F("ID   : "));
                    Serial.println(buffer[2]);
                    //Serial.print(F("Event: "));
                    //Serial.println(buffer[3] ? F("PRESS") : F("RELEASE"));
*/    
                    Slider5 = true;
                    Serial.print(F("Slider 5 "));
                    Serial.println(Slider5);                                
                  }
                  else 
                  {
                    Slider5 = false;  
                    Serial.print(F("Slider 5 "));
                    Serial.println(Slider5);                           
                  }
//---------------------------------------------------------------------------- 
//Slider2 page01
if ((*buffer == 0x65)  && (buffer[1] == 1) && (buffer[2] == 3))
                  {
/*                    Serial.print(F("0x65 : "));
                    Serial.println(buffer[0],HEX);
                    Serial.print(F("Page : "));
                    Serial.println(buffer[1]);
                    Serial.print(F("ID   : "));
                    Serial.println(buffer[2]);
                    //Serial.print(F("Event: "));
                    //Serial.println(buffer[3] ? F("PRESS") : F("RELEASE"));
*/    
                    Slider6 = true;
                    Serial.print(F("Slider 6 "));
                    Serial.println(Slider6);                                
                  }
                  else 
                  {
                    Slider6 = false;  
                    Serial.print(F("Slider 6 "));
                    Serial.println(Slider6);                           
                  }
//---------------------------------------------------------------------------- 
                //btn page01
                if ((*buffer == 0x65)  && (buffer[1] == 1) && (buffer[2] == 5))
                  {
                      if (StateLed == LOW)
                      {
                        StateLed = HIGH;
                        digitalWrite(led, HIGH);                                
                      }
                      else 
                      {
                        StateLed = LOW;
                        digitalWrite(led, LOW);                           
                      }
                  }   
                  
//----------------------------------------------------------------------------              
// Zusammenführung der Events+Sliderwerte mit Auswertung der Slider....

                      if (Slider1 == HIGH)
                         {
                            hGiessMenge1 = VarFromNextion;
                            Serial.print("hGiessMenge 1: ");
                            Serial.println(hGiessMenge1);
                         }
                      //--------------------------   
                      if (Slider2 == HIGH)
                         {
                            hGiessMenge2 = VarFromNextion;
                            Serial.print("hGiessMenge 2: ");
                            Serial.println(hGiessMenge2);
                         }  
                      //--------------------------                
                      if (Slider3 == HIGH)
                         {
                            hGiessMenge3 = VarFromNextion;
                            Serial.print("hGiessMenge 3: ");
                            Serial.println(hGiessMenge3);
                         }  
                      //--------------------------                
                      if (Slider4 == HIGH)
                         {
                            hGiessMenge4 = VarFromNextion;
                            Serial.print("hGiessMenge 4: ");
                            Serial.println(hGiessMenge4);
                         }      
                      //--------------------------                
                      if (Slider5 == HIGH)
                         {
                            hGiessMenge5 = VarFromNextion;
                            Serial.print("hGiessMenge 5: ");
                            Serial.println(hGiessMenge5);
                         }               
                         //--------------------------                
                      if (Slider6 == HIGH)
                         {
                            hGiessMenge6 = VarFromNextion;
                            Serial.print("hGiessMenge 6: ");
                            Serial.println(hGiessMenge6);
                         }                           
                              
            bIndex = 0;
          } // end allesDa
} // end loop