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
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.
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.