ACR122u прямая связь нет ответа

Я пытаюсь получить доступ к своему ACR122u с помощью java, отправив прямую команду. Странно то, что я не получаю никакого ответа и никаких ошибок. Это мой код:

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) + "...");

Есть ли кто-нибудь, кто знает причину этой ситуации?

Спасибо заранее!


person S.Pols    schedule 15.07.2014    source источник


Ответы (1)


Наконец, у меня есть решение. Я отвечу на свой вопрос, если есть другие люди с такой же проблемой.

Ошибка в том, что я отправляю сообщение только здесь. С помощью new CommandAPDU() вы уже определяете класс, INS, P1, P2. Кроме того, вам не нужно определять Lc потому что javac сделает это за нас. С 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...
person S.Pols    schedule 15.07.2014