AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Cardreader auslesen mit CT-API
Thema durchsuchen
Ansicht
Themen-Optionen

Cardreader auslesen mit CT-API

Ein Thema von Guido R. · begonnen am 10. Jun 2011 · letzter Beitrag vom 16. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 13:10
Versuch es mal mit Pointer(command[0]), ich meine da war etwas....?
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

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

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 13:24
Hallo K-H!

Geringfügige Verbesserung der Situation : Mit Deiner Änderung kommt immer -1="Fehlerhafter Parameter oder Wert" heraus. - Der Zugriffsfehler ist damit weg.


Gruß
Guido R.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 13:40
Hallo,

versuche mal Pointer(response[0])

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 13:58
Hallo,

versuche mal Pointer(response[0])

Grüße
Klaus
Meinst Du das ist notwendig?
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 14:05
Hallo,

versuche mal Pointer(response[0])

Grüße
Klaus
Meinst Du das ist notwendig?
Gruß
K-H
.. ich weiß es nicht, deshalb habe ich auch versuche mal geschrieben.

Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

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

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 14:07
Ist es ! - Ohne ist der Zugriffsfehler wieder da !

Gruß
Guido R.
"Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung" (Edsger W. Dijkstra)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 17:48
Hallo,

wie ist denn CT_Data definiert

Zitat:
Result := CT_Data(Ctn,DAD,SAD,LenCmd,Pointer(Command),LenRes ,Pointer(response));
Was wäre es mit Result := CT_Data(Ctn,DAD,SAD,LenCmd,@Command[0],LenRes,@response[0]));


Heiko
Heiko
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 19:18
Hallo,

wie ist denn CT_Data definiert
Heiko
siehe Post #1


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;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Cardreader auslesen mit CT-API

  Alt 10. Jun 2011, 20:58
Laut diesem Link ist für die eGK eine mindest Firmware Version notwendig. Hast Du diese Firmware?

Hier ist ein Beispiel in VB zu finden.

In C sähe die Funktion so aus: typedef char (*CT_DATA) (USHORT, UCHAR*, UCHAR*, USHORT, UCHAR*, USHORT*, CHAR*);
Quelle: Ein QT Forum

Grüße
Klaus
Klaus

Geändert von Klaus01 (10. Jun 2011 um 21:28 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz