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]の各コマンドを使用します。
別のカードを試しましたか? – guidot
ええ、私は最初にそれが検出され、私は正常にデータを読み取り/書き込み、再び、再挿入後、それは上記と同じエラーメッセージを与える応答を停止した別のカードを試してみました。 –
あなたのコマンドで送信している長さを常に確認してください。 – shadygoneinsane