【问题标题】:ACR122u direct communication no responseACR122u 直接通讯无响应
【发布时间】:2014-09-05 15:22:55
【问题描述】:

我正在尝试通过发送直接命令来使用 java 访问我的 ACR122u。奇怪的是我没有得到任何响应,也没有错误。这是我的代码:

final static int IOCTL_SMARTCARD_ACR122_ESCAPE_COMMAND = 0x003136B0;

.....

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

CardTerminal terminal   = terminals.get(0);
Card card               = terminal.connect("direct");

CardChannel channel     = card.getBasicChannel();

byte[] commandAPDU      = {(byte) 0xD4, 0x06, 0x63, 0x05, 0x63, 0x0D, 0x63, 0x38 }; 
byte[] responseAPDU     = card.transmitControlCommand(IOCTL_SMARTCARD_ACR122_ESCAPE_COMMAND, commandAPDU );             

System.out.println(bytesToHex(responseAPDU) + "...");

有谁知道造成这种情况的原因吗?

非常感谢!

【问题讨论】:

    标签: java nfc communication acr122


    【解决方案1】:

    终于,我有了解决办法。我会回答我自己的问题,以防其他人遇到同样的问题。

    错误是我只在这里发送消息。使用new CommandAPDU(),您已经定义了类、INS、P1、P2。除此之外,您不需要定义Lc because javac will do this for us。对于transmitControlCommand,您确实需要定义Lc。因此,有了这些知识,新的(工作)代码是:

    List<CardTerminal>  terminals   = null; 
    TerminalFactory factory         = TerminalFactory.getDefault();
    terminals                       = factory.terminals().list();
    
    CardTerminal terminal   = terminals.get(0);
    Card card               = terminal.connect("direct");
    
    CardChannel channel     = card.getBasicChannel();
    
    //Read register
    byte[] commandAPDU1     = {(byte)0xFF,0x00,0x00,0x00,0x08,  (byte)0xD4, 0x06, 0x63, 0x05, 0x63, 0x0D, 0x63, 0x38 }; 
    byte[] responseAPDU1    = card.transmitControlCommand(IOCTL_SMARTCARD_ACR122_ESCAPE_COMMAND, commandAPDU1 );                
    
    System.out.println(bytesToHex(responseAPDU1) + "...");
    //Response: D5070707059000...
    

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多