簡體   English   中英

ACR122U-傳輸APDU時出現InvalidDeviceStateException

[英]ACR122U - InvalidDeviceStateException when transmitting APDU

我下載了android ACS庫,並使用帶有otg電纜的ACR122U閱讀器在我的android設備上試用了示例代碼和ReaderTest應用。

我嘗試發送以下APDU命令-FF CA 00 00 00,但在以下代碼段的以下行中不斷遇到此異常:

                    // Transmit APDU
                    responseLength = mReader.transmit(params[0].slotNum,
                            command, command.length, response,
                            response.length);

例外:

com.acs.smartcard.InvalidDeviceStateException:當前狀態不等於特定狀態

我檢查過以確保所有傳遞給.transmit方法的元素都是正確的(slotNum,command,command.length等)。 只是無法弄清楚為什么會拋出該異常。

任何幫助將不勝感激 !

我設法找到了解決方案。 拋出此異常是因為需要執行一些我不太了解的初始化。 在NFC庫中找到該示例。 下面的代碼段中詳細介紹了這些步驟:

private void initalizeCard() throws ReaderException {
    reader.power(0, Reader.CARD_WARM_RESET);
    reader.setProtocol(0, Reader.PROTOCOL_T0 | Reader.PROTOCOL_T1);

    byte[] sendBuffer={(byte)0xFF, (byte)0xCA, (byte)0x00, (byte)0x00, (byte)0x00};
    byte[] recvBuffer=new byte[300];
    reader.transmit(0, sendBuffer, sendBuffer.length, recvBuffer, recvBuffer.length);
}

您必須先執行熱重置---> set-protocol,然后apdu命令才能獲得正確的響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM