Hallo Jimmy,
Inkey() liest nur ein einzelnes Zeichen aus dem Input Buffer. Daher bleibt es immer bei dem "H".
Wenn hinter dem "!" ein <CR> kommt, dann schreib doch mal
Input Text, Noecho

Ansonsten wäre es besser, du würdest nach deinem Text ein bestimmtes Zeichen, wie z.B. CHR(15) senden.
Wenn jetzt der SerialCharMatch kommt, dann sind schon alle Zeichen im Puffer und das Programm braucht nicht mehr auf das Eintreffen zu warten.