![]() |
ComPort - AsynPro - Empfang aufgeteilt.
Hallo Jungs,
Ich habe mittels AsyncPro ComPort Komponente Daten eingelesen. Das Funktionert auch, leider nur bedingt. Ich bekomme es einfahc nicht hin.Die Daten, wie es auch sein soll, auf einmal kommen. Sondern die mitgelieferte Procedure OnTriggerAvail, wird 2 mal aufgerufen. Ich habe ein Digitalen Messschieber/Messlehre. Auf dem Gerät ist eine Taste "DATA". Diese Sendet Daten über den ComPort. Sobald ich die drücke, führt er 2 mal diese Funktion aus. Beim ersten mal: die ersten 8 char's Beim zweiten mal: die letzen 4 char's Ich Prüfe auf die Längen des einkommenden Strings / Zeichen. Und Setze das dementsprechend zusammen. Ist eine sehr schlechte Lösung.... Vielleicht habt ihr ja eine Idee.
Delphi-Quellcode:
procedure TForm1.ComPortTriggerAvail(CP: TObject; Count: Word);
var I : Word; C : Char; S : String; begin S := ''; for I := 1 to Count do begin C := ComPort.GetChar; case C of #0..#31 : {Don't display} ; else S := S + C; end; end; //Memo1.Lines.Add(IntToStr(length(S))); if (length(S) = 8) then begin Result := S; end; if (length(S) = 4) then begin Result := Result + S; Memo1.Lines.Add(Result); end; end; Gruß, Real-TTX |
Re: ComPort - AsynPro - Empfang aufgeteilt.
Zitat:
ich verwende und kenne AsyncPro nicht (nur Win32 API direkt), aber die Windowsfunktionen für COMx lassen es zu, einige Timeoutwerte einzustellen, so dass man den kompletten String bekommt, wenn dieser ohne grössere Pause gesendet wird und dann eine lange Pause kommt. Sieh doch mal nach, was du als Timing einstellen kannst. Gruss Reinhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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-2025 by Thomas Breitkreuz