Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TComPort auf Daten warten (https://www.delphipraxis.net/148699-tcomport-auf-daten-warten.html)

gruen2 6. Mär 2010 16:41


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?

Klaus01 6. Mär 2010 16:44

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

LargoD 6. Mär 2010 17:38

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

gruen2 6. Mär 2010 17:46

Re: TComPort auf Daten warten
 
Gibt es denn eine Möglichkeit am dem Programm zu sagen des es auf ankommende Daten warten soll?

LargoD 6. Mär 2010 18:06

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

Chemiker 7. Mär 2010 10:55

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.

Link:

Bis bald Chemiker

gruen2 7. Mär 2010 17:59

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:
ComPort.WriteStr('!rkm');
ComPort.ReadStr(km,12);
kmPanel.Caption:=strzuschnitt(km);
ComPort.WriteStr('!rrw!');
ComPort.ReadStr(rw,10);
rwPanel.Caption:=strzuschnitt(rw);
Über den Comport kommen dabei sofort folgende Werte:
Zitat:

!rkm!rrw

thkerkmann 8. Mär 2010 11:16

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

LargoD 8. Mär 2010 11:59

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

gruen2 9. Mär 2010 13:40

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 01:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz