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.