Einzelnen Beitrag anzeigen

Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#1

Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 11:47
Hallo !
Ich arbeite derzeit an einem Programm, mit dem ich KVKs und eGKs auslesen muss.
Von der Möglichkeit PC/SC verwenden zu können und somit komfortabel auf die Komponenten von Nobbi zurückgreifen zu können habe ich mich a.G. eines früheren Beitrags (http://www.delphipraxis.net/156839-a...els-pc-sc.html) bereits verabschieded und verwende daher die CT-API.

Derzeitiges Testgerät : Cherry 2052MKT+
CT-API : ctpcsc32kv.dll (Ist trotz "pcsc" im Namen lt. Cherry die korrekte CT-API-DLL)

Die 3 Funktionen der CTAPI binde ich dynamisch ein als :
Delphi-Quellcode:
   
  Type
   TFNCT_init = function(Ctn:Word; PN:Word):ShortInt;StdCall;
   TFNCT_data = function(Ctn:Word; Dad:Byte; SAD:Byte; Lc:Word; Cmd:Pointer; Lr:Word; Rsp:Pointer):ShortInt;StdCall;
   TFNCT_close = function(Ctn:Word):ShortInt;StdCall;
  Var
   CT_Init : TFNCT_Init;
   CT_Data : TFNCT_Data;
   CT_Close : TFNCT_Close;
Dies funktioniert soweit auch. Sowohl CT_Init, als auch CT_Close geben 0=OK zurück.
CT_Data bekomme ich aber einfach nicht zum laufen.

Delphi-Quellcode:
function tKVKReader.ResetCT: ShortInt; {Aufruf aus anderer Funktion zwischen CT_Init und CT_Close ; CTN global def.}
Var command: Array of Byte;
    response: Array of Byte;
    DAD,SAD : Byte;
    LenRes, LenCmd : Word;
begin
 SetLength(Command,5);
 command[0]:=$20;
 command[1]:=$11;
 command[2]:=$00;
 command[3]:=$00;
 command[4]:=$00;

 SetLength(Response,256);

 LenRes := Length(Response);
 LenCmd := Length(Command);

 DAD := $01;
 SAD := $02;

 Result := CT_Data(Ctn,DAD,SAD,LenCmd,Pointer(Command),LenRes,Pointer(response));
 end;
Ich erhalte entweder einen Zugriffsfehler in der DLL oder den Rückgabewert -1="Fehlerhafter Parameter oder Wert",je nachdem, ob ich für DAD den Wert "1" oder "0" setze...

Irgendwie trete ich hier auf der Stelle. Hat jmd. Erfahrung mit der CT-API ?

Gruß
Guido R.
  Mit Zitat antworten Zitat