2017-08-01 36 views
2

スマートカードの読み取り/書き込み操作を行っています。カードがsle_4428で、HID OMNIKEY 3121 USBカードリーダーを使用していると思います。問題は、私はカードリーダーにカードを入力したときに私のプログラムは、スマートカードがエラーコード0x80100066でリセットに応じて、代わりのカードを接続し、ATRを取得...スマートカードがリセットに応答していません

されていないのように応答していることです[編集]私は読み取り操作を行う場合、それは正常に動作します。書き込み操作をしてからカードを挿入し直すと、応答が停止し、上記のメッセージが表示されます。 FF D6 00 00 #(01 02)

+1

別のカードを試しましたか? – guidot

+0

ええ、私は最初にそれが検出され、私は正常にデータを読み取り/書き込み、再び、再挿入後、それは上記と同じエラーメッセージを与える応答を停止した別のカードを試してみました。 –

+0

あなたのコマンドで送信している長さを常に確認してください。 – shadygoneinsane

答えて

1

HID Omnikeyがスマートカードを適切に "コールド"リセットできないという問題があります。

次のJavaコードをスニップすると、HID OmnikeyリーダーCLをリセットできます。

import jnasmartcardio.Smartcardio; 

import javax.smartcardio.*; 
import javax.xml.bind.DatatypeConverter; 

public class OMNIKEYConfiguration { 

public static void main(String... args) throws Exception { 
    TerminalFactory factory = TerminalFactory.getInstance("PC/SC", null, new Smartcardio()); 

    String terminalName = "OMNIKEY CardMan 5x21-CL 0"; 
    CardTerminal terminal = factory.terminals().getTerminal(terminalName); 

    // Connect directly to reader 
    Card card = terminal.connect("DIRECT"); 

    int code = 3224092; // #define IOCTL_CCID_ESCAPE SCARD_CTL_CODE(3500) 
    byte[] command = DatatypeConverter.parseHexBinary("0300"); // 0300 - ON; 0301 - OFF 
    byte[] resp = card.transmitControlCommand(code, command); 
    System.out.println(DatatypeConverter.printHexBinary(resp)); 

    card.disconnect(true); 
} 
} 

"0x0300"コマンドを使用してアンテナをオンにします。そうでなければ "0x0301"を使用してアンテナをオフにします。

コールドリセットコールでは、[OFF]、[ON]の各コマンドを使用します。

関連する問題