Support für O2Micro OZ776 unter Windows Vista x64?
Support für O2Micro OZ776 unter Windows Vista x64?
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?
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?
-
- Beiträge: 1
- Registriert: Do 7. Feb 2008, 20:17
Gibt es überhaupt eine CT-API für Vista
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
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
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...
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..
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.
Das ist der PythonCode mit dem ich teste mit der Ausgabe.
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
die Zeile
muss 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.
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)
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.