NFC Форматирование сообщения NDEF: размер полезной нагрузки (заголовок ISO 15693, NfcV)

"Эй, братан, как дела?"

У меня проблемы с форматированием сообщений NDEF.

Я прошел по форуму NFC, чтобы узнать, как создать сообщение NDEF с одной записью NDEF (текст RTD) с полезной нагрузкой, чтобы я мог программировать свой тег (M24LR16E) через I2c.

В дополнение к этому, я запрограммировал свой тег с помощью внешнего устройства записи, чтобы он имел пример хорошо отформатированной записи.

Затем я запрограммировал свой тег через I2C с точно таким же значением, и все работало хорошо. Смена полезных символов дала мне доказательство моего успеха =)

"Но вы пришли сюда не для того, чтобы показать нам, что что-то работает хорошо, не так ли?"

Вы правы, знаете, я пытаюсь изменить длину полезной нагрузки, и у меня возникают проблемы. Как только я изменяю PAYLOAD_LENGTH записи NDEF, она больше не распознается как единая. Я изменил PAYLOAD_LENGTH с 10 на 5, так что это не проблема переполнения поля конфигурации.

"Отличная история, покажи мне код / ​​конфиг"

Вот моя конфигурация записи:

  • "Заголовок" (MB ME CF SR IL TNF): 0xD1
  • PAYLOAD_LENGTH: 0x0A
  • ДЛИНА ТИПА: 0x01
  • ТИП: 0x54
  • ЗАГРУЗИТЬ:
    • 0x02; UTF-8, 2-х байтовый код языка
    • 0x65; е
    • 0x6E; N
    • 7 Другие скучные байты

Кроме того, я заметил, что если я перезаписываю 6 байтов перед моим сообщением NDEF, сообщение NDEF больше не распознается. Я понятия не имею, что это могут быть за данные, поскольку в спецификации NFC об этом не говорится ни в таблице данных тегов.

"Вы должны задать вопрос..."

Ну, хорошо...

  • Есть ли что-то еще, кроме поля PAYLOAD_LENGTH записи NDEF, которое я должен изменить?
  • Каковы эти важные данные перед моим сообщением NDEF?

Мой читатель: Nexus 4 с приложением NXP "TagInfo"

1 ответ

Решение

К сожалению, вы не найдете много информации о том, как использовать этот тег для хранения сообщений NDEF на веб-сайте NFC Forum. Причина этого заключается в том, что в настоящее время отсутствует спецификация типа тегов для тегов ISO 15693 (хотя стандартизация продолжается).

Я предполагаю, что содержимое тега в памяти выглядит так (включая байты, которые вы не поняли):

E1 4x yy 00
03 0E <YOUR NDEF MESSAGE> FE

В этом случае первые 4 байта являются контейнером возможностей (обозначается магическим байтом 0xE1 и версия клев 0x4). х шо быть 0x0 указывающий (уровень приложения!) доступ для чтения и записи. уу должен быть общий размер вашей доступной памяти данных (исключая контейнер возможностей), деленный на 8. Пока вы должны иметь возможность сохранить эти значения...

Но затем есть структура TLV сообщения NDEF, которая встраивает ваше сообщение NDEF: 0x03 является тегом, указывающим сообщение NDEF. 0x0E это поле длины. Вот что вам нужно изменить в дополнение к длине полезной нагрузки вашей записи. Android довольно требователен, когда дело доходит до этой длины поля. Если это не соответствует точной длине вашего сообщения NDEF, большинство версий Android будут игнорировать это сообщение. Последний байт, 0xFE является (необязательным) терминатором TLV. Это должно сразу следовать за последним байтом данных в вашем теге, чтобы сказать парсеру тега NDEF прекратить анализ.

Другие вопросы по тегам