| |

Fortgeschrittene Programmierunglesen von TOWITOKO Chipdrive | |  | Autor: martin_d | Datum: 27.06.02 13:20 |
| Ich habe folgendes Problem: Ich kann mit der angegebenen API-Funktion nicht von der Karte lesen. Die Funktion wird wie folgt deklariert
Declare Function SCardComand Lib "SCARD32.DLL" (Handle As Long,
ByVal Cmd As String, CmdLen As Long,
ByVal DataIn As String, DataInLen As Long,
ByVal DataOut As String, DataOutLen As Long
) As Long
Wobei folgende Technik im Hintergrund steht:
Response = SCardComand (Handle,
Cmd, CmdLen,
DataIn, DataInLen,
DataOut, DataOutLen
);
LPINT Handle /* Zeiger auf einen 32 Bit signed integer */
LPSTR Cmd /* Zeiger auf einen null terminierten String */
LPINT CmdLen /* Zeiger auf einen 32 Bit signed integer */
LPSTR DataIn /* Zeiger auf ein array of byte oder einen String */
LPINT DataInLen /* Zeiger auf einen 32 Bit signed integer */
LPSTR DataOut /* Zeiger auf ein array of byte oder einen String */
LPINT DataOutLen /* Zeiger auf einen 32 Bit signed integer */
INT Response /* 32 Bit signed integer */
Handle Falls mehrere Instanzen der DLL in einer Applikation benötigt werden, kann
dieses Handle benutzt werden, um entsprechende Objektinstanzen zu unterscheiden.
Der Wert kann auf null gesetzt werden, wenn nur eine Instanz benötigt
wird, der SCardServer übernimmt die Zuordnung dann über das Thread-
bzw. Taskhandle Ihrer Anwendung.
Cmd - SCardServer Kommando (nullterminierter String).
CmdLen - Bei verschlüsselter Kommunikation mit dem SCardServer die Länge des Kommandostrings,
bei unverschlüsselter Kommunikation muß Null übergeben werden.
DataIn - Zeiger auf den Puffer mit den Eingabedaten.
DataInLen - Länge der Eingabedaten.
DataOut - Zeiger auf den Puffer für die Ausgabedaten.
DataOutLen - Maximale Länge der Rückgabedaten, wird auf die tatsächliche Länge der Rückgabedaten
gesetzt.
Response - globaler Returncode, bei erfolgreicher Ausführung wird Null zurückgegeben.
Jetzt ist zum beispiel folgender befehl möglich, um die LED am Gerät anzuschalten:
Kommando: Str( "Device,SetLed,"" )
DataIn: nil
DataOut: nil
maximal 8 Zeichen, wobei folgende Farbzuordnung gilt:
"0" = aus, "1" = rot, "2" = grün, "3" = gelb.
Beispiel1: langsames rotes Blinken.
Kommando: Str( "Device,SetLed,0011" )
DataIn: nil
DataOut: nil
Beispiel2: grünes Dauersignal.
Kommando: Str( "Device,SetLed,2" )
DataIn: nil
DataOut: nil
Beispiel3: rot grün gelb blinken im Wechsel.
Kommando: Str( "Device,SetLed,123" )
DataIn: nil
DataOut: nil
Das funktioniert noch ganz gut. Aber zum eigentlichen Problem: Als befehl zum lesen der daten wird das angegeben:
Kommando: Str( "Card,MemRead,," )
DataIn: nil
DataOut:
Offset, ab dem gelesen werden soll (0 = erstes Byte des Kartenspeichers) .
Anzahl der zu lesenden Bytes.
gelesende Daten.
Beispiel: 21 Zeichen ab dem Offset 16 lesen.
Kommando: Str( "Card,MemRead,16,21" )
DataIn: nil
DataOut: 0x48 0x65 0x6C 0x6C 0x6F 0x20 0x53 0x6D 0x61 0x72
0x74 0x43 0x61 0x72 0x64 0x20 0x57 0x6F 0x72 0x6C
0x64 (String "Hello SmartCard World")
Demnach müsste ja die Response der Funktion "0" sein (ist auch so) und in "DataOut" der Karteninhalt ausgegeben werden. Nur wie komme ich da ran? Selbst wenn ich "DataOut" mit call by reference angebe, wir dort nichts verändert.
Ich brauch wirklich dringend (Zeitdruck) hilfe!!!
THX martin_d |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|