#!/usr/bin/env python3 """Testprogramm: Koordinaten von Hand uebergeben und auf der Grossanzeige ausgeben. Beispiele: python3 show_coords.py 12h34m56s +45d12m30s python3 show_coords.py 12:34:56 -07:15:00 python3 show_coords.py 12h34m56s +45d12m30s --dry-run python3 show_coords.py --clear """ import argparse import sys import config import coords import migra from display import open_display def main(argv=None): p = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) p.add_argument("ra", nargs="?", help="Rektaszension, z.B. 12h34m56s oder 12:34:56") p.add_argument("dec", nargs="?", help="Deklination, z.B. +45d12m30s oder +45:12:30") p.add_argument("--port", default=config.PORT, help="serieller Port (Vorgabe: %(default)s)") p.add_argument("--brightness", type=int, help="Helligkeit 0-100 %% setzen") p.add_argument("--clear", action="store_true", help="Anzeige loeschen und beenden") p.add_argument("--dry-run", action="store_true", help="nichts senden, nur die Telegramme als Hex zeigen") p.add_argument("--no-response", action="store_true", help="ohne Antworttelegramm senden (wenn die RS232-Rueckleitung fehlt)") args = p.parse_args(argv) if not args.clear and (args.ra is None or args.dec is None): p.error("Rektaszension und Deklination angeben (oder --clear)") if not args.clear: line1 = coords.format_ra(args.ra) line2 = coords.format_dec(args.dec) print("Zeile 1: %r" % line1) print("Zeile 2: %r" % line2) for name, line in (("Zeile 1", line1), ("Zeile 2", line2)): if len(line) > config.CHARS_PER_LINE: print("Warnung: %s ist laenger als CHARS_PER_LINE=%d" % (name, config.CHARS_PER_LINE), file=sys.stderr) d = open_display(port=args.port, fake=args.dry_run, response=config.WANT_RESPONSE and not args.no_response) try: if args.brightness is not None: d.set_brightness(args.brightness) if args.clear: d.clear() else: d.show_lines(line1, line2, clear=True) # Einzelaufruf: einmal sauber loeschen except migra.MigraError as e: print("Fehler: %s" % e, file=sys.stderr) return 1 finally: d.close() print("OK") return 0 if __name__ == "__main__": sys.exit(main())