tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1115
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    neojade neojade ist offline Grünschnabel
    Registriert seit
    May 2007
    Beiträge
    1
    Hallo,

    ich versuche im Moment mittels JNA und der DLL eines Kartenleseres(Scard32.dll) auf selbigen zuzugreifen und Karten auszulesen bzw. zu beschreiben. Allerdings scheitere ich daran die Rückgabewerte des Kartenlesers richtig zu verarbeiten. Im Moment wir der Befehl der in cmd steht an den Kartenleser geschickt der fröhlich blinkt und als Ergebnis bekomme ich nur eine Ausgabe der Art [B@14a9972 (Pointer?), der echte Rückgabewert wäre "active" also Status des Kartenlesers. Der Kartenleser ist ein SCM chipdrive micro pro mit dazugehörigem Treiber. Weiß vielleicht jemand wie ich an den richtigen Rückgabewert komme ? Vielen Dank schonmal.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    
    package jnative;
     
    import java.nio.ByteBuffer;
     
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Platform;
     
     
    public class Scard {
     
        // This is the standard, stable way of mapping, which supports extensive
        // customization and mapping of Java to native types.
        public interface Scard32 extends Library {
            Scard32 INSTANCE = (Scard32)Native.loadLibrary(("C:\\windows\\system32\\SCARD32.dll"), Scard32.class);
            public int SCardComand(Long Handle, String cmd, Long CmdLen, String DataIn, Long DataInLen, ByteBuffer DataOut, Long DataOutLen);
            
        }
     
        public static void main(String[] args) {
            long Handle = 0;
            String cmd = "Card,Info,Status";
            //String cmd = "Card,MemRead,128,6";
            long CmdLen = 16; 
            String DataIn = ""; 
            long DataInLen= 0; 
            
            byte[] bytetest ;
            bytetest = new byte[50];
            long DataOutLen = 255;
                    
           
            ByteBuffer bbin  = ByteBuffer.wrap(bytetest);
     
            try{
                Scard32.INSTANCE.SCardComand(Handle, cmd, CmdLen, DataIn, DataInLen, DataOut, DataOutLen);
            String DataOut = Native.toString(bytetest); 
            System.out.println(bytetest);
            System.out.println(DataOut);
            
            } catch(UnsatisfiedLinkError e){
                e.printStackTrace();
            }
            
        }
    }

    Hier noch das selbe in VBA wo es einwandfrei funktioniert, vielleicht hilft es ja.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    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
     
    Function KartePruefen()
    D = String(255, 0)
    SCardComand 0, "Card,Info,Status", 0, nil, 0, D, 255
    MsgBox(D)
    End Function
     

  2. #2
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Das was du hier bekommst ist der Rückgabewert der Methode toString aus der Klasse Object.
    Es muss einen Getter für den Wert geben. Wenn du die Klasse editieren und neu compilieren kannst, kannst du auch toString überschreiben und einen String deiner Wahl zurückgeben lassen.
     
    Mein kleiner webstart Projektplaner:
    http://178.77.101.236/ppws/
    Ideen, Verbesserungsvorschläge, Bugsmeldungen und allg. Kritik erwünscht und erbeten.

    Danke. :)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 30.03.07, 17:23
  2. Cardreader
    Von Martin Schroeder im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 21.04.05, 17:09
  3. Probleme mit USB-Cardreader und Windows 2000
    Von Robert Steichele im Forum Hardware
    Antworten: 0
    Letzter Beitrag: 03.07.04, 09:36
  4. cardreader unter win2000
    Von hoshisun im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 20.04.04, 11:41
  5. Multi-Cardreader funktioniert nicht
    Von zippir im Forum Hardware
    Antworten: 4
    Letzter Beitrag: 21.03.04, 23:00