Проблемы с чтением сообщения NDEF в Python из модуля PN532, подключенного к Raspberry Pi (режим UART) - PullRequest
0 голосов
/ 10 октября 2019

У меня есть PN532, подключенный через UART к Raspberry Pi 3B. В скрипте Python (V3.7.4) я активирую читателя и читаю в форме данных тег. Если есть сообщение NDEF, я читаю данные тега и возвращаю записи NDEF в словаре. Все это основано на библиотеках nfcpy и ndeflib.

Проблема в том, что проверка тега для сообщения NDEF не работает должным образом. При эмуляции тега с помощью Android App NFC Tools Pro можно прочитать сообщение NDEF. При использовании различных других приложений сообщение NDEF не может быть прочитано. Когда я программирую реальный тег или карту с помощью инструментов NFC Pro, сообщение NDEF также не может быть найдено. Используя другие приложения или метку с помощью USB NFC-ридера или сканируя метку с помощью телефона, можно найти и прочитать данные NDEF.

Так что по некоторым причинам результат, если tag.ndef: не всегда возвращаетправда, даже если он должен вернуть его.

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

Это результат чтения данных из инструментов Android App NFC Pro с PN532 на Pi: нажмите здесь

Я запрограммировал чип сте же данные, которые я отправил с приложением. Программирование также выполнялось с помощью инструментов NFC Pro. Это результат чтения чипа с помощью инструментов NFC Pro: нажмите здесь

Это результат, когда я прочитал запрограммированный выше чип с PN532 на Pi: нажмите здесь

Есть идеи, что здесь происходит?

Заранее благодарен за любую помощь.

...