【问题标题】:Defining a NDEF Message定义 NDEF 消息
【发布时间】:2016-02-12 13:14:44
【问题描述】:

我正在使用我的 Raspberry Pi 和 RFID-RC522 开发板进行 Python 项目。作为 NFC 标签,我使用 NXP NTAG213。我现在的计划是在标签上存储链接。我可以毫无问题地读/写它们。但我不明白如何为标签上存储的数据定义 NDEF 标头。

当我用智能手机在标签上写一个链接并用我的程序读取它时,标签上存储的数据如下所示:

URL“http://www.gmx.at”的 NDEF 标头是

[3, 11, 209, 1, 7, 85, 1, ... (Data)]

当我写另一个链接时,我发现其中一些参数发生了变化,但有些仍然保持不变。

我发现了这个tutorial,它描述了 NDEF 标头的不同字段,但我仍然不明白如何设置它们以存储指向网站的链接。

如果有人能描述我需要如何正确计算/定义链接的参数,我将非常高兴。

【问题讨论】:

    标签: python raspberry-pi nfc rfid ndef


    【解决方案1】:

    为了了解 NDEF 格式以及 NDEF 格式数据如何存储在 NFC Forum Type 2 标签(这是由 NTAG213 实现的标签平台)上的方式,我建议您阅读以下 NFC Forum 规范:

    您从标签中读取的数据是一个 NDEF 消息 TLV 对象,其中包含一个由一个 URI 记录组成的 NDEF 消息。

    • NDEF 消息 TLV:

      0x03 TLV 标签 = NDEF 消息 TLV 0x0B TLV 长度 = 11 字节 0xD1 ... 0x74 TLV 值 = NDEF 消息

      这意味着标签包含一个长度为 11 个字节的 NDEF 消息。 NDEF 消息是0xD1 ... 0x74

    • NDEF 消息:

      0xD1 记录头 位 7 = MB = 1:NDEF 消息的第一条记录 位 6 = ME = 1:NDEF 消息的最后一条记录 位 5 = CF = 0:链的最后或唯一记录 位 4 = SR = 1:短记录长度字段 位 3 = IL = 0:无 ID/ID 长度字段 位 2..0 = TNF = 0x1:类型字段表示 NFC 论坛 知名类型名称 0x01 类型长度 = 1 字节 0x07 有效载荷长度 = 7 个字节 0x55 类型字段 = “U”(在 US-ASCII 中)= 类型名称的二进制形式 urn:nfc:wkt:U 0x01 ... 0x74 有效负载字段 = URI 记录有效负载

      这意味着 NDEF 消息由遵循 URI 记录类型定义的一个 URI 记录(类型名称 urn:nfc:wkt:U)组成。

    • URI 记录负载:

      0x01 标识符字节 = URI 前缀“http://www.” 0x67 ... 0x74 URI 字段(UTF-8 编码)=“gmx.at”

      这意味着 URI 记录指向 URI“http://www.gmx.at”。

    【讨论】:

      【解决方案2】:

      在使用 Python 时,也可以使用 ndeflib 包对数据进行编码。

      你的例子:

      import ndef
      
      record1 = ndef.UriRecord(f"http://www.gmx.at")
      message = [record1]
      buf = b"".join((ndef.message_encoder(message)))
      print(buf.hex())
      

      输出:

      d101075501676d782e6174
      

      您需要将其包装在TLV (Tag Length Value) structure

      03  # TLV T field: block contains NDEF message
      0B  # TLV L field: NDEF message length = 11
      :   # TLV V field: NDEF message data (from above)
      FE  # TLV terminator
      

      这些是您应该写入标签用户内存的字节。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多