Vor _ReceiveStringWait wartest Du jeweils 500ms.
Bist Du sicher, dass Du den Buffer auf der seriellen Schnittstelle aktiviert hast? (Standardmässig ist er aktiviert)
Sonst wird die Antwort nicht zwischengespeichert, die über die serielle Schnittstelle reinkommt.
Reicht die Wartezeit von 800ms?