2017-02-02 5 views
-2

Я пытаюсь использовать команду send_apdu(), указанную в библиотеке nfcpy, для взаимодействия с Android-смартфоном. Каковы конкретные файлы заголовков и процедура их использования. Пожалуйста, укажите пример, если это возможно. Вот ссылка на описание функции: http://nfcpy.readthedocs.io/en/latest/modules/tag.htmlКак использовать команду send_apdu() в библиотеке nfcpy?

ответ

1

Нет конкретных файлов заголовков для использования. Большинство аргументов send_apdu прямые совпадения синтаксиса 7816-4 APDU ISO/IEC: Команда Class (CLA) Код инструкции (модули) Параметр 1 (p1) Параметр 2 (p2), Данные команды (данные) и максимальная длина ответа (mrl). Только аргумент check_status не имеет эквивалента.

Для создания APDU вызывающий должен предоставить соответствующие значения. Ниже приведен пример, который активирует конкретное приложение (приложение NDEF) с помощью AID «D2760000850101» h. В этом примере предполагается, что поддерживаемый NFC-ридер подключается через USB-порт, а на считыватель - тег типа NFC Forum 4.

$ python 
>>> import nfc 
>>> clf = nfc.ContactlessFrontent("usb") 
>>> tag = clf.connect(rdwr={'on-connect': lambda tag: False}) 
>>> 
>>> cla = 0x00 # last or only command, no secure messaging, channel zero 
>>> ins = 0xA4 # SELECT command 
>>> p1 = 0x04 # Select by DF name 
>>> p2 = 0x00 # First or only occurrence, Return FCI template 
>>> data = bytearray.fromhex("D2760000850101") # NDEF AID 
>>> 
>>> tag.send_apdu(cla, ins, p1, p2, data, check_status=False) 
bytearray(b'\x90\x00') 

Для этого конкретного T4t данных отклика является только два состояния байта SW1 и SW2, и из-за check_status = False может или не может указывать на ошибку (но на самом деле «9000'h означает успех) ,

Смежные вопросы