NFC NDEF消息格式:有效载荷大小(ISO 15693标头,NfcV)
“嘿兄弟,怎么了?”
我遇到了NDEF邮件格式的问题。
我通过NFC论坛了解了如何使用单个NDEF记录(文本RTD)构建带有负载的NDEF消息,因此我可以通过I2c对我的标签(M24LR16E)进行编程。
除此之外,我使用外部编写器对我的标签进行了编程,以获得格式良好的记录示例。
然后我使用完全相同的值通过I2C对我的标签进行编程,并且一切正常。 改变载荷字符给了我成功的证明=)
“但是你没有来这里告诉我们什么运转良好,不是吗?”
你是对的,知道我试图改变有效载荷的长度,并且我得到了麻烦。 只要我改变NDEF记录的PAYLOAD_LENGTH,它就不再被认为是一个。 我将PAYLOAD_LENGTH从10更改为5,所以它不是溢出配置字段的问题。
“好故事,给我看一些代码/配置”
这是我的记录配置:
另外,我注意到如果我在我的NDEF消息之前覆盖6个字节,那么NDEF消息不再被识别。 我不知道这个数据可能是什么,因为NFC规范不会谈论这个,也不是标签数据表。
“你应该问一个问题......”
呃,好吧...
我的读者:Nexus 4与恩智浦的“TagInfo”应用程序
不幸的是,你不会找到关于如何使用该标签在NFC论坛网站上存储NDEF消息的很多信息。 原因是目前ISO 15693标签没有Tag Type specifiction(尽管标准化正在进行中)。
我假设标记的内存内容如下所示(包括您不明白的字节):
E1 4x yy 00
03 0E <YOUR NDEF MESSAGE> FE
如果是这样的话,前4个字节是能力容器(由魔术字节0xE1
和版本半字节0x4
)。 x应该是0x0
表示(应用程序级!)读写访问。 yy应该是可用数据存储器(不包括容器容器)的整体大小除以8.到目前为止,您应该能够保留这些值...
但是接下来是嵌入了NDEF消息的NDEF消息TLV结构: 0x03
是指示NDEF消息的标记。 0x0E
是长度字段。 所以这就是除了记录的有效载荷长度之外你需要改变的地方。 当涉及到这个长度的领域时,Android非常挑剔。 如果这与您的NDEF消息的确切长度不符,则大多数Android版本都会忽略该消息。 最后一个字节0xFE
是(可选)终止符TLV。 这应该紧跟在标签上的最后一个数据字节之后,以告诉NDEF标签解析器停止解析。
上一篇: NFC NDEF message formatting : payload size (ISO 15693 header, NfcV)