Files
2026-07-16 09:05:56 +02:00

68 lines
2.4 KiB
Python

#!/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())