“嘿兄弟,怎么了?”
我遇到NDEF邮件格式化问题。
我通过NFC论坛了解如何使用带有负载的单个NDEF记录(文本RTD)构建NDEF消息,因此我可以通过I2c对我的标记(M24LR16E)进行编程。
除此之外,我还使用外部编写器编写了我的标签,以获得格式良好的记录示例。
然后我使用完全相同的值通过I2C编程我的标签,一切都运行良好。改变有效载荷字符给了我成功的证据=)
“但你没有来这里告诉我们一切运作良好,不是吗?”
你是对的,知道我正在尝试改变有效载荷长度而且我遇到了麻烦。一旦我更改了NDEF记录的PAYLOAD_LENGTH,它就不再被认为是一个。我将PAYLOAD_LENGTH从10改为5,所以这不是溢出配置字段的问题。
“很棒的故事,给我看一些代码/配置”
这是我的记录配置:
另外,我注意到如果我在NDEF消息之前覆盖6个字节,则不再识别NDEF消息。我不知道这些数据是什么,因为NFC规范没有谈论这个,也没有标签数据表。
“你应该问一个问题......”
呃,好吧......我的读者:Nexus 4与恩智浦的“TagInfo”应用程序
答案 0 :(得分:2)
很遗憾,您无法找到有关如何使用该标记在NFC论坛网站上存储NDEF消息的更多信息。原因是ISO 15693标签目前没有标签类型规定(虽然正在进行标准化)。
我假设标签的内存内容看起来像这样(包括你不理解的字节):
E1 4x yy 00
03 0E <YOUR NDEF MESSAGE> FE
如果是这种情况,前4个字节是功能容器(由魔术字节0xE1
和版本半字节0x4
表示)。 x shoud be 0x0
表示(应用程序级别!)read&amp;写入权限。 yy应该是可用数据存储器的总体大小(不包括容量容器)除以8.到目前为止,您应该能够保留这些值......
但是有NDEF消息TLV结构嵌入了你的NDEF消息:0x03
是指示NDEF消息的标记。 0x0E
是长度字段。这就是除了记录的有效负载长度之外还需要更改的内容。 Android在这个长度领域非常挑剔。如果这与您的NDEF消息的确切长度不匹配,则大多数Android版本将忽略该消息。最后一个字节0xFE
是(可选的)终结符TLV。这应该紧跟在标签上的最后一个数据字节后,告诉NDEF标签解析器停止解析。