Hallo, ich komme mit dem (?asynchronen?) Datensenden/-empfangen über serielle Schnittstelle nicht klar.
Ich sende über COM1 einen Befehl an ein Messgerät, warte einige Zeit und lese dann den seriellen Port mit der Antwort wieder aus (weil ich es nicht anders kann/weiss). Bei mir sieht es ungefähr so aus
Delphi-Quellcode:
procedure MessgeraetAbfragen;
var
stri : string;
begin
ComPort.Open;
Stri:'WERT'+#13#10;
ComPort.WriteStr(Stri); // senden eines Messbefehls an das Messgerät
windows.Beep(100,150); // dem Messgerät Zeit zum Überlegen lassen
ComPort.ReadStr(Stri,100); // Messwert vom Messgerät auslesen
ComPort.Close;
end;
Ja, das ist wohl etwas komisch von mir programmiert
Nun braucht das Messgerät für jede Anfrage unterschiedlich viel Zeit zum Reagieren, und das Messgerät liefert mir öfters falsche Rückantworten, weil es entweder noch nicht so weit ist oder die Frage längst überfällig ist.
Wie kann man dieses Problem lösen, wann weiß man, wann das Messgerät eine fertige Antwort auf dem seriellen Port bereitgestellt hat?
Vielen Dank für Hilfe und ein frohes Fest
EccoBravo
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]