ACR122 USB SDK — JNI вызывает Winscard.dll

#java #java-native-interface #nfc #rfid #pcsc

#java #java-native-интерфейс #nfc #rfid #pcsc

Вопрос:

мы приобрели ACR122 USB SDK для тестирования NFC. Мы хотели бы создать тестовое настольное приложение для считывателя ACR122U-A2 NFC. Мы разрабатываем его на Java на платформе Microsoft Windows 7.

Мы ожидали, что для того, чтобы использовать PC / SC из Winscard.dll нам нужно выполнять вызовы JNI. Для этого должна быть подготовлена библиотека-оболочка C / C для вызовов JNI.

Я думаю, что это должно быть частью SDK, потому что пример приложения ссылается на оболочку JNI Jacspcsc.dll , но библиотеки там нет. У кого-нибудь был подобный опыт? Существуют ли какие-либо оболочки JNI для Winscard.dll ?

Спасибо, Стен

Ответ №1:

Если вы установили драйвер PC / SC для устройства чтения, вы можете использовать пакет java smardcardio (http://download.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html ) для связи с устройством чтения.

 TerminalFactory terminalFactory = TerminalFactory.getDefault();
CardTerminal terminal = terminalFactory.terminals().list().get(0);
Card card = terminal.connect("T=0");
CardChannel channel = card.getBasicChannel();

// Construct a command and transmit it
CommandAPDU command = new CommandAPDU(new byte[]{(byte)0x01, (byte)0x02, ...})
ResponseAPDU response = channel.transmit(command)
  

Комментарии:

1. Привет, я уже использую пакет java smardcardio. Я также получил библиотеку для вызовов JNI, но я предпочитаю собственный способ Java… Только что я завершил всю инициализацию, создал графический интерфейс и получаю ATR. Теперь я собираюсь запрограммировать тег. Знаете ли вы, можно ли использовать CommandAPDU для отправки команд, отличных от APDU, т. Е. Как работать с тегами (например, Mifare Classic 1K), которые не понимают APDU, а только собственные команды? Спасибо, Петр

2. Чтобы отправить тегу команды, специфичные для тега, вам нужно выполнить несколько шагов для установления логического соединения с тегом; Вам нужно выполнить опрос для тега, и как только вы получите ответ, используйте команду прямой передачи для отправки команд тегу. В документации к программе чтения ACR122U приведены примеры того, как это сделать.

3. Вам нужно обернуть команды для бесконтактной карты (в отличие от внутренней карты contact SAM) внутри «псевдо APDU». Для этого мы здесь внедрили поставщик на базе smartcardio.

4. Может сработать оболочка JNI вокруг libnfc , которая позволит вашему приложению работать с другими NFC-считывателями на базе NXP-PN53x.