Support für O2Micro OZ776 unter Windows Vista x64?

Bei Problemen / Fragen zu Chipkarten oder Kartenlesern sind Sie hier richtig

Support für O2Micro OZ776 unter Windows Vista x64?

Beitragvon Jtb » Fr 16. Nov 2007, 19:04

Hi,

ich habe ein neues Notebook (Dell Latitude D830) und Dell liefert zwar Treiber für den Smartcard-Reader (O2Micro OZ776) aber in dem Treiberpaket ist keine CT-API DLL :(

Die 32-bit ct32.dll aus dem Treiber für Vista x86 funktioniert leider nicht.
Dell-Support habe ich schon angetriggert, aber ich weiß nicht ob da was rauskommt.

Gibt es die Möglichkeit eine CT-API DLL von woanders zu bekommen? Oder ist die Hersteller-spezifisch?
Jtb
 
Beiträge: 8
Registriert: Mi 22. Nov 2006, 22:12

Beitragvon ALF » Di 20. Nov 2007, 11:33

Hallo,

Sie benötigen in der Regel eine spezifische CT-API-DLL.

Falls Sie keine CT-API für Ihren Leser bekommen, so melden Sie sich bitte über unser Support-Center.
Evtl. können wir Ihnen weiterhelfen.

MfG
ALF
Benutzeravatar
ALF
Site Admin
 
Beiträge: 7627
Registriert: Do 9. Okt 2003, 14:21
Wohnort: Leingarten

Gibt es überhaupt eine CT-API für Vista

Beitragvon ckudritzki » Do 7. Feb 2008, 21:23

Dear all,

in Anlehnung an den vorigen Beitrag, bin ich unter Vista 32-bit nicht in der Lage eine CT-API auf meinem Rechner hinzubasteln, die Alf und meinem Leser gerecht wird. Auch setze ein Dell LAT D630 mit OZ776 ein.

Wenn es für 64-bit eine Lösung gäbe, müsste das für 32-bit fast einfacher sein. Hat jemand von Euch Erfahrung?
Gruß
Carsten
ckudritzki
 
Beiträge: 1
Registriert: Do 7. Feb 2008, 21:17

Beitragvon Jtb » Di 12. Feb 2008, 19:08

Hallo ckudritzki,

ich habe mir gerade testweise wieder ein 32bit System installiert - und der Reader funktionierte auch nicht :(

Irgendwas muss an der ct32.dll nicht stimmen. Die DLL wird als CTAPI erkannt aber bei der Suche nach dem Port kommt kein Ergebnis :(
Jtb
 
Beiträge: 8
Registriert: Mi 22. Nov 2006, 22:12

Beitragvon Markus » Mi 13. Feb 2008, 11:34

Hallo,
ich habe das selbe Problem mit einem Dell D630 unter WinXP 32 Bit.

Die DLL wird auch bei mir als CTAPI erkannt, aber es wird kein Port gefunden.
Markus
 
Beiträge: 5
Registriert: Mi 13. Feb 2008, 11:31

Beitragvon Jtb » Mi 13. Feb 2008, 12:35

Es scheint also generelles Problem mit der CT32.dll zu sein.
Ich schreibe mal eine Support-Mail...
Jtb
 
Beiträge: 8
Registriert: Mi 22. Nov 2006, 22:12

Beitragvon Markus » Do 14. Feb 2008, 10:38

CT_init(0, 0) der ct32.dll behauptet das es erfolgreich war.
Was man CT_data übergeben soll weiß ich aber nicht.
Wenn ich hier noch irgendwas testen soll, mache ich das gerne.

Gruß Markus
Markus
 
Beiträge: 5
Registriert: Mi 13. Feb 2008, 11:31

Beitragvon Jtb » Do 14. Feb 2008, 13:20

Markus hat geschrieben:CT_init(0, 0) der ct32.dll behauptet das es erfolgreich war.
Was man CT_data übergeben soll weiß ich aber nicht.
Wenn ich hier noch irgendwas testen soll, mache ich das gerne.


dann pack ich mal mein Proekt aus Smartcard-Systeme aus:

Code: Alles auswählen
#define CLA      0
#define INS      1
#define P1      2
#define P2      3
#define LC      4

/// Quell- und Zieladressen für Kommandos an der CT-API-Schnittstelle
#define CT      0x01
#define HOST   0x02
#define ICC1   0x00
#define ICC2   0x02
#define ICC3   0x03
#define ICC4   0x04
#define ICC5   0x05
#define ICC6   0x06
#define ICC7   0x07
#define ICC8   0x08
#define ICC9   0x09
#define ICC10   0x0a
#define ICC11   0x0b
#define ICC12   0x0c
#define ICC13   0x0d
#define ICC14   0x0e

IU8 dad, sad;
IU8 cmd[256];
IU8 resp[256];
IU16 i, lenc, lenr;

// CT_INIT


    // REQUEST ICC
   dad =   CT;
   sad =   HOST;
   cmd[CLA] =         0x20;
   cmd[INS] =         0x12;
   cmd[P1] =         0x01;
   cmd[P2] =         0x01;
   cmd[LC] =         0x01;
   cmd[5] =         0x0a; // waiting time
   cmd[5+cmd[LC]] =   0x00;
   lenc =   (IU16)(5 + cmd[LC] + 1);
   lenr =   256;
   printf("Please insert card\n");
   if (CT_data(ctn, &dad, &sad, lenc, cmd, &lenr, resp) != OK) {
      printf("CT_data failed\n");
       return;
   }
    printf("Antwort: ");
    for (i = 0; i < lenr; i++)
        printf("%02X ", resp[i]);
    printf("\n");


Du musst den Code ein wenig überarbeiten ;)


Ansonsten habe ich auch eine Rückmeldung vom Support: Alf Banco v3 soll PS/SC unterstützen - dann braucht man nicht mehr die CTAPI :D
Allerdings ist die Version noch in Entwicklung und es gibt noch keine Beta...
Jtb
 
Beiträge: 8
Registriert: Mi 22. Nov 2006, 22:12

Beitragvon Markus » Do 14. Feb 2008, 19:48

Ich kann als ctn und pn übergeben was ich will,
die Antwort lautet immer 0x00 0x00 0x00.
Auch wenn keine Chipkarte im Lesegerät ist.

Alle Funktionen kehren aber auch immer mit OK zurück.
Irgendwas stimmt mit der Dll nicht, würde ich sagen.
Markus
 
Beiträge: 5
Registriert: Mi 13. Feb 2008, 11:31

Beitragvon Jtb » Fr 15. Feb 2008, 00:00

Markus hat geschrieben:Ich kann als ctn und pn übergeben was ich will,
die Antwort lautet immer 0x00 0x00 0x00.
Auch wenn keine Chipkarte im Lesegerät ist.

Alle Funktionen kehren aber auch immer mit OK zurück.
Irgendwas stimmt mit der Dll nicht, würde ich sagen.


mmh, CT_INIT braucht keine Karte.
Aber vielleicht sollte man sich die dll wirklich mal genauer anschauen..
Jtb
 
Beiträge: 8
Registriert: Mi 22. Nov 2006, 22:12

Beitragvon Markus » Fr 15. Feb 2008, 09:10

Ich habe mich schlecht ausgedrückt.

0x00 0x00 ist die Antwort von CT_data mit den Werten aus deinem Code. Der Aufruf kehrt auch sofort erflogreich zurück, mit und ohne Karte.

CT_init liefert immer OK, egal was für eine pn ich wähle.

Entweder mache ich etwas grundsätzlich falsch, oder die ct32.dll funktioniert einfach nicht richtig.
Code: Alles auswählen
from ctypes import *

ctn = c_ushort(0)
pn = c_ushort(0)

print windll.ct32.CT_init(ctn, pn)

dad = c_ubyte(0x01)
sad = c_ubyte(0x02)

lenc = c_ushort(7)
commandType = c_ushort * 7
command = commandType(
                        0x20,
                        0x12,
                        0x01,
                        0x01,
                        0x01,
                        0x0a, # waiting time
                        0x00
                       )

lenr = c_ushort(256)
responseType = c_ubyte * 256
response = responseType()

print windll.ct32.CT_data(ctn, dad, sad, byref(lenc), command, byref(lenr), response)
for i in range(lenr.value):
    print "0x%02x" % response[i],
print

print windll.ct32.CT_close(ctn)


Das ist der PythonCode mit dem ich teste mit der Ausgabe.

Code: Alles auswählen
0
0
0x00 0x00
0
Markus
 
Beiträge: 5
Registriert: Mi 13. Feb 2008, 11:31

Beitragvon Markus » Mo 18. Feb 2008, 09:43

die Zeile
Code: Alles auswählen
print windll.ct32.CT_data(ctn, dad, sad, byref(lenc), command, byref(lenr), response)

muss
Code: Alles auswählen
print windll.ct32.CT_data(ctn, byref(dad), byref(sad), lenc, command, byref(lenr), response)
heissen.

Die CT-API liefert aber trotzdem kein anderes Ergebnis.
Dafür funktioniert die Datei nun mit einem Reiner SCT pinpad wenn man die dll austauscht.
Markus
 
Beiträge: 5
Registriert: Mi 13. Feb 2008, 11:31


Zurück zu Chipkarten und Lesegeräte

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste