du hast im serRead einen fehler:
wenn serRead innerhalb der timeout=2 (das sind nicht ms sondern schleifendurchläufe) nichts empfängt, dann wird empfangen automatisch ein 'T' eingetragen, und so schnell kannst du gar nicht senden dass ständig etwas ankommt
also machs am besten im blocking mode, das heißt als timeout 0 übergeben, dann wartet SerRead solange bis etwas ankommtd und wertet dann dieses zeichen aus

schau dir am besten die ausprogrammierte serRead() funktion an!