N
An dem Code ist ziemlich viel falsch.
z.B. werden nie die Rückgabewerte der Funktionen geprüft, das Programm macht einfach weiter.
Die Initialisierung des DCB ist unvollständig, die Schnittstelle könnte mit zufälligen Einstellungen konfiguriert werden, deshalb sollte ein DCB immer vollständig initialisiert werden.
Kleines Beispiel:
http://members.inode.at/anton.zechner/az/Seriell.htm
Da sieht man auch die Verwendung der Funktion SetCommTimeouts, wenn man etwas lesen will, sollte man da vernünftige Werte setzen.
ReadFile(hSerial, Antwort.c_str(), 100, &dwBytesWritten, NULL);
Überschreibt eventuell Speicher ausserhalb des AnsiStrings. Meines Wissens nach kann man den von .c_str() gelieferten Zeiger nur zum Lesen verwenden.