使用Raspberry编写电话后,手机识别NFC标签错误

时间:2015-08-25 12:01:24

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

所以我有一些恩智浦的NTAG216标签。它们有888字节的内存。如果它们仅用于我的Android应用程序,则手机会将它们识别为888字节。但是在我用我的Raspberry Pi使用libnfc向他们写了一些消息之后,手机将它们识别为238字节长(手机和Pi都使用NDEF格式并只写入标签的用户内存)。 Pi可以回读它的消息并且可以使用整个888字节的内存,与手机不同:/,手机只能在短于238字节的情况下读取消息...(我使用的是兼容性写入模式NTAG216与Pi)

有谁知道出了什么问题?

1 个答案:

答案 0 :(得分:0)

所以我找到了解决这个问题的方法。并创造了某种解决方案。

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

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

如果您想使用整个内存与android并使用nfc advanced :),那么请在编程上度过愉快的时光。我希望在Windows Phone OS中更容易。