Spezieller Serialmonitor gesucht

Kurtsfassung. Der Software Handshake funktioniert nicht...

aktuelles Programm sieht noch so aus:

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

void loop()
{
  String Line = getorder(Serial);
  if (Line != NULL)
  {
    Serial.print("Read: "); Serial.println(Line);
  }
//  Serial.print("#");
}

char* getorder(Stream& stream)
{
  const byte XOFF = 0x13;
  const byte XON = 0x11;
  static byte index = 0;                                       // Statische Zählervariable für die Zeileposition mit 0 anlegen
  static const byte BUFFER_SIZE = 255;                                // Größe des Arryas in einer variabele festlegen
  char Buffer[BUFFER_SIZE];                                    // Arrya für inhalt der Befelsleiste angeben
  char Zeichen ='\0';                                          // Zeichenvariabele Leer anlegen
  static boolean Kommi;                                        // Remanenter Blockiermerker 

  if (stream.available() == false) stream.write(XON);          // Ist der SerialBuffer Leer dann sende DC1 X-ON
  while (stream.available())                                   // Solange noch ein Zeichen im SerialCache
  {
    Zeichen = stream.read();                                   // Lese das Nächste Zeichen ein
    if (index == 0) { Kommi = false; };                        // Feststellen ob ein Kommentar anfängt und Blokiermerker setzen 
    if (isLowerCase(Zeichen)) { Zeichen = Zeichen - 32; };     // Aus Kleinbuchstaben Großbuchstaben machen  
    if (isGraph(Zeichen) && index < BUFFER_SIZE - 1)           // Ist das eingelesene Zeichen Druckbar und der Buffer nicht übergelaufen
    {
      if (Kommi == false) { Buffer[index++] = Zeichen; };      // Wenn noch nicht ein Kommentar gefunden wurde Übertrag das Zeichen in den Buffer und Zähl eins hoch
    }
    else if ((Zeichen == '\n' || Zeichen == '\r') && index > 0)// ist das zeichen nicht Druckbar und [( wird Newline oder Return erkannt) und es ist mindestens das 2. zeichen]
    {
      Buffer[index] = '\0';                                    // Dann setze Nullbyte als Stringende
      index = 0;                                               // Und setze Zähler auf 0
      stream.write(XOFF);                                      // Sende DC3 X-OFF
      delay(5000);
      return Buffer;                                           // und gebe die ausgewertete Zeile zurück
    };
    if (Zeichen == ';') { Kommi = true; };                     // Wird das Zeichen für Kommentar erkannt setze den Blockiermerker
  };
  return NULL;                                         // Sind keine Zeichen im SerialCache dann Gebe NullByte zurück
};

Egebnis ist das Die Komplette Datei durchgesendet wird ohne bei XOFF anzuhalten.
den Delay sieht man ledeglich an der Ausgabe des Arduinos im Fenster. Read: Kommt da mit der Verzögerrung an.
Emfangs LED ist schon lange dunkel während noch Meldungen ankommen und die SendeLED noch blitzt.
Die LED'S sind auf dem Arduinobord Vorinstalliert.
Die EmpfangsLED ist durchgänig am Anfang am leuchten. das heist XOFF wird komplett ignoriert...

Ideen??? :cry: