First commit
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""LX200-Protokoll fuer die 10Micron GM4000 HPS II.
|
||||
|
||||
Nur das Rahmen der Kommandos und Entpacken der Antworten. Das Parsen der
|
||||
Koordinatenwerte macht coords.py (dessen Parser ist bewusst tolerant gegenueber
|
||||
den verschiedenen LX200-Trennzeichen ':', '*', 0xDF, "'").
|
||||
|
||||
Reines Python, laeuft auch unter MicroPython.
|
||||
|
||||
Kommando: ":" <Befehl> "#" z.B. :GR#
|
||||
Antwort: <Zeichen...> "#" z.B. 18:36:56# (Get-Kommandos)
|
||||
bzw. ein einzelnes Zeichen ohne "#" bei Steuerkommandos (hier ungenutzt)
|
||||
"""
|
||||
|
||||
TERMINATOR = "#"
|
||||
|
||||
# Abfragekommandos (Get) -- liefern eine mit "#" abgeschlossene Antwort.
|
||||
GET_RA = ":GR#" # Rektaszension des Teleskops
|
||||
GET_DEC = ":GD#" # Deklination des Teleskops
|
||||
GET_PRODUCT = ":GVP#" # Produktname, z.B. "10micron GM4000HPS"
|
||||
GET_FIRMWARE = ":GVN#" # Firmware-Version
|
||||
|
||||
|
||||
class LX200Error(Exception):
|
||||
"""Fehler im LX200-Protokoll."""
|
||||
|
||||
|
||||
def command(cmd):
|
||||
"""Einen Befehl in die Rahmenform ":<cmd>#" bringen.
|
||||
|
||||
Nimmt sowohl "GR" als auch bereits gerahmte ":GR#" entgegen.
|
||||
"""
|
||||
cmd = cmd.strip()
|
||||
if cmd.startswith(":"):
|
||||
cmd = cmd[1:]
|
||||
if cmd.endswith(TERMINATOR):
|
||||
cmd = cmd[:-1]
|
||||
if not cmd:
|
||||
raise LX200Error("leeres Kommando")
|
||||
return ":" + cmd + TERMINATOR
|
||||
|
||||
|
||||
def strip_terminator(response):
|
||||
"""Das abschliessende "#" entfernen und Rest liefern."""
|
||||
if not response.endswith(TERMINATOR):
|
||||
raise LX200Error("Antwort ohne Abschluss '#': %r" % (response,))
|
||||
return response[:-len(TERMINATOR)]
|
||||
Reference in New Issue
Block a user