![]() |
CT-API Chipkarten auslesen
Hallo,
Ich verwende die CT-API ( ![]()
Delphi-Quellcode:
Diese 3 Funktionen liefern beim Aufruf 0 zurück, d.h. laut API: der Funktionsaufruf war erfolgreich.
const
ARRLEN = 4; type PByte = ^Byte; type PByteArr = ^TByteArr; TByteArr = Array[0..ARRLEN] of Byte; type PWord = ^Word; function CT_init(cardnr: Integer; portnr: Integer): Byte; stdcall; external 'ChyCTApiSP.dll'; function CT_data(ctn: Word; dad: PByte; sad: PByte; lenc: Word; command: PByteArr; lenr: PWord; response: PByteArr): Byte; stdcall; external 'ChyCTApiSP.dll'; function CT_close(cardnr: Integer): Byte; stdcall; external 'ChyCTApiSP.dll'; Mein Problem ist nun dass ich nicht weiß wie ich die Daten, welche ich durch folgenden Quellcode bekomme, weiter verarbeiten kann damit ich diese auch nutzen kann.
Delphi-Quellcode:
Response hat nach "Reset ICC" folgende Werte: 106 - 0 - 24 - 0 - 0
procedure TForm1.Button1Click(Sender: TObject);
var ctRes: Byte; ctn: Word; dad: PByte; sad: PByte; lenc: Word; command: PByteArr; lenr: PWord; response: PByteArr; dadOrg: Byte; sadOrg: Byte; commOrg: TByteArr; lenOrg: Word; resOrg: TByteArr; sHelp: String; i: Integer; begin commOrg[0] := $20; { 0x20 } { CLA } commOrg[1] := $12; { 0x12 } { INS } commOrg[2] := $01; { 0x01 } { P1 } commOrg[3] := $01; { 0x01 } { P2 } commOrg[4] := $00; { 0x00 } { L } dadOrg := 1; sadOrg := 2; lenOrg := 100; ctn := 1; dad := @dadOrg; sad := @sadOrg; lenc := ARRLEN + 1; command := @commOrg; lenr := @lenOrg; response := @resOrg; { Initialisieren } ctRes := CT_init(1, 1); if ctRes = 0 then ShowMessage('CARD - initialisiert!!') else ShowMessage('CARD - error: ' + IntToStr(ctRes)); { Reset ICC} ctRes := CT_data(ctn, dad, sad, lenc, command, lenr, response); if ctRes = 0 then ShowMessage('Send - OK') else ShowMessage('Send - ERROR: ' + IntToStr(ctRes)); resOrg := response^; for i := 0 to ARRLEN do sHelp := sHelp + ' - ' + IntToStr(resOrg[i]); ShowMessage('RESPONSE: ' + sHelp + sLineBreak + 'dad: ' + IntToStr(dad^) + sLineBreak + 'sad: ' + IntToStr(sad^) + sLineBreak + 'lenr: ' + IntToStr(lenr^)); { Read Binary } resOrg := response^; sadOrg := 2; dadOrg := 1; lenOrg := SizeOf(response); dad := @dadOrg; sad := @sadOrg; lenr := @lenOrg; commOrg[0] := $00; commOrg[1] := $b0; commOrg[2] := $00; commOrg[3] := $00; commOrg[4] := $00; ctRes := CT_data(ctn, dad, sad, lenc, command, lenr, response); if ctRes = 0 then ShowMessage('Send BINARY - OK') else ShowMessage('Send BINARY - ERROR: ' + IntToStr(ctRes)); resOrg := response^; for i := 0 to ARRLEN do sHelp := sHelp + ' - ' + IntToStr(resOrg[i]); ShowMessage('RESPONSE BINARY: ' + sHelp + sLineBreak + 'dad: ' + IntToStr(dad^) + sLineBreak + 'sad: ' + IntToStr(sad^) + sLineBreak + 'lenr: ' + IntToStr(lenr^)); { Schnittstelle schließen } ctRes := CT_close(1); if ctRes = 0 then ShowMessage('Close - OK') else ShowMessage('Close - ERROR: ' + IntToStr(ctRes)); end; und nach "Read Binary" folgende: 110 - 0 - 24 - 0 - 0 Kann mir jemand sagen wie ich jetzt an die Daten der Karte komme, oder was diese Werte bedeuten? Mfg. pHL |
AW: CT-API Chipkarten auslesen
Die
![]() ![]() ![]() Vllt hilft auch ![]() Oder ![]() ![]() |
AW: CT-API Chipkarten auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
dankeschön, ich habe mich inzwischen auch durchgekämpft und zwar mit folgendem Handbuch. Mfg. |
AW: CT-API Chipkarten auslesen
Fein, wenns funktioniert, gratuliere! Mir ist dieses Handbuch zu speziell für bestimmte Geräte vorgekommen.
|
AW: CT-API Chipkarten auslesen
Hallo,
gibt es eine Lösung zum lesen der KVK und eGK Karten? Wenn ja, hast Du ein Beispiel? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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