Hallo Gemeinde
Ich erweitere schon seit längerem mein Wissen mit dieser Seite. Nun ist es soweit, ich habe selbst eine kleine Frage
Ich baue eine Verbindung zu einem Messschieber über die RS232 Schnittstelle auf. Der Messschieber hat eine Taste "DATA". Mit dieser Taste werden 12 "Char"s an den Computer gesendet. Nun habe ich 2 Probleme. Ich nutze im moment eine OpenSource
Package dass ich über SourceForge gefunden habe (Name: Async Pro). Ich würde lieber die Delphi eigenen Möglichkeiten dazu nutzen(THandle).
Ich bekomme es jedoch damit nicht hin
Habe mir schon ein paar Bsp. Angeschaut. Doch - Kein Ergebnis
Ich hoffe jemand kann mir da helfen..
Ein weiteres Problem ist, dass ich die Daten nicht auf einmal bekomme. Sondern die Komponente AsyncPro hat eine Procedure (OnTrigger..). Die wird 2mal ausgeführt. Beim ersten mal werden 8 Chars gesendet. Direkt darauf noch einmal die restlichen 4.
Nun habe ich das mit einer Not-Lösung hinbekommen. Dennoch erfüllt es nicht seinen Zweck....
Hier mein jetziger Code (Bsp - Zusammengefasst) :
Delphi-Quellcode:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OoMisc, AdPort;
type
TForm1 = class(TForm)
ComPort: TApdComPort;
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ComPortTriggerAvail(CP: TObject; Count: Word);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
i : integer;
loop: boolean;
Result : String;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ComPort.Open := True;
i := 1;
end;
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