Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Serielle Schnittstelle abfragen
adina83 - Fr 30.06.06 16:11
Titel: Serielle Schnittstelle abfragen
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. |
digi_c - Mo 03.07.06 12:47
Kannst du das nicht nacheinander weg in einen MemoryStream schreiben und von diesem wieder auslesen? Streams hatten irgendwo eine Funktion der Ereignis mit dem Sie erst nach einem bestimmten Zeichnkette zu lesen anfingen...
adina83 - Mo 03.07.06 16:29
Versteh ich nicht ganz. Die Zeichenkette die zurück gesendet wird hat eine unbestimmte Länge und leider kein Abschlusszeichen auf das ich benachrichtigt werden kann.
Welche Vorteile hätte ich bei Verwendung eines Streams?
digi_c - Di 04.07.06 08:11
Ach schade ich hatte gedacht, dass du ein Signal kriegst so ACKNOWLEDGE oder so. Ne dann bringen dich Streams auch nicht weiter :oops:
adina83 - Do 13.07.06 17:45
Ich hab jetzt auf Asynch32 zurückgegriffen. Damit gabs keine Probleme.
Besten Dank an alle die mir geholfen haben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!