AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CT - Api / Chipkarten

Ein Thema von skullcrusher · begonnen am 22. Okt 2003 · letzter Beitrag vom 28. Okt 2003
Antwort Antwort
Seite 2 von 3     12 3      
skullcrusher

Registriert seit: 22. Okt 2003
Ort: Sulzheim
56 Beiträge
 
Delphi 8 Architect
 
#11

Re: CT - Api / Chipkarten

  Alt 24. Okt 2003, 13:06
Schade,

aber trotzdem vielen Dank für die Hilfestellung.
Vielleicht bin ich auch einfach zu blöd dafür.
Es ist warscheinlich irgendwas total einfaches......

So,Also :
irgendjemand da draussen der jemanden kennt der einen kennt
der schon mal mit der CT-Api und Delphi gearbeitet hat ?

Das wäre toll......

Stephan
  Mit Zitat antworten Zitat
PeterRettig

Registriert seit: 4. Jun 2003
Ort: Schleiz
65 Beiträge
 
Delphi 4 Client/Server
 
#12

Re: CT - Api / Chipkarten

  Alt 24. Okt 2003, 13:41
Ich habe mal in die CT-API geschaut und da ist mir aufgefallen, dass sowohl
command als auch response als Variablentyp iu8 haben, und das ja eigentlich
nicht direkt dem Typ Pointer entspricht!?

Peter
  Mit Zitat antworten Zitat
skullcrusher

Registriert seit: 22. Okt 2003
Ort: Sulzheim
56 Beiträge
 
Delphi 8 Architect
 
#13

Re: CT - Api / Chipkarten

  Alt 24. Okt 2003, 14:08
Hallo Peter,

hm, bei mir in der Beschreibung der CT-Api steht
command : Referenzadresse eines Feldes mit Elementen vom Typ IU8.
Das Gleiche bei response.
Wo hast Du das gefunden ?
Vielleicht habe ich ja eine falsche Doku.....
Obwohl, ich sehe gerade in der Beschreibung direkt vom Hersteller
des Readers steht:
valid memory adress of field variable holding the chipcard Terminal command.

Stephan
  Mit Zitat antworten Zitat
PeterRettig

Registriert seit: 4. Jun 2003
Ort: Schleiz
65 Beiträge
 
Delphi 4 Client/Server
 
#14

Re: CT - Api / Chipkarten

  Alt 24. Okt 2003, 15:21
Ich habe gerade gesehen, dass das je nach Beschreibung etwas
unterschiedlich ausfällt! Aber ein Blick in die Ctapi.h bringt
für mich endgültige Verwirrung, denn da steht:

char MSWIN_API CT_data (unsigned short ctn, unsigned char * dad,
unsigned char * sad, unsigned short lenc, unsigned char * command,
unsigned short * lenr, unsigned char * response );

Und als Beschreibung:
Input Paramter:
'dad' = Pointer / memory address of variable holding
the "Destination ADdress".
( pointer to "IU8" ("integer unsigned, 8 bit") )
MUST NOT BE 'NULL'!
'sad' = Pointer / memory address of vatiable holding
the "Source ADdress".
( pointer to "IU8" ("integer unsigned, 8 bit") )
MUST NOT BE 'NULL'!
'lenr' = Pointer / memory address of variable holding
the "LENgth Response".
Length of 'reponse'-buffer in bytes.
( pointer to "IU16" ("integer unsigned,
16 bit") )
MUST NOT BE 'NULL'!
u.s.w.
Das heißt also dad, sad, lenr sind auch Pointer auf einen iu8 oder iu16
Typ!? Leider bin ich des Visual Basic nicht mächtig genug um das an dem
Beispielprogramm abzuchecken, aber die Zeile:

Private Declare Function CT_data Lib "CTORG32.DLL" Alias "CTDEORGT1_data" ( _
ByVal ctn As Integer, dad As Byte, sad As Byte, ByVal lenc As Integer, _
command As Byte, lenr As Integer, response As Byte) As Byte

sieht meiner Ansicht nach auch danach aus!

Peter
  Mit Zitat antworten Zitat
skullcrusher

Registriert seit: 22. Okt 2003
Ort: Sulzheim
56 Beiträge
 
Delphi 8 Architect
 
#15

Re: CT - Api / Chipkarten

  Alt 25. Okt 2003, 13:43
Hm,

das wäre natürlich ein Ding.
Bei mir in der Beschreibung steht definitiv drin das diese Angaben
keine Pointer sind.
Den Header habe ich mir nicht angeschaut, weil ich in den Sprachen sowieso
nicht so fit bin.
Ich werde es aber heute abend mal ausprobieren.
Könnte natürlich die Lösung sein. Würde die EAccessviolation erklären.

Falls es das ist hast Du was bei mir gut !!!!

Stephan
  Mit Zitat antworten Zitat
skullcrusher

Registriert seit: 22. Okt 2003
Ort: Sulzheim
56 Beiträge
 
Delphi 8 Architect
 
#16

Re: CT - Api / Chipkarten

  Alt 26. Okt 2003, 21:55
Ja,

was soll ich sagen, es sieht wirklich so aus, als ob da meine Beschreibung
was verschweigt.
Nachdem ich mir den header genau angesehen habe muss ich Dir absolut Recht
geben, sowohl dad als auch sad und lenr sind wohl pointer.
Also, das alles flux nach bestem Wissen und Gewissen umgesetzt und
siehe da: Keine EAccessviolation mehr !
Aber es funzt immer noch nicht.
Jetzt bekomme ich als Rückmeldung von 65585.
Als letzte Bitte an alle hier noch einmal über die Pointerdefinitionen
zu schauen, da ich dort echt absoluter Anfänger bin:
Delphi-Quellcode:
// Einbinden der Dll Funktion CT_data
function CT_data(ctn:word;dad:pointer;sad:pointer;lenc:word;command:pointer;lenr:pointer;response:pointer):word;stdcall;external 'CTORG32.DLL';
procedure TForm1.Button3Click(Sender: TObject);
var
daten:kdaten;
rueckgabe:word;
sad,dad:byte;
lenr:word;
commando:array of byte;
speicher:array of byte;
begin
// Select file legt die zu empfangende Datensection fest !
setlength(speicher,22);
setlength(commando,28);
commando[0]:=$00;
commando[1]:=$A4;
commando[2]:=$00;
commando[3]:=$88;
commando[4]:=$02;
commando[5]:=$3F;
commando[6]:=$00;
dad:=02;
sad:=01;
lenr:=28;
rueckgabe:=CT_data(1,@dad,@sad,length(commando),@commando[0],@lenr,@speicher[0]);
showmessage(inttostr(rueckgabe));
end;
Ist das alles logisch ?

Danke und versprochen, ich werde euch dann nicht mehr nerven.
Werde dann alleine weiter kämpfen.

Gruß,

Stephan
  Mit Zitat antworten Zitat
PeterRettig

Registriert seit: 4. Jun 2003
Ort: Schleiz
65 Beiträge
 
Delphi 4 Client/Server
 
#17

Re: CT - Api / Chipkarten

  Alt 27. Okt 2003, 09:03
Hallo Stephan,

der Rückgabewert ist nicht word sondern shortint!
Und wenn ich mich recht erinnere, solltest du dann
statt 255 den Rückgabewert 0 (OK) bekommen.

Peter
  Mit Zitat antworten Zitat
Colonel Chris

Registriert seit: 27. Okt 2003
7 Beiträge
 
#18

Re: CT - Api / Chipkarten

  Alt 27. Okt 2003, 17:28
Ich hatte das Problem auch. Hast du auch alles mit stdcall aufgerufen? Auf jeden Fall hatte ich ne Zeit lang nur Exceptions. Mein Ansatz war, alles dynamisch aufzurufen und ein simples Exception Handling drüber zu stülpen. Ach, und übrigens: Du darfst die ctapi.dll NICHT UNLOADEN. Mache dein FreeLibrary in den finally-Term der Hauptprozedur! Denn intern wird die ctn gelöscht, sobald du die dll befreist. Dann greift der Aufruf immer ins Leere.

Ich hätte ein paar fertige Stücke Code zu dem Thema (Karte auslesen etc. funktioniert reibungslos), jedoch würde ich vorher gerne erfahren, worin dein Projekt besteht.

Grüße, Chris
  Mit Zitat antworten Zitat
skullcrusher

Registriert seit: 22. Okt 2003
Ort: Sulzheim
56 Beiträge
 
Delphi 8 Architect
 
#19

Re: CT - Api / Chipkarten

  Alt 27. Okt 2003, 22:04
Hallo Chris,

na da ist ja mal einer der das schon mal unter Delphi gemacht hat.
Ich habe schon tagelang das Netz durchforstet nach Delphi / CT-Api
Kombinationen aber wenn gibt es die Infos nur in VB oder für Linux und
das kann ich alles nicht so gut portieren.
Mit stdcall habe ich schon alles aufgerufen, das stimmt wohl.
Das Problem beschränkt sich auf die Funktion CT_data.
CT_init und CT_close liefert jeweils die 0 als Rückgabewert.
Hm, klar an einer Hilfe in Form von Code wäre ich natürlich sehr
interessiert. Und verständlich ist, das Du vorher wissen willst um was
es geht, am Ende gibst Du Deinen Code her und ein anderer verdient sich damit
eine goldene Nase:
Ein Bekannter hat ein Programm für Ärzte entwickelt.
Da werden jetzt überall diese Chipcardreader eingesetzt. Er braucht die Daten
für sein Programm und fragte mich, ob ich da nicht was programmieren könnte.
Weil es mich brennend interessiert hat habe ich ja gesagt.
Leider bin ich in Sachen Pointer, Dll Aufrufe etc ziemlich unerfahren.
Ich habe mich da jetzt schon ganz schön reingelesen, aber an manchen Stellen
happert es einfach noch ein wenig mit dem Verständnis.
Geld: Es wird wohl dafür nicht viel Geld geben.
Ich hatte mir sowieso schon überlegt, der Community hier was zu spenden (wenn das geht)
falls ich das Problem mit Hilfe von Delphipraxis gelöst bekomme. Man kann ja nicht
immer nur einfach den Honig saugen und dann nichts zurückgeben.
(Ich weiss garnicht ob das geht, aber Geld für neue Hardware oder anderes wird wohl immer
gebraucht)
Wenn Du damit leben kannst kommen wir da zusammen. Das wird dann ganz offiziell gemacht.
Aber wenn Du sagst "ich hätte auch gerne was davon" ist das auch kein Problem.
Nur im Moment kann ich Dir noch nicht sagen ob und wenn ja wie viel es dafür gibt.
Es kann sein, daß ich da was fertig habe und mein Bekannter dann sagt " Ne hat mir
zu lange gedauert, habe es wo anders machen lassen".
Wie gesagt, ich mache es in erster Linie aus Interesse an der Technik und um einfach
Erfahrung zu sammeln.

Bis dann,

Stephan

PS: Code wäre richtig cool !!!
  Mit Zitat antworten Zitat
Colonel Chris

Registriert seit: 27. Okt 2003
7 Beiträge
 
#20

Re: CT - Api / Chipkarten

  Alt 27. Okt 2003, 22:47
Also gut, mein Code ist auch noch nicht fertig, ich bin momentan dabei, den ATR auszuwerten und dann daraus dynamisch auf das korrekte Ausleseverfahren (bzw. Parserfunktion) für die Karte zu schließen. (ASN.1 oder Festform).

Ich kann dir jedoch die korrekten Header Files als .pas geben. Die sind eh' öffentlich und unterliegen der GPL. OK, die C-Version unterliegt der GPL, aber wir woll'n mal nich so sein. Das eigentliche Programm kann ich dir aber nicht geben, da ich ebenfalls für einen Kumpel ein kommerzielles Plugin schreibe. Beachte, dass ich eine im Ordner vorhandene ctorg32.dll voraussetze. Somit ist das Programm oberflächlich nur zu Orga kompatibel. Die eigentlichen Funktionen sind jedoch alle generisch, so dass eine Änderung des Dateinams genügen sollte. Ich poste hier mal einen Teil des Codes, den Rest gibts wenn du mir ne PN mit deiner Mailaddi schickst.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 17:41 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