Seite 1 von 1

Support für O2Micro OZ776 unter Windows Vista x64?

Verfasst: Fr 16. Nov 2007, 18:04
von Jtb
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?

Verfasst: Di 20. Nov 2007, 10:33
von ALF
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

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

Verfasst: Do 7. Feb 2008, 20:23
von ckudritzki
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

Verfasst: Di 12. Feb 2008, 18:08
von Jtb
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 :(

Verfasst: Mi 13. Feb 2008, 10:34
von Markus
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.

Verfasst: Mi 13. Feb 2008, 11:35
von Jtb
Es scheint also generelles Problem mit der CT32.dll zu sein.
Ich schreibe mal eine Support-Mail...

Verfasst: Do 14. Feb 2008, 09:38
von Markus
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

Verfasst: Do 14. Feb 2008, 12:20
von Jtb
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...

Verfasst: Do 14. Feb 2008, 18:48
von Markus
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.

Verfasst: Do 14. Feb 2008, 23:00
von Jtb
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..

Verfasst: Fr 15. Feb 2008, 08:10
von Markus
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

Verfasst: Mo 18. Feb 2008, 08:43
von Markus
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.