我有一个通过 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 读取上述编程芯片时的结果: 单击此处
知道这里出了什么问题吗?
提前感谢您的任何帮助。