2017-08-01 53 views
2

我一直在工作的智能卡的讀/寫操作,我相信我的卡是sle_4428,我使用的是HID OMNIKEY 3121 USB讀卡器。問題是,當我在讀卡器輸入卡作爲智能卡沒有響應復位,錯誤代碼0x80100066,而不是連接卡,並得到ATR我的程序響應...智能卡沒有響應重置

[編輯]如果我只做讀操作,它工作正常。當我進行寫入操作並重新插入卡時,它會停止響應,並提供上述消息。我用來寫APDU命令是: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」關閉天線。

對於冷重置,請先關閉然後再打開命令。