Ich glaub das Problem ist waitms, denn jeder string der per RS232 reinkommt muss sofort abgeholt werden damit dein Programm nicht durcheinanderkommt. Wenn zwei Strings im Buffer sind funktioniert das mit dem markieren der strings nicht mehr richtig könnte ich mir vorstellen.
Ersetze das waitms doch durch einen timergesteuerten interrupt. Wie das geht steht bestimmt im wiki.