我一直在处理智能卡的读/写操作,我相信我的卡是sle_4428而我使用的是HID OMNIKEY 3121 USB读卡器。问题是,当我在读卡器中输入卡时,我的程序响应智能卡没有响应重置,错误代码 0x80100066 ,而不是连接卡并获取的 ATR ...
[编辑]如果我只进行读取操作,它可以正常工作。当我执行写操作然后重新插入卡它停止响应时,给出上述消息。我用来写的APDU命令是:FF D6 00 00 #(01 02)
答案 0 :(得分: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命令。