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:
@@ -23,6 +23,8 @@ python3 run_display.py --host 10.0.0.42 # andere IP
|
||||
python3 run_display.py --mock --move # ohne Teleskop: lokaler Mock, RA läuft
|
||||
python3 run_display.py --mock --move --ldr 2000 # zusätzlich mit Helligkeitsregelung
|
||||
python3 mount_mock.py --move # Mock separat starten
|
||||
python3 mount_mock.py --move --low # ... im Auslieferformat der GM4000
|
||||
# (RA als HH:MM.T, DEC ohne Sekunden)
|
||||
|
||||
# Helligkeit aus einem LDR-Wert setzen:
|
||||
python3 brightness.py --ldr 1500 # LDR-Rohwert -> Helligkeit -> senden
|
||||
@@ -310,16 +312,23 @@ die Reihenfolge der Telegramme statt der Reihenfolge innerhalb eines Telegramms.
|
||||
|
||||
- Die Deklination passt damit in **voller Form mit abschließendem `"`**
|
||||
(`+38°47'01"`, 10 Zeichen). `coords.format_dec` wählt automatisch die breiteste
|
||||
Form, die in `CHARS_PER_LINE` passt — bei Niedrigpräzision entsprechend
|
||||
`+38°47'` ohne Sekunden.
|
||||
Form, die in die Zeile passt — bei Niedrigpräzision entsprechend `+38°47'`
|
||||
ohne Sekunden.
|
||||
|
||||
- **Zeilen werden zentriert** (`CENTER_LINES = True`). Das wirkt auf zwei Ebenen:
|
||||
`LINE_X` rückt den Zeichenblock in die Mitte (10·6 = 60 px lassen je 2 px Rand),
|
||||
und kürzere Texte werden beidseitig mit Leerzeichen aufgefüllt. Der Block bleibt
|
||||
dabei immer gleich breit und an derselben Stelle — so überschreibt er bei jedem
|
||||
Durchlauf denselben Bereich und lässt keine Reste stehen. Ein pixelgenau
|
||||
mitwandernder Offset könnte das nicht; dafür ist die Zentrierung nur auf eine
|
||||
halbe Zelle (3 px) genau, wenn die Restbreite ungerade ist.
|
||||
- **Schmale Zeichen bekommen weniger Platz** (`config.CELL_NARROW`). Der
|
||||
Dezimalpunkt der Zehntelminuten und der Abstand zwischen Beschriftung und Wert
|
||||
belegen statt 6 nur 3 px — in der Sperrschrift standen sie sonst sehr luftig.
|
||||
Möglich ist das nur, weil ohnehin jedes Zeichen einzeln positioniert wird.
|
||||
Für die Leerzeichen am Zeilenende gilt es *nicht*: Die sollen den Rest der
|
||||
Zeile überschreiben und behalten die volle Breite.
|
||||
|
||||
Deshalb entscheidet die **Pixelbreite** über das Abschneiden, nicht die
|
||||
Zeichenzahl: `RA 18h36.9m` sind 11 Zeichen und trotzdem nur 60 px, `DE +38°47'`
|
||||
wären als 11 volle Zellen dagegen 66 px und damit zu breit.
|
||||
|
||||
- **Zeilen stehen linksbündig** ab `LINE_X = 0`. Zentriert waren sie
|
||||
zwischenzeitlich, standen dann aber um wenige Pixel gegeneinander versetzt, weil
|
||||
die RA-Zeile mit ihrem schmalen Dezimalpunkt kürzer ist als die DEC-Zeile.
|
||||
|
||||
- **Es wird nur geschrieben, was sich geändert hat.** `show_lines` vergleicht gegen
|
||||
den zuletzt dargestellten Inhalt und schickt nur die betroffenen Zellen; eine
|
||||
@@ -353,15 +362,23 @@ RA als `HH:MM.T` (Zehntel-Minuten), DEC als `sDD°MM` (ganze Bogenminuten). Das
|
||||
Gradzeichen kommt als Byte `0xDF` — auf der Anzeige korrekt als Gradring dargestellt;
|
||||
in der Terminal-Konsole erscheint der **Rohwert** dieses Bytes als `ß` (rein kosmetisch).
|
||||
|
||||
`config.HIGH_PRECISION` steuert die DEC-Darstellung:
|
||||
- `False` (Vorgabe): DEC ohne Sekunden (`-00°55'`).
|
||||
- `True`: DEC mit Sekunden (`+38°47'01`) — erst sinnvoll, wenn die Montierung per
|
||||
`:U#` auf Hochpräzision gestellt ist (schreibendes Kommando, hier bewusst nicht
|
||||
automatisch gesendet).
|
||||
`config.HIGH_PRECISION` steuert die ganze Darstellung — sie folgt dem, was die
|
||||
Montierung wirklich liefert:
|
||||
|
||||
Die **RA** wird immer mit Sekunden gezeigt (`11h36m54s`); bei Niedrigpräzision
|
||||
kommen die Sekunden aus den Zehntel-Minuten und springen daher in 6-Sekunden-Schritten
|
||||
(kein Dezimalpunkt — der wirkt in der Sperrschrift zu luftig).
|
||||
| | Niedrigpräzision (Vorgabe) | Hochpräzision (nach `:U#`) |
|
||||
|---|---|---|
|
||||
| Zeile 1 | `RA 18h36.9m` | `18h36m56s` |
|
||||
| Zeile 2 | `DE +38°47'` | `+38°47'01"` |
|
||||
|
||||
Bei Niedrigpräzision zeigt die **RA Zehntelminuten** statt Sekunden — genau die
|
||||
Auflösung der Rohdaten. Bis 2026-07-27 wurde hier in Sekunden umgerechnet
|
||||
(`11h36m54s`); die sprangen aber in 6-Sekunden-Schritten, weil die Montierung sie
|
||||
gar nicht hergibt. Die kürzere Form lässt zugleich Platz für die **Beschriftung**
|
||||
`RA` / `DE` (`config.LABEL_RA`, `LABEL_DEC`).
|
||||
|
||||
Bei Hochpräzision entfällt die Beschriftung: Dort braucht die Deklination mit
|
||||
`+38°47'01"` alle Zellen. `:U#` ist ein schreibendes Kommando und wird hier
|
||||
bewusst nicht automatisch gesendet.
|
||||
|
||||
`coords.format_ra`/`format_dec` nehmen `high_precision=` als Parameter (Vorgabe aus
|
||||
`config`). Die Montierungs-Rohwerte werden im `coords`-Parser unverändert korrekt
|
||||
|
||||
Reference in New Issue
Block a user