Прямая команда acr122u на mac nfc

Я пытаюсь установить соединение NFC, используя javax.smartcardio. Я могу успешно запустить этот код в Windows, но не смог заставить его работать на Mac. Кажется, проблема в драйверах Mac, но я хотел бы знать, есть ли решение или нет.

TerminalFactory factory;
factory = TerminalFactory.getDefault();
CardTerminal terminal = factory.terminals().list().get(0);
card = terminal.connect("direct");`

Примечание. Мне нужно использовать команду direct.

Изменить: Почему я должен использовать команду direct? Мне нужно отправлять команды APDU, когда карта не представлена. В других протоколах, таких как T=0, T=1, я не могу отправлять команды APDU на считыватель, когда на считывателе нет карты (или устройства).


person Can Geliş    schedule 25.06.2013    source источник
comment
Не могли бы вы указать документацию, где указан этот "direct" протокол? Возможно, вам нужен проприетарный поставщик безопасности для использования этого протокола.   -  person Maarten Bodewes    schedule 05.07.2013
comment
Это выглядит недокументировано. С другой стороны, есть несколько примеров, использующих этот протокол (у меня тоже есть такой, который работает только на Windows :))   -  person Can Geliş    schedule 07.07.2013
comment
Я думаю, что есть единственный способ сделать это: зарегистрировать поставщика, который предоставляет ваши собственные реализации терминала (чтобы иметь возможность использовать метод getDefault(). Затем реализовать протокол "direct" в возвращаемом Terminal. Если я правильно помню, javax.smartcardio можно расширить Provider.   -  person Maarten Bodewes    schedule 07.07.2013


Ответы (1)


Очень интересно, что вы должны использовать команду "direct" — вы говорите команда, но на самом деле это строка транспортного протокола. К сожалению, API говорит об обратном (проверено до Java 7 SE).

Это выдержка из JavaDoc метода connect(String):

protocol — используемый протокол ("T=0", "T=1" или "T=CL") или "*" для подключения по любому доступному протоколу.

Если вы не уверены, я бы выбрал "T=1", он должен быть совместим с современными картами и большинством ридеров PCSC.

person Maarten Bodewes    schedule 03.07.2013
comment
Я уверен, что другие читатели поддерживают эти протоколы T=*, но механизм автоматического опроса моего читателя не совместим с одноранговыми соединениями (проверено с Android 4.0+), поэтому мне нужно реализовать свой собственный. Я могу сделать это только с прямым протоколом. - person Can Geliş; 07.07.2013
comment
Ах, да, теперь я понимаю: прямые переговоры с кард-ридером с использованием фирменных команд считывателя. Интересная, но не та портативная идея. - person Maarten Bodewes; 07.07.2013