Я записываю данные в тег 14443A с помощью HTC One SV (PN544, Android 4.1.2), используя команду APDU «двоичное обновление», но я вижу между размером сообщения (байт # 5), а в начале NDEF записываются два дополнительных нулевого байта (# 6,7). Я проверил стандарт ISO7816 и не вижу цели этих двух дополнительных байтов, соответствует ли это стандарту? Я разбираю сообщение APDU/NDEF в C-программе, как я могу найти начало сообщения NDEF, могу ли я предположить, что эти два нулевых байта всегда есть или мне нужно искать байт «D1» ?NFC Update Последовательность двоичных команд нечеткая
The ISO7816, UPDATE BINARY:
CLA As defined in 5.4.1
INS 'D6'
P1-P2 See text below
Lc field Length of the subsequent data field
Data field String of data units to be updated
Le field Empty
Если B8 = 1 в P1, то b6-5 установлены на 0 (бит РФС). бит5-1 из P1 являются коротким идентификатором EF, а P2 является смещением первого байта, который должен обновляться в единицах данных с начала файла. Если b7 = 1 в P1, то P1 || P2 является смещением первого байта, который должен быть записан в единицах данных с начала файла.
cmdMessage = "\u0002"+"en"+"erase";
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NdefRecord txtRecord = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], cmdMessage.getBytes());
NdefMessage newMessage = new NdefMessage(new NdefRecord[] { txtRecord});
writeNdefMessageToTag(newMessage, tag);
0x00: 0x02
0x01: 0x00 CLA
0x02: 0xD6 INS, bin update
0x03: 0x00 P1, Address MSB
0x04: 0x00 P2, Address LSB
0x05: 0x0E Lc, msg size
0x06: 0x00 ??
0x07: 0x00 ??
0x08: 0xD1 NDEF header, TNF
0x09: 0x01 type-len
0x0A: 0x08 payload-len
0x0B: 0x54 "T"
0x0C: 0x02 0x02
0x0D: 0x65 e "en"
0x0E: 0x6E n
0x0F: 0x65 e "erase"
0x10: 0x72 r
0x11: 0x61 a
0x12: 0x73 s
0x13: 0x65 e
после отправки 0x9000 признать смартфон посылает другое сообщение записи: какова цель этого дополнительного доступа к записи? Я полагаю, что 0x0C является размером сообщения NDEF, которое было записано в предыдущей последовательности, , но зачем отправлять эту информацию в отдельный доступ для записи?
0x00: 0x03<\n>
0x01: 0x00<\n>
0x02: 0xD6<\n>
0x03: 0x00<\n>
0x04: 0x00<\n>
0x05: 0x02<\n>
0x06: 0x00<\n>
0x07: 0x0C<\n>