-
-
Erfahrener Benutzer
Roboter Genie
moin,
ich hab dieses problem gelöst, ich habe beim auslösen des Data_Received events, das ausgelöst wird, wenn 2 byte vorhanden sind, den Puffer mit ReadExisting komplett ausgelesen und in einen String geschrieben.
Statt nun Do Until mit ReadChar auszuführen, mache ich Do Until Data_Buffer ="S?"
dies klappt an sich.
Nun hat sich aber ein zweites Problem gezeigt.
Ich kommuniziere die Steuerbefehle, und das Gerät macht was es soll. Nun müssen die gesammelten Daten ausgelesen werden. Dafür setze ich den Schwellwert für das Event von 2 auf 298 (296Datenbytes + E! als Ende). Direkt nach dem senden quitiert der PC die Sendung mit "O" und der Controller fragt den Beginn eines neuen Scandurchlaufs "F?"
Vorher hab ich natürlich den Schwellwert wieder auf 2 Byte gesetzt.
Der PC wartet hierauf. Allerdings passiert es ab und zu, oder fast sofort wenn ich den Rechner durch Verschieben von Fenstern beschäftigte, dass der Controller zwar F? sendet, aber der Empfangspuffer leer bleibt. Da der µC das nur einmal tut, warten nun beide aufeinander (Deadlock).
Hat jemand eine Ahnung warum soetwas passieren kann (eigentlich doch hardwaregepuffert) und wie man das Problem löst?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen