Java 使用smartcardio的Acs读卡器acr122,如果我们没有';之前不要启动ACR122自动控制

Java 使用smartcardio的Acs读卡器acr122,如果我们没有';之前不要启动ACR122自动控制,java,nfc,Java,Nfc,我正在使用smartcardio api将数据从NFC ACR 122u读卡器写入Android手机 这是我正在使用的代码: TerminalFactory factory = TerminalFactory.getDefault(); List<CardTerminal> terminals = factory.terminals().list(); if (terminals==null || terminals.size()==0) { le.warn("nfcRea

我正在使用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);
...
TerminalFactory工厂=TerminalFactory.getDefault();
列表端子=工厂.terminals().List();
如果(端子==null | |端子.size()==0){
le.warn(“未找到终端的NFCREADER”);
返回false;
}
终端=终端。获取(0);
试一试{
布尔res=终端waitForCardPresent(5*1000);
如果(res)
中断=真;
}
捕获(异常p){
le.错误(“pushData p=“+p”);
致死性(p);
}
if(terminal.isCardPresent()){
card=terminal.connect(“*”)//似乎总是T=1
ATR ATR=card.getATR();
CardChannel=card.getBasicChannel();
le.debug(“卡:“+card+”通道=“+channel+”atr=“+byteArrayTohextString(atr.getBytes())”);
//ADPU命令
字节getDataCmd[]={(字节)0xFF,(字节)0xCA,(字节)0x00,(字节)0x00,(字节)0x00};
sendCommand(getDataCmd,通道);
...
错误
javax.smartcardio.CardException:sun.security.smartcardio.PCSCException:SCARD_E_READER_UNAVAILABLE
在发送APDU命令之前发生

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

任何帮助都将不胜感激