2

我有一个通过 UART 连接到 Raspberry Pi 3B 的 PN532。在 Python 脚本(V3.7.4)中,我激活阅读器并从标签中读取数据。如果有 NDEF 消息,我会读取标签的数据并在字典中返回 NDEF 记录。所有这些都基于 nfcpy 和 ndeflib 库。

问题是,检查 NDEF 消息的标签似乎无法正常工作。使用 Android App NFC Tools Pro 模拟标签时,可以读取 NDEF 消息。使用各种其他应用程序,无法读取 NDEF 消息。当我使用 NFC 工具 Pro 对真实标签或卡片进行编程时,也找不到 NDEF 消息。使用其他应用程序或带有 USB NFC 阅读器的标签或使用手机扫描标签,可以找到并读取 NDEF 数据。

所以由于某种原因 if 的结果tag.ndef:并不总是返回 true,即使它应该返回它。

from time import sleep

import nfc
import ndef
from nfc.clf import RemoteTarget

def parseNDEF():
    with nfc.ContactlessFrontend("tty:S0:pn532") as clf:
        while True:
            target = clf.sense(RemoteTarget("106A"), RemoteTarget("106B"), 
            RemoteTarget("212F"))
            print("Traget: "+str(target))

            if target is None:
                print("No target found ...")
                sleep(0.5)
                continue

            serial = target.sdd_res.hex()
            print("Found a target with serial " + serial + "!")

            tag = nfc.tag.activate(clf, target)
            print("tag data:\n" + str(tag.dump))

            nfcrecs = {}
            if tag.ndef:
                print("Tag is NDEF formatted!")
                print("It has " + str(len(tag.ndef.records)) + " records.")

                i=1;
                for record in tag.ndef.records:
                    print("Record: "+str(record))
                    nfcrecs["rec"+str(i)] = record.text
                    i+=1;

            else:
                print("No NDEF formatted tag.")

            if (len(nfcrecs)>0):
                return nfcrecs

这是使用 Pi 上的 PN532 从 Android App NFC 工具 Pro 读取数据的结果: 单击此处

我用与应用程序发送的相同数据对芯片进行了编程。编程也使用 NFC 工具 Pro 完成。这是用NFC工具Pro读取芯片的结果: 点这里

这是我在 Pi 上使用 PN532 读取上述编程芯片时的结果: 单击此处

知道这里出了什么问题吗?

提前感谢您的任何帮助。

4

0 回答 0