68 lines
2.4 KiB
Python
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())
|