Hallo alle zusammen!
Ich versuche mich schon seit geraumer Zeit daran, Daten mit der seriellen Schnittstele zu versenden und zu empfangen.
Dazu habe ich mir SerialNG runtergeladen und die Beispiele dazu angesehen. Unter anderem "SerialNGadvDemo". In diesem Programm sollen alle Funktionen dieser Komponente vorgestellt werden, sodass man es einfach nachmachen kann.
Mein Problem ist, dass ich nicht verstehe, wie die empfangenen Daten ausgelesen werden. Ein Original-Auszug aus dem Programm:
Delphi-Quellcode:
// All receiving is done here
// See how less Lines!
procedure TForm1.SerialPortNG1RxClusterEvent(Sender: TObject);
begin
if SerialPortNG1.NextClusterSize >= 0 then // Data available?
begin
if SerialPortNG1.NextClusterCCError = 0 then // Error during receiveing?
Terminal.Lines.Add(FormatDateTime('"Rec " dd.mm.yy hh:mm:ss" :"', Now))
else
Terminal.Lines.Add(FormatDateTime('"RecX " dd.mm.yy hh:mm:ss" :"', Now));
// Read the data and patch them into the editfield
AddHexString(SerialPortNG1.ReadNextClusterAsString,Terminal.Lines);
end;
end;
Scheint ja wohl ganz einfach zu sein, verstehe es aber trotzdem nicht...
Kann mir jemand erklären, wie das Programm die Empfangsdaten ausließt?
Hier noch der Text der Prozedur "AddHexString" (hat die überhaupt etwas damit zu tun?!):
Delphi-Quellcode:
procedure AddHexString(S : String; Lines : TStrings );
var AddS, HexS, CopyS : String;
i : Integer;
const SLen = 8;
begin
while Length(S) > 0 do
begin
AddS := Copy(S,1,SLen);
HexS := '';
Delete(S,1,SLen);
for i := 1 to SLen do
begin
CopyS := Copy(AddS,i,1);
if CopyS <> '' then
HexS := HexS + ' ' + Format('%2.2x',[Byte(CopyS[1])]) //
else
HexS := HexS + ' ';
end;
while Length(AddS) < SLen do
AddS := AddS + ' ';
for i := 1 to SLen do
case AddS[i] of
#0..#31 : AddS[i] := '.';
#127 : AddS[i] := '.';
end;
Lines.Add(HexS+' : '+AddS);
end;
end;
Danke schonmal für eure Hilfe!