WIe liest man Bytestreams an Serial ein

ok jetzt hab ichs verstanden, ich dachte dir fehlen die Bemerkungen im Programm.

Wenn die Daten eingelesen werden und nicht dem Schema entsprechen , werden diese direkt identisch zurückgegeben. Aber: der Empfänger sendet diese auch wieder zurück als Bestätigung .

Jetzt ist das eien ewige Dauerschleife von senden und zurücksenden.

Lösung soll sein: if der letzte Datensatz dem nächsten Datensatz entspricht nicht senden , else schon .

Mein Versuch schreibt nichts :

 //falls dem Schema entspricht//


 if ( read_serial() && SB[0]==49  &&  SB[1]==1   &&  SB[2]==0 &&  SB[3]==0 &&  SB[4]==0 &&  SB[5]==1 &&  SB[6]==0&&  SB[5]==1 )
    {
       for ( int i = 0; i <( SBL-2 ) ; i++) {
         Serial.write(SB[i]);
       }
         Serial.write(5);
         Serial.write(13);
         Serial.write(237); //  237 nicht fix 
         Serial.write(50);
    }







       
   if ( read_serial() ) {                                  // identisch ?
          for( int i=0; i <=SBL; i++)
   
          {
           lastSB[i] =  SB[i];     // Array kopieren  SB = Serial byte, SBL=  SErial byte Länge 
          }


           for (int i=0; i <=SBL; i++)  
           {
            if( lastSB[i] != SB[i])        // vergleichen
                                                 // falls verschieden , Serial byte  SB schreiben 
           
               
               {
                for (int i = 0; i <= SBL; i++) {       // nicht identisch  also schreiben 
                   Serial.write(SB[i]);
               }
           }
       }
   } 
    
         
        

  
}




bool read_serial() {
  
  static byte index;
  while (Serial.available()) {
    byte  c = Serial.read();
    if (c == 49) {   // das Starzeichen
      index = 0;
    }
    SB[index] = c;
    index++;
    if (c == 50) {   // das Endzeichen
      SBL = index;
      return true;      
     }
   }
  return false;   // Endzeichen noch nicht erreicht
}