![]() |
TComPort auf Daten warten
Hallo,
ich möchte Daten über den Comport empfangen nachdem ich Sie vorher angefragt habe, um am Comport zu lauschen möchte ich da Event OnRxChar verwenden, jedoch habe ich noch nicht herausgefunden, wie ich dieses Verwenden kann. Kann mir jemand weiterhelfen? |
Re: TComPort auf Daten warten
Guten Abend,
vielleicht wäre es hilfreich und nützlich um einige Antworten zu bekommen, wenn Du uns mitteilen könntest welche Komponente du benutzt. steht im Titel - blind wie ich bin Grüße Klaus |
Re: TComPort auf Daten warten
Nicht warten, sondern Eventhandler benutzen.
Im Event OnRxChar erfährst Du, wieviele Zeichen angekommen sind. Die kannst Du dann, im Eventhandler, mit ReadStr abholen und weiter verarbeiten. Gruß Erich |
Re: TComPort auf Daten warten
Gibt es denn eine Möglichkeit am dem Programm zu sagen des es auf ankommende Daten warten soll?
|
Re: TComPort auf Daten warten
Wozu?
Wenn es was anderes zu tun gibt, tu es, wenn nicht, lass es. Das Event passiert, wenn ein oder mehrere Zeichen angekommen sind. Wenn es denn unbedingt sein soll, dass Du warten willst, kannst Du ReadStr aufrufen. Es kehrt erst dann zurück, wenn die angeforderte Anzahl von Zeichen angekommen ist. Dann geht aber in der Zeit nichts anderes. Oder Du fragst in einer Schleife InputCount ab, und holst die Daten dann mit ReadStr ab. Um das Weiterleben von Windows musst Du dich dann selbst kümmern (ProcessMessages). Gruß Erich |
Re: TComPort auf Daten warten
Hallo gruen2,
ist TComPort die Komponente von MS? Wenn ja, würde ich an Deiner Stelle auf Async Prof. umsteigen, Komponente ist kostenlos und es gibt eine Umfangreiche Hilfe dabei. ![]() Bis bald Chemiker |
Re: TComPort auf Daten warten
Hallo,
Danke schonmal für die schnellen Antworten! Nein die Komponente ist nicht von MS. Zu LargoD: Ich habe versucht es mit ReadStr zu machen, jedoch funktioniert es irgendwie nicht, er wartet nicht sondern sendet gleich die nächsten Daten. Hier ein Code Beispiel:
Delphi-Quellcode:
Über den Comport kommen dabei sofort folgende Werte:
ComPort.WriteStr('!rkm');
ComPort.ReadStr(km,12); kmPanel.Caption:=strzuschnitt(km); ComPort.WriteStr('!rrw!'); ComPort.ReadStr(rw,10); rwPanel.Caption:=strzuschnitt(rw); Zitat:
|
Re: TComPort auf Daten warten
Kann es sein, dass du das zurückliest, was du hingeschickt hast ?
Erzeugt das Device am Ende der Leitung ein Echo ? Hast Du das mit einem Terminalprogramm mal überprüft ? Gruss |
Re: TComPort auf Daten warten
Das Gerät am anderen Ende der Leitung sendet wohl die Kommandos als Echo zurück.
Dennoch sollte ReadStr erst dann zurückkehren, wenn die angeforderte Anzahl von Zeichen empfangen wurde. Könnte am Timeout liegen, stell das mal ab. (Auf Null setzen) Gruß Erich |
Re: TComPort auf Daten warten
Vielen Dank, es klappt jetzt, es lag am Timeout, der war anscheinend auf -1 voreingestellt...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz