Понимание формата записи NDEF - PullRequest
1 голос
/ 19 марта 2019

Я написал текстовую запись NDEF - "poo" (просто тестирование) в тег NFC Forum type 2, и мне нужна помощь в понимании того, что именно было написано и в каком формате.Команда, отправленная тегу, содержит четыре массива:

new Uint8Array([162, 4, 3, 10, 209, 1]).buffer                                                           
new Uint8Array([162, 5, 6, 84, 2, 101]).buffer                                                           
new Uint8Array([162, 6, 110, 112, 111, 111]).buffer  <-- 112, 111, 111 is ASCII for "poo"                                                 
new Uint8Array([162, 7, 254, 0, 0, 48]).buffer 

Я понимаю, что первый байт каждого массива (162) - это команда записи.Второй байт (4, 5, 6, 7) каждого массива является индексом во всех данных тега для размещения следующих байтов.Он начинается с 4, потому что первые 16 байтов уже записаны и содержат метаданные о теге.Я также понимаю, что 112, 111, 111 - это текст, который я сохранил.

Итак, мой вопрос: какова цель первых двух и последних массивов?

Я не могу понять, какие данные они содержат.Вот окончательное содержимое моего тега NFC (я обрезал все нули с конца)

new Uint8Array([95, 222, 208, 217, 54, 218, 237, 38, 39, 3, 0, 0, 225, 17, 96, 0, 3, 10, 209, 1, 6, 84, 2, 101, 110, 112, 111, 111, 254, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...])

Как видите, первые 16 байтов были записаны при создании;определение тега.Далее следуют 4 массива сверху.Мое текущее понимание проистекает из здесь , которое объясняет, что полезная нагрузка поставляется с метаданными, чтобы объяснить, что это за тип данных и т. Д., Но есть две матрицы, предшествующие полезной нагрузке, и одна после, которую я не понимаю.

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Это метаданные NDEF:

structure

Вы можете сопоставить данные с каждым из полей выше.

0 голосов
/ 20 марта 2019

После того, как я некоторое время ударился головой о стену, я понял, что это метаданные , как я и подозревал, но они были в порядке, отличном от того, что обычно документируется.Более подробную информацию о ниже можно найти здесь .

new Uint8Array([162, 4, 3, 10, 209, 1]).buffer
3: "Type length"
10: "Record length"
209: "NDEF record header"
1: "Type Name Field"

new Uint8Array([162, 5, 6, 84, 2, 101]).buffer   
6: "Payload Length"
84: "Well known record"
2: "Well known record type" (in this case - the encoding for this text (UTF))
101: "e"

new Uint8Array([162, 6, 110, 112, 111, 111]).buffer
110: "n" - ("en" is locale)
112: "p"
111: "o"
111: "o"

new Uint8Array([162, 7, 254, 0, 0, 48]).buffer 
254: Marks the end of the payload
...