0

我正在构建一个使用 RFID 标签来识别用户的应用程序,使用 NFC。我可以正确读取标签,没有问题。但是,当我使用“NFC TagInfo”应用程序时,我从 Type V 标签收到了这个 ID:

e00401007539c2d3

当我自己阅读标签时,UID 完全倒退:

d3c23975000104e0

V 型标签的射频技术是V 型 (ISO/IEC 15693 / Vicinity)。我的代码似乎没有任何问题,因为其他标签(Type A (ISO/IEC 14443 Type A ) 工作正常。这就是我将其转换为的byte[]方式String

public static String tagFromByte(byte[] __tagId) {
    String tagId = "";

    for (byte b: __tagId) {
        tagId += String.format("%02x", b);
    }

    return tagId;
}

根据文档

ID 的大小和格式特定于标签使用的射频技术。

我试图搜索有关如何读取特定技术的 UID 的更多信息,但找不到任何信息。

在这里更新我发现,它是根据文档。但是,这就引出了一个问题,如何让标签的射频技术用于触发正确的 UIDbyte[]-to-string实施?

4

2 回答 2

0

您正在记录从 0 到 7 的标签,而应该是相反的。

tagId[0]字节是最低有效字节,因此放在最后。

像这样记录它:

for (int i = _tagId.length(); i > 0; --i) {
    tagId += String.format("%02x", _tagId[i]);
}
于 2013-11-12T13:56:17.017 回答
0

事实 证明,每种技术的 UID 并不总是相同的。这是解决方案。检查正在使用哪种技术并调用正确的函数以获取 id 作为String

protected String getId(Tag tag) {
String id = null;

if (NfcA.get(tag) != null) {
        id = byteToString(tag.getId());
    } else if (NfcV.get(tag) != null) {
        id = byteToStringReversed(tag.getId());
    }
    return id;
}
于 2013-11-12T14:27:51.600 回答