Ich weiss nicht, ob und welche Cookies Wordpress nutzt. Aber bevor irgendein Abmahner Erbsen zählt: Durch die weitere Nutzung der Seite stimmst Du der eventuellen Patzierung von Cookies zu Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden. Weiterhin erlaubt diese Seite keinerlei Nutzerinteraktion mehr und wird nur als Plattform für persönliche Kommentare genutzt. Damit werden natürlich auch keinerlei persönliche Daten gespeichert und verarbeitet. Diese Einstellungen gelten solange, bis die neue DSGVO derart wasserdicht gemacht wurde, dass private, nicht zu kommerziellen Zwecken eingesetzte Webseiten nicht mehr befürchten müssen, von gierigen Juristen wegen Kleinigkeiten abgemahnt zu werden.

Schließen

Während man DX jagt…. « DK5DC/AA6HM

Menu

open all | close all

Gallery

036-2005-dakota.jpg 061-2005-hubbell.jpg

Während man DX jagt….

Wenn man auf der Frequenz einer DX Station sitzt und wartet dranzukommen (hier:KH8), kann schon mal Langeweile aufkommen. Glücklicherweise grinst mich an der Station immer der Raspberry Pi an, dem ich weiland einen gereinigten UV-3R und einen TNscreenshot.3C-Pi verpasst hab. Dann lag da noch dieses kleine Adafruit LCD rum. Warum nicht mal versuchen, APRS Informationen auf dat Dingen zu bringen. Und gleich mal zu meinen Sprachkenntnissen rudimentäre Python Kentnisse hinzufügen. Gottseidank gehört  Python zu den YAFPL Sprachen (Yet another f… Programming Language), sodass es nicht sehr schwer war, mal den Datenstrom, den axlisten liefert, ein bisschen zu parsen und auf das Display zu bringen.aprs types Das Python Programm selbst ist ein flotter 15Zeiler, welches das nebenstehende Ergebnis erzielt.
Das grösste Problem war das Fehlen eines Switch{ case:} Konstrukts in Python. Da Python offensichtlich von Listenfetischisten ersonnen wurde, hab ich mal nachgeschaut, ob es nicht eine Liste in der Art [Keyword:Function] gibt. Gibt es! Heisst  ‚Assoziatives Array‘. Hier mal die Vorgehensweise am Beispiel der APRS Formate ‚Message‘ und ‚Position mit Zeitstempel‘ gezeigt. APRS Formate werden im UI Frame durch ein einzelnes Zeichen definiert. Messages beginnen mit dem Doppelpunkt und die Positionsmeldung mit Zeitstempel mit einem ‚@‘. Somit definiert man sich halt Funktionen für die Formate:

def Message():
     print "Message"
def Pos_NoTS()
     print "Pos_noTS"

damit hat man quasi seine ‚Case‘ Anweisungen erschlagen. Die Case Entscheidung selbst wird unsere assoziative Liste:

 formats = { ":"  : Message,
             "@" : Pos_noTS,
           }

Im Programm selbst befindet sich nur noch der Listenlookup, sauber von einer Abfangroutine bei unbekannten Formaten umrahmt

try:
     x = formats[line2[:1]]()
 except:
     x = "Nicht definiert"

Dem Ganzen kommt natürlich entgegen, dass axlisten die ax.25 Pakete zweizeilig raushaut. In der zweiten Zeile befindet sich die Payload des UI Paketes. Das erste Zeichen ist somit der Formatbezeicher. Alles weitere ist Schreibarbeit :-). Die etwas kryptische Anweisung ‚x = formats[line2[:1]]()‘ heisst in deutsch:
‚Nimm das erste Zeichen der Liste (eine Zeichenkette ist auch ne Liste…) line2 und suche in der Liste formats nach einer Übereinstimmung und weise das Ergebnis der Variablen X zu. Da die rechte Seite der assoziativen Liste der Name einer Funktion ist, wird halt das Ergebnis der Funktion in ‚x‘ gestöpselt. Da muss sogar der alte C-Crack zugeben, dass das fast so elegant ist wie Pointer auf Funktionen……

Um Platz im eigentlichen Programm zu sparen, steckt man die Format/Verarbeitungsliste natürlich in eine eigene Datei und fügt sie mit
‚from …… import formats

in sein Programm ein.  Und mit KH8/DL6JGN und T88QX hats denn dann auch noch in CW geklappt…….

Comments are closed.