3

我正在使用 smartcardio api 将数据从 NFC ACR 122u 读卡器写入 Android 手机

这是我正在使用的代码:

TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();

if (terminals==null || terminals.size()==0) {
    le.warn("nfcReaderPresent no terminal found");
    return false;
}

terminal = terminals.get(0);
try {
    boolean res=terminal.waitForCardPresent(5*1000);
    if (res)
        interrupt=true;
}
catch(Exception p) {
    le.error("pushData p="+p);
    le.fatal(p);
}

if (terminal.isCardPresent()) {
    card = terminal.connect("*");//it seems always to be T=1

    ATR atr=card.getATR();
    CardChannel channel = card.getBasicChannel();
    le.debug("card: " + card+" channel="+channel+"  atr="+ByteArrayToHexString(atr.getBytes()));

    //ADPU command
    byte getDataCmd[]={(byte)0xFF,(byte)0xCA,(byte)0x00,(byte)0x00,(byte)0x00};
    sendCommand(getDataCmd,channel);
...

该错误javax.smartcardio.CardException: sun.security.smartcardio.PCSCException: SCARD_E_READER_UNAVAILABLE发生在发送 APDU 命令之前。

当我在工具 ACR122UTool 之前启动并单击连接时,一切正常。(不再需要ACR122uTool)似乎acs工具初始化了设备。

任何帮助将不胜感激

4

0 回答 0