#!/usr/bin/env python3 import argparse import binascii import logging import sys from pn532 import PN532 logger = logging.getLogger() def die(msg, exc=None): logger.error(msg) sys.exit(1) def main(): parser = argparse.ArgumentParser(prog='pn532') parser.add_argument( '-p', '--path', action='store', required=True, help='Path to the PN532 serial device, e.g. /dev/ttyUSB0', ) parser.add_argument( '-f', '--polling-frame', action='store', help='Optional custom polling frame in hex', ) args = parser.parse_args() polling_frame = None if args.polling_frame: try: polling_frame = binascii.unhexlify(args.polling_frame) except Exception as e: die('Failed to parse polling frame hex: ' + str(e)) try: pn = PN532(path=args.path) while True: pn.poll_a() if polling_frame: pn.send_broadcast(polling_frame) pn.poll_b() pn.mute() except Exception as e: die('Polling failed: ' + str(e)) if __name__ == '__main__': main()