ACR122u режим эмуляции карты отправлять команды PN532

Я только что прочитал этот ответ о том, как перевести мой ACR122U в режим эмуляции карты. Я понимаю цель, но как вам нужно отправить команды на ACR122u.

Насколько я знаю, FF000000 означает:

  • FF [Класс]
  • 00 [INS]
  • 00 [P1]
  • 00 [P2]

Я просто не могу понять, как я могу отправить фактическую команду PN532, например:

  • FF000000 08 D406 6305 630D 6338
  • FF000000 11 D408 6302 80 6303 80 6305 xx 630D гг 6338 zz

Я зашел так далеко:

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

    try {
            terminals = factory.terminals().list();

            CardTerminal terminal   = terminals.get(0);
            Card card               = terminal.connect("*");
            CardChannel channel     = card.getBasicChannel();
            byte[] command          = {???};
            CommandAPDU command1    = new CommandAPDU(0xFF,0x00,0x00,0x00, command);
            ResponseAPDU response1  = channel.transmit(command1);
            System.out.println(bytesToHex(response1.getBytes()));

    } catch (CardException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Я ценю вашу помощь!

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

1 ответ

Решение

Предполагая 08 D406 6305 630D 6338 означает

  • 08 [Lc]
  • D406 6305 630D 6338 [данные]

Это будет выглядеть так:

byte[] command = new byte[8] { (byte) 0xD4, 0x06, 0x63, 0x05, 0x63, 0x0D, 0x63, 0x38 };

Вы можете оставить 8 Поскольку Javac будет считать байты для вас.

Другие вопросы по тегам