我对NFC设备阅读非常陌生,但我已经成功地使用nfc-mfultralight.c (libnfc)的代码在自己的项目中实现了。
我不明白的是,当我读到MIFARE超光速波段的数据时,我会收到很多垃圾。
例如,标签中有数字255555574558888 (我使用Android设备将这个数字写入标签)。
现在当我跑:
nfc-mfultralight r /home/user/dump我明白了
d▒r▒!▒ H▒▒U255555574558888▒-67644-67546-2346这是libnfc的例子,所以这个程序不应该只读取正确的数据吗?我使用的安卓应用程序只看到了价值255555574558888。价值-67644-67546-2346是我以前写过的。
我怎么知道我需要读的是正确的数据?我应该在示例代码中更改什么才能使它正确工作?
我使用一个ACR122从标记中读取数据。
PS:这是我第一个使用NFC设备,libnfc和MIFARE超光速标签的项目,所以你认为我应该读的东西请告诉我。
编辑1
所以我发现了一个问题:用NXP读卡器库读取NFC Mifare卡
我觉得这对我有一点帮助。我打印出另一个测试字符串的十六进制值,并得到以下结果
04 64 13 fb
72 f7 21 84
20 48 00 00
e1 11 06 00
03 0a d1 01
06 54 02 65
6e 68 65 79
fe 00 00 79
35 35 38 38
38 38 fe 00
2d 36 37 36
34 34 2d 36
37 35 34 36
2d 32 33 34
36 fe 00 00
00 00 00 00
00我看到3d后面跟着0a,然后是d1,但是3d之前的所有值是什么?这是因为libnfc吗?
发布于 2014-05-30 07:35:30
在第0页和第1页(字节0到7)中看到的数据是卡片的UID。第2页包含特定于卡的数据(字节8和9)和锁字节(字节10和11)。第3页包含功能容器(CC),该容器指示此标记是根据NFC论坛类型2标记操作规范1.1版格式化的。标签的用户数据区域从第4页开始。
由于此标记遵循NFC论坛的标记操作规范,其上的NDEF数据存储在NDEF对象中(标记0x03,长度0x0A)。0xD1表示NDEF消息,该消息由一个带有NFC论坛记录类型的短格式记录组成。记录类型"T“(0x54)意味着它是一个文本记录。文本记录包含语言定义"en“(英语)和文本”嘿嘿“(0x68 0x65 0x79)。数据区域由终止符-TLV终止(标签0xFE,长度0x00)。
此外,似乎有数据来自以前的NDEF消息,它比当前的要大。由于数据是以页(4个字节)编写的,并且在写入新消息时标记的数据区域通常不被清除,所以旧数据仍然可以从标记中读取。
您可能希望通过NFC论坛阅读下列规范(可在其网站上查阅):
https://stackoverflow.com/questions/23929387
复制相似问题