Ein writeString(receiveBuffer) als Debug Ausgabe könnte schon helfen um zu sehen WAS denn genau ankommt. Oder noch besser in einer Schleife die ASCII Codes ausgeben lassen (writeInteger(receiveBuffer[i],DEC))

Immer wenn irgendwas nicht funktioniert solltest Du versuchen die Variablen Inhalte auszugeben. Dafür ist die serielle Schnittstelle ja auch da


Der Grund warum es nicht funktioniert liegt wohl hier:
mSleep(500);
(kommt an zwei Stellen vor!)

Damit funktioniert das task System nicht mehr!
mSleep darfst Du nur für kurze Pausen <20ms verwenden wenn Du task_ABCD Funktionen in der Hauptschleife aufrufst.
getInputline ist im prinzip auch so eine Art von Task Funktion und muss MEHRFACH aufgerufen werden damit es funktioniert.
Die Funktion verarbeitet jedes ankommende Zeichen EINZELN damit das nebenläufig verwendet werden kann und nichts anderes blockiert.

Wenn man das anders haben möchte muss man das if gegen while austauschen...

Die bessere Lösung ist aber von mSleep komplett auf die Stopwatches (Software Timer) umzusteigen.

MfG,
SlyD