Einzelnen Beitrag anzeigen

newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#54

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 20:18
Zitat:
kleiner Tipp?
hier einfach + '$' und gegf. +' ' rausnehmen?
Delphi-Quellcode:
Function Hexit(const s:AnsiString):String;
var
 i:Integer;
begin
 Result := '';
 for I := 1 to Length(s) do Result := Result +'$' +IntToHex(Byte(s[i]),2) +' ';
end;
in #21 hatte ich geschrieben

Zitat:
InterpretInbuffer; // Eine Prozedur die den Puffer auswertet, komplette Nachrichten extrahiert, aus dem Puffer entfernt und verarbeitet
so würde ich es machen ...
das mit den '$' hat schon mal geklappt

InterpretInbuffer meinst du so?

Delphi-Quellcode:
procedure Tfrm_main.InterpretInbuffer;
var
     i:Integer;
     part:AnsiString;
begin
     i := Pos(#10,FInBuffer);
     Memo1.Lines.Add(FInBuffer);
     while i>0 do
        begin
           Part := Copy(FInBuffer,1,i-1);
           FInBuffer := Copy(FInBuffer,i+1,Length(FInBuffer));
           Memo2.Lines.Add(Part);
           i := Pos(#10,FInBuffer);
        end;
end;
und dann so

Delphi-Quellcode:
procedure Tfrm_main.ComPortRxChar(Sender: TObject; Count: Integer);
var
s:AnsiString;
begin

ComPort.ReadStr(s,Count);
FInBuffer := FInBuffer + s; // globale variable
InterPretInbuffer;

end;
Wird aber dann in im Memo1 blos das:

Delphi-Quellcode:
;Ÿ!IRDETO ACS
;Ÿ!IRDETO ACS„Uÿ€m
angezeigt. Kannst du das ein bischen erklären mit den InterPretInbuffer ?


Nachtrag: Hexausgabe hab ich berichtigt, wenns so korrekt ist
Delphi-Quellcode:
procedure Tfrm_main.InterpretInbuffer;
var
     i:Integer;
     part:AnsiString;
begin
     i := Pos(#10,Hexit(FInBuffer));
     Memo1.Lines.Add(Hexit(FInBuffer));
     while i>0 do
        begin
           Part := Copy(Hexit(FInBuffer),1,i-1);
           FInBuffer := Copy(Hexit(FInBuffer),i+1,Length(Hexit(FInBuffer)));
           Memo1.Lines.Add(Part);
           i := Pos(#10,Hexit(FInBuffer));
        end;
end;
Gruß: Holger

[Hobby-Programmierer]

Geändert von newuser01 ( 9. Nov 2011 um 20:31 Uhr)
  Mit Zitat antworten Zitat