Autor: Bernhard
Die Simulationen wurden auf der SDL2-Bibliothek
codiert, mit der eigentlich Spiele programmiert
werden. Diese Bibliothek hat einen etwas höheren Ressourcenanspruch,
kann dafür aber sowohl mit X11, als auch DRM-Unterstützung gebaut
werden. Sprich, man kann auf X11 im Rendering verzichten und dafür den
DRM Support der Raspberries nutzen.
Die Installation:
sudo apt-get install libsdl2-
danach 2x Tab drücken und es werden alle
verfūgbaren Pakete angezeigt. Man kann gleich alle Pakete installieren, gebraucht wird eigentlich nur dev, image und ttf.
Alternativ kann man mit der Anweisung:
sudo apt-get install libsdl2-*
ebenfalls alles zu SDL2 in einem Rutsch installiert werden.
Unterhalb der Ordner /home/pi/iRadio/display/x11 liegen schon einige Beispiele für Skalensimulationen. Eine Beschreibung über deren Eigenschaften und wie man sie auf eigene Bedürfnisse abändert folgt am Ende dieser Anleitung. Erst möchte ich die grundsätzliche Installation am Beispiel der Simulation skale1 abhandeln.
Es sind noch Vorarbeiten notwendig damit x11-Skalensimulation auf die Beine kommt:
- in der sdlskale.cxx im Ordner /home/pi/iRadio/display/x11/skale1 (um
beim Beispiel zu bleiben, das gilt auch für die anderen x11-Ordner)
müssen die Bilddateien skale.png und zeiger.png mit den absoluten Pfaden
eingetragen sein, falls noch nicht geschehen. Aus den Zeilen:
textur_skale = IMG_LoadTexture(renderer, "skale.png");
textur_zeiger = IMG_LoadTexture(renderer, "zeiger.png");
wird dann:
textur_skale = IMG_LoadTexture(renderer, "/home/pi/iRadio/display/x11/skale1/skale.png");
textur_zeiger = IMG_LoadTexture(renderer, "/home/pi/iRadio/display/x11/skale1/zeiger.png");
- nächstes Problem:
mit
der Demo-playlist wird das Radio grundsätzlich spielen. Bevor X11 mit der
Skalensimulation starten kann muss aber zwangsweise eine eigene playlist
entweder per USB-Stick oder über den /boot Ordner eingespielt werden.
Mit der Anweisung sudo ./build.sh im entsprechenden skale-Ordner wird die Skalensimulation gebaut.
Danach muss
das Binärfile natürlich noch bei Rechnerstart zusammen mit X11/DRM
gestartet werden. Hierzu wird der Start von X11 mit dem absoluten Pfad
zu Simulation sdlskale in der Datei /etc/rc.local eingetragen:
startx /home/pi/iRadio/display/x11/skale1/sdlskale
So könnte die rc.local dann aussehen. Der Aufruf von displayd ist auskommentiert, weil die x11-Animation die Grafik übernimmt:
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
/usr/bin/vlcd &
# /usr/bin/displayd &
/usr/bin/gpiod &
sleep 10
echo "play" | nc 127.0.0.1 9294 -N
echo "goto 0" | nc 127.0.0.1 9294 -N
#amixer -M set PCM 85%
startx /home/pi/iRadio/display/x11/skale1/sdlskale &
exit 0
Kommen wir nun zu den einzelnen Typen der Simulation.
Die Simualtion 1 stellt eine Linearskala im Breitformat dar, wie Sie viele Röhrenradios haben. Das sähe dann so aus:
In Simulation 2 haben wir es mit einer Rundskala zu tun.
Man kann diesen Democode für das iRadio durchaus mit eigenen Skalen abändern. Es müssen nur neue Skalenfotos aufgenommen, bearbeitet und als PNG abgespeichert werden.
Hier eine kleine Anleitung für Simulation 1:
Nachdem ein qualitativ ausreichendes Foto oder Scan eines Skalenglases angefertigt wurde, lädt man dieses in eine Bildbearbeitung, welche Alpha-Kanal und PNG-Format unterstützt. Ich benutze mal das kostenlose und unter Unix weit-verbreitete GIMP.
Dann skaliert man das Foto in die native Auflösung des später benutzen Panels:
Diese Auflösung trägt man im Simulationscode an der gezeigten Stelle ein.
Jetzt ermittelt man die Pixelwerte des linken und rechten Zeigeranschlages. Auch diese Werte werden in den Simulationscode eingetragen.
Danach fängt die Fummelarbeit an. Da wo der Skalenzeiger durchscheinen soll, muss man den Bildinhalt auf dem Skalenfoto löschen.
Ist man damit fertig, dann speichert man das Skalenglas als PNG-Datei ab.
Damit wirklich jede Station einen Platz auf der Skala zugeordnet bekommt, muss man auf ein Detail bei der Erstellung der Programmliste achten. Es dürfen dort nur URLs eingetragen sein, bei der die Radiostation kein URL-Redirection verwendet! Auf Grund eines Bugs in vlc, der bis dato nicht vom Entwicklerteam beseitigt wurde, kann die eingestellte Radiostation nur über Ihre URL eindeutig zugeordnet werden! Wird diese jedoch durch URL-Umleitung verändert und stimmt somit nicht mehr mit der URL in der Senderliste (Playlist.m3u) überein, kann eine Identifizierung der Station (noch!) nicht erfolgen. Der Zeiger bleibt in dieser Situation einfach auf der vorhergehend eingestellten Station stehen.
Wie erkennt man eine URL-Umleitung?
Ganz einfach. Man lädt das Radio einfach mit der erstellten Playlist und wechselt per Taster/Drehencoder/what ever auf die suspekte Station. Dann loggt man sich über das Netzwerk per Remote-Interface beim iRadio ein und setzt ein status-Kommando ab.
Keine Kommentare:
Kommentar veröffentlichen