AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Smartcard auslesen, Kommandos senden
Thema durchsuchen
Ansicht
Themen-Optionen

Smartcard auslesen, Kommandos senden

Ein Thema von newuser01 · begonnen am 8. Nov 2011 · letzter Beitrag vom 9. Nov 2011
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.153 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 15:32
welcher Leser (COM oder USB) und welcher Karten Type (Synchron oder Ascychron)

am Besten via PC/SC - Windows Funktionen mit der Karte reden
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 15:34
welcher Leser (COM oder USB) und welcher Karten Type (Synchron oder Ascychron)

am Besten via PC/SC - Windows Funktionen mit der Karte reden
PC/SC hatte ich auf der ersten Seite schon vorgeschlagen. Scheinbar soll/muss es unbedingt über den COM-Port gehen. Warum auch immer.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.153 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 15:37
alte Telfonwertkarten und COM Port mag noch OK sein, bei den Controller Karten (Geldkarte, SIM, Ausweis, ....) exterm viel Arbeit die Protokolle(T=1, T=0, ....) zu implementieren
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#4

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 15:52
welcher Leser (COM oder USB) und welcher Karten Type (Synchron oder Ascychron)

am Besten via PC/SC - Windows Funktionen mit der Karte reden

Reader ist ein Cas3, angeschlossen (Strom USB) + Serielles Kabel an Com1. Über "Cas Interface Studio" kann ich dann auf PHOENIX Modus 6 MHz einstellen, was ich ja bei der Karte auch brauch. (Synchron oder Ascychron) kann ich nicht beantworten, ist ne alte S02 Karte

ATR: 3B 9F 21 0E 49 52 44 45 54 4F 20 41 43 53 03 84 55 FF 80 6D

[;.!.IRDETO ACS..U..m]
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#5

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 18:04
@Bummi

mit:

Delphi-Quellcode:
procedure Tfrm_main.btn_readcardClick(Sender: TObject);
begin

ComPort.Port := 'COM2';
ComPort.BaudRate := br9600;
ComPort.DataBits := dbEight;
ComPort.Parity.Bits := prEven;
ComPort.StopBits := sbOneStopBit;

//Kartenreset
ComPort.FlowControl.ControlRTS := rtsEnable;
ComPort.FlowControl.ControlRTS := rtsDisable;
ComPort.FlowControl.ControlDTR := dtrEnable;
ComPort.FlowControl.ControlDTR := dtrDisable;
end;

und dem:

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

ComPort.ReadStr(s,Count);
FInBuffer := FInBuffer + sEmpfangen;
e_atr.Text := Hexit(FInBuffer);
end;

bekomm ich schon mal den richtigen

ATR: $3B $9F $21 $0E $49 $52 $44 $45 $54 $4F $20 $41 $43 $53 $03 $84 $55 $FF $80 $6D


Allerdings stören mich noch die $ Zeichen in der Ausgabe
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 18:08
Dann bau sie aus ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
newuser01

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

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 18:50
Dann bau sie aus ...
kleiner Tipp?

Und zwei mal hinternander erst atr und dann serial übergeben geht nicht in ComPortRxChar. Wie kann ich das realisieren? Kann ich nicht ComPort.ReadStr im Button verwenden und erst das eine zb. ATR dann das andere zb. Serial ausgeben? usw.

Delphi-Quellcode:

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

ComPort.ReadStr(s,Count);
FInBuffer := FInBuffer + s; // globale variable
e_serial.Text := Hexit(FInBuffer);
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 18:56
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 ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 30. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#9

AW: Smartcard auslesen, Kommandos senden

  Alt 9. Nov 2011, 19: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 19:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 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