Ich möchte die Schnittstelle eines Messgerätes abfragen und benutze dafür die Programmiervorschläge von SchelmvomElm (Verfasst am: Do 03.02.05 17:26
Titel: Serielle Schnittstelle ansprechen und pollen)
Zur Signalisierung der Daten, die vom Messgerät zurückkommen benutze ich einen Thread. Wird dieser ausgelöst so wird das Bit serial_int gesetzt und dann lese ich die Daten von der Schnittstelle.
Nun kommt es aber vor das sehr viele Daten zurückgesendet werden und ich dann nur den Anfang lese. Wie kann ich es erreichen das mein Bit serial_int erst gesetzt wird nachdem alle Daten gesendet wurden. Eine Pause möchte ich nicht einfügen da sich diese auch auf kurze Nachrichten auswirken würde. Für Anregungen wäre ich sehr dankbar
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TSerialThread.Execute; var SerialEvent, WaitResult, BytesRead: Cardinal; begin SetCommMask(PortHandle,EV_RXFLAG);
if not WaitCommEvent(PortHandle,SerialEvent,@StatusOs) then begin if (GetLastError = ERROR_IO_PENDING) then begin WaitResult := WaitForSingleObject(StatusOs.hEvent,INFINITE); case WaitResult of WAIT_OBJECT_0: begin if GetOverlappedResult(PortHandle,StatusOs,BytesRead,false) then serial_int:=true; end; end; end; end else serial_int:=true; end; end. |