简体   繁体   English

ACR122U读卡器工具无法支持NFC标签

[英]ACR122U reader tool could not supported the NFC tag

I got an ACR122U NFC reader SDK with the sample demo and tools taken from ACS.Then,i am trying to run the ACR122U reader tool put the mifare card 1K on the NFC reader to run the tool. 我有一个ACR122U NFC读卡器SDK,带有从ACS获取的示例演示和工具。然后,我正在尝试运行ACR122U读卡器工具将mifare卡1K放在NFC读卡器上运行该工具。 .Then,everything is ok.But,only when to get the ATS it trouble..it say function not supported.Then,because of that cannot do the load authentication,authentication,read block and all the things.Means,PICC command (T=CL Emulation) for mifare classic Memory cards unable to run. 然后,一切都还好。但是,只有当它得到ATS它就麻烦了..说不支持的功能。然后,因为那不能做加载认证,认证,读取块和所有的东西.Means,PICC命令( T = CL Emulation)用于mifare经典存储卡无法运行。

it is was happen same to topaz and mifare ultralight which could not supported while i try to get the ATS.even when connect with phone nokia c7 the tag also function not supported. 这是发生在topaz和mifare超轻的情况下,当我试图获得ATS.even时连接电话诺基亚c7标签也不支持。

SO,can you give suggestion why function not supported? 那么,你能否提出为什么功能不受支持的建议? and when i set the PICC operating parameter also got a problem.Below are the code 当我设置PICC操作参数也遇到了问题。下面是代码

ACR122U PICC Interface Connected to : ACS ACR122 0 ACR122U PICC接口连接到:ACS ACR122 0

ACR122U Get Firmware Version Firmware Version : ACR122U207 ACR122U获取固件版本固件版本:ACR122U207

ACR122U Status < FF 00 00 00 02 D4 04 ACR122U状态<FF 00 00 00 02 D4 04

D5 05 00 00 01 01 00 00 00 80 90 00 Error Code: 00 Field: 00 (RF Field is NOT Present and NOT Detected) Number of Target: 01 Logical Number: 01 Bit Rate in Reception: 00 (106 kbps) Bit Rate in Transmission: 00 (106 kbps) Modulation Type: 00 (ISO14443 or Mifare) D5 05 00 00 01 01 00 00 00 80 90 00错误代码:00字段:00(RF字段不存在且未检测到)目标编号:01逻辑编号:01接收中的比特率:00(106 kbps)比特率在传输中:00(106 kbps)调制类型:00(ISO14443或Mifare)

ACR122U Get ATR ACR122U获取ATR

ATR Value: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A Active Protocol: T=CL Card Type: ISO 14443A, Part3 (Mifare 1K) ATR值:3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A有源协议:T = CL卡类型:ISO 14443A,第3部分(Mifare 1K)

ACR122U APDU Command ACR122U APDU命令

< FF CA 00 00 04 <FF CA 00 00 04

13 29 DF 97 90 00 13 29 DF 97 90 00

here are shown the problem.It should return 90 00-success 这里显示了问题。它应该返回90 00成功

ACR122U Get Data Get UID < FF CA 00 00 00 ACR122U获取数据获取UID <FF CA 00 00 00

90 00 UID: 13 29 DF 97 90 00 UID:13 29 DF 97

Get ATS < FF CA 01 00 00 获得ATS <FF CA 01 00 00

6A 81 Function not supported 6A 81不支持功能

ACR122U Load Authentication Keys < FF 82 00 00 06 FF FF FF FF FF FF ACR122U负载认证密钥<FF 82 00 00 06 FF FF FF FF FF FF

90 00 < Key Structure: 00 < Key Number: 00 < Key: FF FF FF FF FF FF Load Authentication Keys Success 90 00 <密钥结构:00 <密钥号:00 <密钥:FF FF FF FF FF FF加载验证密钥成功

PICC command (T=CL Emulation) for mifare classic Memory cards unable to run. 用于mifare经典存储卡的PICC命令(T = CL Emulation)无法运行。

ACR122U Read Binary Block ACR122U读取二进制块

ACR122U Authentication < FF 86 00 00 05 01 00 04 60 00 ACR122U认证<FF 86 00 00 05 01 00 04 60 00

63 00 Operation failed < FF B0 00 04 10 63 00 Operation failed 63 00操作失败<FF B0 00 04 10 63 00操作失败

I realize that this is an old question but I am working on the same card (Mifare 1K). 我意识到这是一个老问题,但我正在使用同一张卡(Mifare 1K)。 My start code is: 我的开始代码是:

public void start() throws CardReaderException {
    TerminalFactory factory = TerminalFactory.getDefault();
    List<CardTerminal> terminals;
    try {
        terminals = factory.terminals().list();
        //System.out.println("Terminals: " + terminals);
        // get the first terminal
        CardTerminal terminal = terminals.get(0);
        // establish a connection with the card
        card = terminal.connect("*");
        //System.out.println("card: " + card);
        channel = card.getBasicChannel();
    } catch (CardException e) {
        e.printStackTrace();
    }       
}

which is then followed with the authenticate code: 然后是验证码:

private boolean authenticate(byte block) {
    byte [] setKey = new byte[]{(byte) 0xff, (byte) 0x82, 00, 01, 06, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
    byte [] authKey = new byte[] {(byte) 0xff, (byte) 0x86, 00, 00, 0x05, 0x01, 0x00, block, 0x60, 0};

    ResponseAPDU r;
    try {
        r = channel.transmit(new CommandAPDU(setKey));
        if ( r.getBytes()[0] != retOk) {
            return false;
        }

        r = channel.transmit(new CommandAPDU(authKey));
        if ( r.getBytes()[0] != retOk) {
            return false;
        }
    } catch (CardException e) {
        e.printStackTrace();
    }


    return true;
}

after I have authenticated I can either read (0xFF, 0xB0, 0x00, block, 0x10) or write (0xFF, 0xD6, 0x00, block, 0x10) to the card. 在我通过身份验证后,我可以读取(0xFF,0xB0,0x00,块,0x10)或写入(0xFF,0xD6,0x00,块,0x10)到卡。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM