seriellen Buffer löschen

Hi,

wie lösche ich den Buffer bei der seriellen KommunikATION?

mein Code sieht wie folgt aus:

String str;

void setup(){
  Serial.begin(4800);
  Serial1.begin(4800);
}
void loop()
{

    Serial.print(STX);
    Serial.print(Eins);
    Serial.print(Acht);
    Serial.print(Semi);                         //ist die Anforderung zum gerät den String zu senden
    Serial.print(Semi);
    Serial.print(D);
    Serial.print(F);
    Serial.print(ETX);
    delay(10);
    
    if(Serial1.available() > 0)
    {
      str = Serial1.readStringUntil('\r');
    }
    Serial1.print(str);
  }
}

Der Buffer ist voll, da vor der Abfrage schon mehrmals etwas gesendet wurde... in dem Moment wo die Anforderung gesendet wird wird das gewünschte allerdings nur noch einmal gesendet.

Ich hänge im Moment an der Stelle, da ich nur den ersten Status als str ausgegeben bekomme... aber den bei der Abfrage dann nicht..

Oder hat jemand eine andere Idee ohne den Buffer?
MfG

while(Serial.available())
   Serial.read();

an welche Stelle im Programm kommt das?

Ich habe das vorhin probiert.. allerdings vor der Abfrage der Daten...

Quasi so:

void loop()
{

while(Serial1.available())
   Serial1.read();

    Serial.print(STX);
    Serial.print(Eins);
    Serial.print(Acht);
    Serial.print(Semi);                         //ist die Anforderung zum gerät den String zu senden
    Serial.print(Semi);
    Serial.print(D);
    Serial.print(F);
    Serial.print(ETX);
    delay(10);
    
    if(Serial1.available() > 0)
    {
      str = Serial1.readStringUntil('\r');
    }
    Serial1.print(str);
  }
}

Du kannst ja mal an dem Link gucken da ist es noch etwas allgemeiner aber vom Code her genauer..

http://forum.arduino.cc/index.php?action=profile;sa=showPosts

Danke aber auf jedenfall schon mal

Was willst Du überhaupt machen? Was hängt an Serial, was an Serial1? Willst Du den Empfangs- oder den Sendepuffer löschen?

Zudem: poste immer den vollständigen Code, solche kurzen Ausschnitte verbergen häufig die relevanten Codestellen.