RA in Zehntelminuten mit Beschriftung: "RA 18h36.9m" / "DE +38°47'"
Die GM4000 liefert im Auslieferzustand keine Sekunden, sondern Zehntelminuten.
Bisher wurde daraus eine Sekundenanzeige gerechnet -- die sprang in
6-Sekunden-Schritten, weil die Rohdaten sie gar nicht hergeben. Die Zehntelform
ist ehrlicher und kuerzer, und der gewonnene Platz traegt die Beschriftung:
RA 18h36.9m
DE +38°47'
Bei Hochpraezision entfaellt die Beschriftung, dort braucht die Deklination mit
+38°47'01" alle Zellen.
Der Mock konnte das gar nicht nachstellen -- er sendete immer das
Hochpraezisionsformat. Neu: "mount_mock.py --low" bildet den Auslieferzustand ab
(RA als HH:MM.T, DEC ohne Bogensekunden). Vorgabe bleibt hoch, damit die
bestehenden Tests mit ihren festen Erwartungen unveraendert durchlaufen.
Zur Darstellung, alles am Geraet ausprobiert:
- **Schmale Zeichen** (config.CELL_NARROW): Dezimalpunkt und der Abstand
zwischen Beschriftung und Wert bekommen 3 statt 6 px -- in der Sperrschrift
standen sie sonst sehr luftig. Fuer die Leerzeichen am Zeilenende gilt das
nicht, die sollen den Rest der Zeile ueberschreiben.
- Damit entscheidet die **Pixelbreite** ueber das Abschneiden, nicht mehr die
Zeichenzahl: "RA 18h36.9m" sind 11 Zeichen und trotzdem nur 60 px.
- **Linksbuendig ab LINE_X = 0**, der Schalter zum Zentrieren ist entfallen.
Zentriert standen die Zeilen um wenige Pixel gegeneinander versetzt, weil die
RA-Zeile mit ihrem schmalen Punkt kuerzer ist als die DEC-Zeile.
Ein Zwischenschritt, der wieder verworfen wurde und als Warnung im Code steht:
Ein Doppelpunkt als Trenner ("RA:18h36.9m") sah in Zeichensatz 0 zu wuchtig aus;
der aus Zeichensatz 1 ist schlanker, steht aber mitten in der obersten Zeile --
und jeder Zeichensatzwechsel zerstoert die Home-Zelle. Das erste Zeichen danach
noch einmal zu schreiben machte es schlimmer: Das nachgezogene Zeichen bemalt
GLYPH_WIDTH Pixel und frisst die linke Spalte seines rechten Nachbarn. Deshalb
steht in der obersten Zeile jetzt bewusst kein Sonderzeichen.
161 Tests gruen, am Geraet bestaetigt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+12
-6
@@ -556,13 +556,17 @@ class TestEsp32GegenMock(unittest.TestCase):
|
||||
self.assertIn("Selbsttest bestanden", text)
|
||||
|
||||
def test_main_once_zeigt_die_koordinaten(self):
|
||||
self._run(self.run_esp32.main, fake_display=True, once=True)
|
||||
"""Der Mock sendet 18:36:56; bei Niedrigpraezision (config-Vorgabe) wird
|
||||
daraus die Zehntelform mit Beschriftung."""
|
||||
self._run(self.run_esp32.main, fake_display=True, once=True,
|
||||
with_mqtt=False)
|
||||
text = "\n".join(self.log)
|
||||
self.assertIn("18h36m56s", text) # RA, fuer die Anzeige formatiert
|
||||
self.assertIn("+38", text) # DEC
|
||||
self.assertIn("RA 18h36.9m", text)
|
||||
self.assertIn("DE +38", text)
|
||||
|
||||
def test_main_once_baut_ein_gueltiges_telegramm(self):
|
||||
hexdump = self._run(self.run_esp32.main, fake_display=True, once=True)
|
||||
hexdump = self._run(self.run_esp32.main, fake_display=True, once=True,
|
||||
with_mqtt=False)
|
||||
self.assertIn("TX: 02 81 80 81", hexdump) # STX, DA, SA, FC
|
||||
self.assertTrue(hexdump.strip().endswith("03")) # ETX
|
||||
|
||||
@@ -574,7 +578,8 @@ class TestEsp32GegenMock(unittest.TestCase):
|
||||
self.mock.stop()
|
||||
with contextlib.redirect_stdout(io.StringIO()) as out:
|
||||
self.run_esp32.main(host="127.0.0.1", port=self.mock.port,
|
||||
fake_display=True, once=True, log=self.log.append)
|
||||
fake_display=True, once=True, with_mqtt=False,
|
||||
log=self.log.append)
|
||||
self.assertTrue(any("Montierung" in line for line in self.log))
|
||||
# Die Hinweiszeilen stehen wirklich im Telegramm -- ohne den Text hier
|
||||
# zu wiederholen, sonst bricht der Test bei jeder Umformulierung.
|
||||
@@ -598,7 +603,8 @@ class TestEsp32GegenMock(unittest.TestCase):
|
||||
import io
|
||||
with contextlib.redirect_stdout(io.StringIO()):
|
||||
self.run_esp32.main(host=self.mock.host, port=self.mock.port,
|
||||
fake_display=True, once=True, log=self.log.append)
|
||||
fake_display=True, once=True, with_mqtt=False,
|
||||
log=self.log.append)
|
||||
finally:
|
||||
config.WIFI_TIMEOUT = orig
|
||||
text = "\n".join(self.log)
|
||||
|
||||
Reference in New Issue
Block a user