【问题标题】:Phone recognize NFC tag wrong after writing with Raspberry使用覆盆子书写后手机识别 NFC 标签错误
【发布时间】:2015-08-25 12:01:23
【问题描述】:

所以我有一些来自 NXP 的 NTAG216 标签。它们有 888 字节的内存。如果它们仅与我的 Android 应用程序一起使用,手机会将它们识别为 888 字节。但是在我使用 Raspberry Pi 使用 libnfc 向他们写一些消息后,手机将它们识别为 238 字节长(手机和 Pi 都使用 NDEF 格式并且只写入标签的用户内存)。 Pi可以读回它的消息并且可以使用整个888字节的内存,不像电话:/,如果它小于238字节,电话只能读取消息......(我使用的是兼容写入模式NTAG216 与 Pi)

有人知道出了什么问题吗?

【问题讨论】:

  • 向标签写入什么数据?具体来说,能力容器(第 3 块)是什么样的?
  • 功能看起来像 E1 11 6F... 我找到了一种可能的解决方案。在创建 ndef 消息的函数中,长度仅为 1 个字节长。所以它总是一条短消息。而且我体验的功能只是短信。

标签: android raspberry-pi nfc ndef lib-nfc


【解决方案1】:

所以我找到了这个问题的一些解释。并创建了某种解决方案。

问题是android的NFC库中的函数总是创建一个NDEF短消息,消息长度存储在一个字节中。这意味着 ndef 部分的最大长度仅为 256 字节。 为什么 NXP-s OWN 程序发现这个标签只是 238 字节......好吧,因为它内部肯定有一些错误,更好的 android 在处理 NFC 时有一些严重的问题,因为使用微软 Lumia 这个标签被发现为 888 字节长而没有任何问题。

最后,解决方案是使用高级 NFC 类并将其逐字节写入。它将更好地理解整个 NFC 的工作原理。 有了这个,你可以创建自己的消息协议,比这个 NDEF 更好。对我来说,解决方案是在内存末尾使用额外的四个字节。有了这个,我可以处理比这个标签可以存储的更长的消息(2^32)。如果标签中存在 Ndef,我还会在这四个字节中指出,因为在这种情况下,我必须剪切消息的前 7 个字节。是的,您可能会发现我已经手动创建了消息的 ndef 部分(为了兼容性,我需要消息的某些部分可以被任何应用程序读取)。我只写短消息,因为android和Lumia的长消息是不同的(Lumia不能读android写的,反之亦然)。

因此,如果您想在 android 上使用整个内存并使用 nfc 高级功能,那就好好享受编程吧:)。我希望在 Windows Phone 操作系统中会更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多