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 Serielle Schnittstelle pollen (https://www.delphipraxis.net/75746-serielle-schnittstelle-pollen.html)

DelphiManiac 24. Aug 2006 12:04


Serielle Schnittstelle pollen
 
Hallo,

ja ich weiss das Thema 'RS232' gibt es schon ein paar mal, aber zu meiner Frage gibt es dort leider keine Lösung.
Also bitte nicht schlagen!! :oops:

Ich habe ein Gerät mit dem ich sowohl über USB als auch über RS232 kommunizieren muss.
Die Kommunikation erfolgt über eine DLL des Hersteller FTDI .
Diese klappt alles wunderbar.
Ich habe eine asynchrone Übertragung. --> Dass heißt ich frage Daten an und bekomme eine Antwort.

Ich muss nun folgendes machen :
1. Datenanfragen
2. Schnittstelle pollen bis erwartete Anzahl Bytes im Buffer, wenn nicht, nach einer bestimmten Anzahl Versuchen abbrechen.
Dass klappt auch wunderbar. Ich habe bei USB eine Funktion zur Abfrage der am Port liegenden Bytes.
Ich kann also folgendes machen:

Delphi-Quellcode:
  repeat      {Pollen des USB-Ports}
    Sleep(1);
    QBytes:=Get_QBytes(1); // Bytes am Port
    inc(iPolling);
  until (QBytes =7) or (iPolling >100); 7 Bytes erwartet
3. Dann kann ich die Bytes vom Port lesen.


Ich habe alles im VCL-Thread.

Würde gerne (die gesamte Kommunikation) in einen externen Thread auslagern.

Nunja.

Nun zum Thema,

ich nutzte die AsyncPro Komponente.
Hier gibt es dass Ereignis:
Delphi-Quellcode:
ApdComPort1TriggerAvail(CP: TObject; Count: Word);
Mein Problem nun ich will den Port abfragen können und nicht auf ein Ereignis warten müssen, da ich sonst bei einem
Thread(dem VCL-Thread) in Teufels Küche komme.


Vielleicht könnt ihr mir helfen
Gracias...

DelphiManiac 30. Aug 2006 14:42

Re: Serielle Schnittstelle pollen
 
Kann mir keiner helfen???

arnold mueller 30. Aug 2006 22:51

Re: Serielle Schnittstelle pollen
 
Hallo,

mit Apro kannst Du grundsätzlich mit ApdComPort1.GetChar ein Zeichen aus der Schnittstelle lesen. Allerdings habe ich damit schlechte Erfahrungen im Zusammenhang mit VCL Threads gemacht. Insbesondere auf Hyper-Threading Maschinen ist der interne Puffer der Apro Komponente durcheinander gekommen, sodass Zeichen doppelt (und dreifach) vorkamen.

Gruss,
Arno


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