java - ACR122u直接通讯无 react

标签 java nfc communication acr122

我正在尝试通过发送直接命令来使用 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) + "...");

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

非常感谢!

最佳答案

终于,我找到了解决方案。如果其他人也有同样的问题,我会回答我自己的问题。

错误是我只在这里发送消息。使用new CommandAPDU(),您已经定义了 Class、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...

关于java - ACR122u直接通讯无 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24758072/

相关文章:

java - 多核上的jvm

java - java中如何创建非静态全局变量?

android - 使用 Android 7.0 或更高版本从 iPhone Suica App 读取 NFC 数据时出现问题

delphi - 是否有用于Delphi/Free Pascal的免费JMS客户端?

c# - C# 应用程序如何轻松地在网络上通信和传输文件?

java - 在sqlite的中间表中插入值

Java 流 - 将列表排序为列表的 HashMap

java - RFID阅读器可以读取NFC标签吗?

android - 如何将 NFC 标签格式化为 NDEF 格式

java - PHP后端,Java前端。这可能吗?