import logging import sys import time from datetime import datetime from pathlib import Path import serial import ndef import nfc from nfc.clf import RemoteTarget logging.basicConfig( format="{asctime}:{name}:{levelname}:{message}", datefmt="%Y-%m-%dT%H-%M-%S%z", style="{", level="INFO", handlers=[ logging.StreamHandler(stream=sys.stderr), logging.FileHandler( Path("data/logs") / f"{datetime.now().isoformat().replace(':', '_')}.log", mode="a", encoding="utf-8", delay=False, **({"errors": "surrogateescape"} if sys.version_info.major >= 3 and sys.version_info.minor >= 10 else {}), ), ], force=True, **({"encoding": "utf-8"} if sys.version_info.major >= 3 and sys.version_info.minor >= 10 else {}), **({"errors": "surrogateescape"} if sys.version_info.major >= 3 and sys.version_info.minor >= 10 else {}), ) connected=False while True: try: if not connected: clf = nfc.ContactlessFrontend() connected=clf.open('tty:USB0:pn532') if connected: print("CONNECTED TO TTYUSB0") else: connected = clf.open('tty:USB1:pn532') if connected: print("CONNECTED TO TTYUSB1") if connected: target = clf.sense(RemoteTarget('106A'), RemoteTarget('106B'), RemoteTarget('212F')) if target is not None: tag = nfc.tag.activate(clf, target) if tag is not None: print(tag) if tag.ndef is not None: if not len(tag.ndef.records): print("EMPTY TAG - WRITING...") if not tag.ndef.is_writeable: print("This Tag is not writeable.") break else: tag.format() #tag.ndef.records = [ndef.TextRecord("Errecinque"),ndef.TextRecord("5812345678")] record=ndef.TextRecord("Errecinque,fixture,5812345678") tag.ndef.records = [record] if tag.ndef.has_changed: print("WRITE ERROR") else: print("WRITE OK") for record in tag.ndef.records: print(record) else: print("ERROR NOT NDEF") else: print("NO TARGET") else: print("NOT CONNECTED") except Exception as e: print(f"EXCEPTION {e}") connected=False time.sleep(0.3) print("EXITING") clf.close()