Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi AsyncPro in einem exterenen Thread (https://www.delphipraxis.net/76196-asyncpro-einem-exterenen-thread.html)

DelphiManiac 31. Aug 2006 10:08


AsyncPro in einem exterenen Thread
 
Hallo, nutzt zurzeit die AsyncPro Komponente in dem VCL-Thread.

Ich schreibe Daten an die Schnittstelle und warte bis Daten zurückkommen.
Nun habe ich aber das Problem, das mein kompletter VCL-Thread mit warten auf
das Ereignis, dass Daten im Puffer liegen wartet. Ich würde das gerne
auslagern in einen extra Thread, der für mich die Kommunikation übernimmt ohne
im VCL-Thread auf das

Delphi-Quellcode:
procedure TForm3.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
begin
// LeseDaten
end;
Event warten zu müssen.

Ich will also in meinem Haupthread eine Variable, die mir sagt es liegen x Bytes im Puffer.
So dass ich diese Variable pollen kann.

Hoffe ihr wisst was ich meine

Danke schonmal im Vorraus

arnold mueller 31. Aug 2006 14:16

Re: AsyncPro in einem exterenen Thread
 
So richtig habe ich Dein Problem nicht verstanden, aber die Anzahl der Zeichen im Empfangspuffer der Apro Komponente liefert das Property InbufUsed.

Gruß, Arno.

Der_Unwissende 31. Aug 2006 15:04

Re: AsyncPro in einem exterenen Thread
 
Hi,
an sich ist der Weg, den du gehen möchtest imho nicht wirklich schön. Pollen ist hier unnötig und verschwendet immer Rechenzeit. Ich weiß nicht wie es mit der AsynchPro aussieht, aber bei der TComPort Komponente (gibt es auch frei, bei Sourceforge) hast du eine sehr gute RS 232 Kapselung, die ein Event auslöst, wenn Daten im Puffer landen. Hier kannst du dann in diesem Ereignis leicht prüfen, wievoll der Puffer ist. Zudem hast du auch die Möglichkeit auf ein bestimmtes Zeichen zu warten und hier nur auf das auftreten dieses Zeichens im Puffer zu warten (was dann wieder ein Ereignis auslöst). Dies sollte eigentlich einen weiteren Thread unnötig machen und auf jeden Fall kein Pollen benötigen.

Gruß Der Unwissende

DelphiManiac 31. Aug 2006 15:14

Re: AsyncPro in einem exterenen Thread
 
Genau danach habe ich gesucht, dachte die Kompo würde mir nur über das Event die Anzahl der Bytes melden.

So kann ich ja jetzt den
Delphi-Quellcode:
InBuffUsed
pollen bis die Anzahl Bytes da ist, die ich erwarte oder ein Timeout erfolgt!

Danke, manchmal liegt die Lösung so Nahe :o

DelphiManiac 31. Aug 2006 15:15

Re: AsyncPro in einem exterenen Thread
 
Ja aber ansonsten müsste ich ja in meinem Kommunikationsmodul auf ein Ereignis warten.

Weiss nicht wie ich dass am saubersten machen soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 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