einfaches Programm für internetradio

Ach so , nun ich wollte mit einer andern Tastenkombination die in eine anderen Konsole wechseln, welches mit vidcontrol ja geht, eigentlich war es das was ich gesucht hatte.
Zumindest geht es damit :-) oder gibt es saubere lösungen im sh script die Konsole zu wechseln ?
 
Nun es geht auch mit der Escape-Sequenzen echo "\033[nz" wobei n zwischen 0-7 ist und nicht wie bei Vidcontrol 1-8.
kennte jemand eine escape sequenz um die Kursor unsichtbar zu machen ?
 
Interessant. Bei mir gibt das nur \033[nz aus. Sonst passiert nichts weiter. Vielleicht mit printf? Ich will jetzt nicht auf die Konsole wechseln, da muss ich gleich neu booten, weil ich Intel-Grafik habe.
 
also wenn ich direkt in der Konsole echo -e "\033[1z" eingebe wechsel ich zur Konsole dir man mir F2 erreicht. ich kann damit auch auf eine Konsole gehen wo ich nicht eingelogt bin. Ich habe kein KDE oder sonstiges x-system drauf.

das -e nicht vergessen zum einleiten der Escape-Sequenzen

und ich arbeite mit der sh ich weis ja nun nicht ob in einer anderen shell die Escape-Sequenzen anders eingeleitet werden

hier mal das Script mit escape-sequenzen wobei mir das noch fehlt wo der Cursor unsichtbat ist

Code:
#!/bin/sh
# Radioscript

# Zuordnung Radiosender
Dieneue1077A=http://ice.streaming.spacenet.de/dieneue1077
Dieneue1077B=http://dieneue1077.ice.streaming.spacenet.de/dieneue1077
Dieneue1077_80erA=http://dieneue1077-80er.ice.streaming.spacenet.de/dieneue1077_80er
Dieneue1077_80erB=http://ice.streaming.spacenet.de/dieneue1077_80er
Dieneue1077_livesongsA=http://dieneue1077-live.ice.streaming.spacenet.de/dieneue1077_live
Dieneue1077_livesongsB=http://ice.streaming.spacenet.de/dieneue1077_live
SWR3liveA=http://62.27.44.15/swr3live/livestream.mp3
SWR3liveB=http://213.200.97.110/swr3live/livestream.mp3
Dlr=http://dradio-mp3.t-bn.de/dlr128k_live
EinsliveA=http://gffstream.ic.llnwd.net/stream/gffstream_stream_wdr_einslive_a
EinsliveB=http://gffstream.ic.llnwd.net/stream/gffstream_stream_wdr_einslive_b
RTL_Halle_890A=http://62.75.176.45/rtl-high
RTL_Halle_890B=http://890rtl.radio.de:8000/relay-1394
Bremen4=http://gffstream.ic.llnwd.net/stream/gffstream_mp3_w49a
NDR1_Niedersachsen=http://ndr.ic.llnwd.net/stream/ndr_ndr1niedersachsen_hi_mp3
NDR2=http://ndr.ic.llnwd.net/stream/ndr_ndr2_hi_mp3

# Sendernamen bitte der Reihe nach eingeben
IFS='
'
sendernamenA="Die Neue 107,7
Die Neue 107,7 80er
Die Neue 107,7 live
Suedwest Rundfunk 3 live
Deutschland Radio
Einslive
RTL Halle 89,0
Bremen 4
NDR1 Niedersachsen
NDR2
Reserve
Reserve
Reserve
Reserve
Reserve
Reserve
Reserve
Reserve
Reserve
Reserve
Reserve
Reserve"

# erstellen der Anzeige Sender und Medlungen
sender () { echo -e "\033[34m $1\033[0;32m" ; }
meldung () { echo -e "\033[2K\033[24;1H\033[31m$1\033[0m" ; } 

# funktion sende welchen kanal und zeige auch an
mpgende () { killall mpg123 >/dev/null 2>&1 ; }
sende () { $mpg123 -- stereo $1 >/dev/null 2>&1 & >/dev/null ;
           echo -e "\033[2K\033[24;1HEs wird gesendet\033[K" ;
           echo -e "\033[24;17H\033[5;34;40m$2\033[0;32m" ;}

# Ort des Equalizer und mpg123
equalizerdat=/usr/home/michael/mpg123/mpg123-1.8.1/equalizer.dat
mpg123=/usr/local/bin/mpg123
radioout=/usr/home/michael/radio.out

# Baue Menue auf wähle auf und spiel ab
echo -e "\033[2J"
echo -e "\033[=1S"
echo -e "\033[H\033[32m"
spaltenA=1
while [ $spaltenA != 80 ]
    do
      echo -e "\033[2;"$spaltenA"H*\033[21;"$spaltenA"H*"
      spaltenA=`expr $spaltenA + 1`
    done
echo -e "\033[3;27H!! Internetradioscript !!"
echo -e "\033[4;22HFolgende Auswahl steht zu verfuegung"
zeileA=6
auswahlA=1
for sendernameA in $sendernamenA;
    { echo -e "\033[$zeileA;`if [ $auswahlA -le 11 ]
                               then
                                 if [ $auswahlA -le 9 ]
                                   then echo 6
                                   else echo 5
                                 fi
                               else
                                  echo 45
                               fi`H$auswahlA`sender "$sendernameA"`"
    zeileA=`expr $zeileA + 1`
    auswahlA=`expr $auswahlA + 1`
    if [ $auswahlA = 12 ] # Anzahl der Sendereihen
      then zeileA=6
    fi  ; }
echo -e "\033[18;25H77 zum beenden des Senders"
echo -e "\033[19;25H88 wechsel zur Konsole Hausteuerung"
echo -e "\033[20;25H99 um script zu beenden"
scriptende=0
while [ $scriptende != 1 ]
  do
    echo -e "\033[32m\033[22;1HIhre Auswahl bitte:"
    echo -e "\033[2K\033[1A"
    read sender
    case $sender in
       1) mpgende ; sende "$Dieneue1077A" "`sender "Die Neue 107,7"`" ;;
       2) mpgende ; sende "$Dieneue1077_80erA" "`sender "Die Neue 107,7 80er"`" ;;
       3) mpgende ; sende "$Dieneue1077_livesongsA" "`sender "Die Neue 107,7 Live"`" ;;
       4) mpgende ; sende "$SWR3liveA" "`sender "Suedwest Rundfunk 3 Live"`" ;;
       5) mpgende ; sende "$Dlr" "`sender "Deutschland Radio"`" ;;
       6) mpgende ; sende "$EinsliveA" "`sender "Einslive"`" ;;
       7) mpgende ; sende "$RTL_Halle_890A" "`sender "RTL Halle 89,0"`" ;;
       8) mpgende ; sende "$Bremen4" "`sender "Bremen 4"`" ;;
       9) mpgende ; sende "$NDR1_Niedersachsen" "`sender "NDR 1 Niedersachsen"`" ;;
      10) mpgende ; sende "$NDR2" "`sender "NDR 2"`" ;;
      77) mpgende ; meldung "Sender beendet" ;;
      88) echo -e "\033[0z" ;;
      99) meldung "Radioscript wird beendet und Konsole neue aufgebaut" ; scriptende=1 ;;
       *) meldung "Fehleingabe bitte wiederholen"
    esac
done
mpgende
echo -e "\033[=S"
sleep 1
clear
 
Zuletzt bearbeitet:
Cursor unsichtbar: echo -e "\033[?25l"
Cursor wieder sichtbar machen: echo -e "\033[?25h"
 
Ähm, ja...

Von diesen "Steuersequenzlisten" geistern viele verschiedene Versionen im Netz rum. Keine Ahnung, von wo ich meine Kopie mal her hatte. Das Problem dabei ist, daß unterschiedliche Terminals nicht unbedingt die gleichen Steuersequenzen unterstützen. Die sauberste Lösung wäre, "ncurses" zu verwenden, womit dein Programm unabhängig vom verwendeten Terminal bleibt. Ist halt die Frage, ob du diesen (Einarbeitungs-)Aufwand jetzt, wo dein Shell-Skript eh schon so gut wie fertig ist, noch betreiben willst.

Jedenfalls hatte ich die beiden von mir oben angegebenen Sequenzen nur mit einem xterm getestet, wo sie einwandfrei funktionieren. Auf der Systemkonsole hatte ich natürlich nicht nochmal getestet... :grumble:

Aber zum Glück gibt es ja /etc/termcap. Deren Einträgen zufolge braucht man für die cons25-Familie folgende Sequenzen:
  • Cursor unsichtbar: echo -e "\033[=1S"
  • Cursor wieder sichtbar machen: echo -e "\033[=S"
Das funktioniert jetzt aber wirklich - ich habe es extra auf der Konsole getestet. :) Dank der guten nVidia-Karte(tm) konnte ich das sogar ohne Reboot machen. :D
 
Um es endgültig zu wirr zu machen, im kommenden FreeBSD 8.0 schwimmt die syscons(4)-Konsole auf dem libteken Terminalemulator. libteken emuliert dabei dabei mehrere Terminaltypen, je nach dem was der Nutzer möchte. So hat man da aus Sicht der Software ein VT100, ein cons25, ein xterm-color, etc. Man weiß es vorher nicht. Was es mit Steuersequenzen nur noch ekliger macht.
 
jupp danke 0815Chaot die sequenz geht :-) es so dumm aus alles bissel farblich aber der Cursor weis *g*

Nun mit ncurses habe ich auch schon ein kleines C++ prgramm geschrieben, aber ist das denn immer vorhanden auf den Terminals oder mus da x-system drauf sein ?.
Ich wollte eigentlich ein script schreiben das ebend mit dem grundsystem auskommt.
Natürlich auch mal zum üben :-).

Habe den neuen Code oben mal eingeführt er läuft soweit eigentlich gut, aber bissel was ändern will ich noch versuchen. Unteranderem weis ich nicht warum bei der case abfrage der Cursor immer am anfang der Zeile sprint auch wenn ich mit /033[10;10H den cursor umsetze.

Yamagie und dann soll man da noch durchsteigen ? *g*

Geht das eigentlich das ich aus den Container
Test="nummer1
nummer2
nummer3"

mir einfach nur eine rausnehme z.b "nummer2" ?
irgendwie mit $test(1) (was natürlich nicht geht) oder so ?
 
Zuletzt bearbeitet:
Zurück
Oben