- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 10

Thema: mplayer-therad-umschaltung mit Taster aus C heraus !?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    mplayer-therad-umschaltung mit Taster aus C heraus !?

    Ich möchte ein sehr simples Internetradio in C "bauen", das nur aus einem Taster am RPI besteht.
    Dazu habe ich das folgende Programm geschrieben, das aus dem "Autostart" /etc/rc.local auch
    gut läuft, aber eben nur mit der ertsne Radiostation radio1.pls .
    Die Taster-Abfrage wird natürlich gar nicht erst durchgeführt, da das Programm im mplayer
    festhängt (eine Tastatur für ^C soll nicht angeschlossen werden).

    Wie kann ich (bin Linux- und RPI-Laie) einfach ohne jahrelanges Studium von Multithreading o.ä.
    (Thread-Tippfehler im Thread-Titel )
    das Ganze mit der Programmweiterschalttaste zum Laufen bekommen (vielleicht kann jemand
    sogar den Quelltext posten, wenn das nicht doch viel zu kompliziert ist) ?
    Code:
    #include <wiringPi.h>
    #include <stdio.h>
    int main() {
      pinMode(5, INPUT);
      while(1) {
        system ("mplayer -playlist /home/pi/mplay/radio1.pls");
        if(digitalRead(5)==1) 
          system ("mplayer -playlist /home/pi/mplay/radio2.pls");
        if(digitalRead(5)==1) 
          system ("mplayer -playlist /home/pi/mplay/radio3.pls");
        if(digitalRead(5)==1) 
          system ("mplayer -playlist /home/pi/mplay/radio4.pls");
        if(digitalRead(5)==1) 
          system ("mplayer -playlist /home/pi/mplay/radio5.pls");
        if(digitalRead(5)==1) 
          system ("mplayer -playlist /home/pi/mplay/radio6.pls");
      }
    }
    Geändert von alldroid (24.08.2016 um 17:57 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Klar bleibt das beim mplayer hängen. Ich weiss nicht genau ob es sich bei system() genau so verhält wie im Terminal, gehe aber davon aus. Entsprechend müsstest du

    Code:
    system ("mplayer -playlist /home/pi/mplay/radio1.pls &");
    verwenden. Dann sollte mplayer gestartet werden ohne das Programm zu blockieren.

    Nächstes Problem dürftest du dann aber haben, dass mit dem nächsten Aufruf einfach ein neuer mplayer gestartet wird und du auf einmal zwei laufen hast. Von daher wäre vorher ein Aufruf

    Code:
    system("killall mplayer");
    von Nöten sein. Habe ich selbst aber nicht getestet. Denke aber das es so funktionieren könnte.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Hallo,

    eine solche Antwort wollte ich auch erst posten, finde das aber 'irgendwie' unsauber, da beim Killen evtl. der Audiopuffer ständig die letzte Sequenz abspielt. Also erst Tonaus, dann killen, dann mit neuem Stream starten, dann paar Millisekunden warten und dann Ton wieder an.

    Ich nutze für Internetradio den MPD. Der lässt sich relativ einfach 'fernbedienen'
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Wirklich toll ist es in der Tat nicht und ich glaube auch unter Phyton kann man das besser lösen. Zumindest habe ich mal vor ein paar Jahren ein Programm in Phyton gesehen wo man über http den mplayer steuern kann. Habe auch schon geguckt, finde das Forum aber nicht mehr.

    Richtig sauber wird es aber wohl erst, wenn man den Stream direkt aus dem Netz holt und dann im Programm selbst abspielt. Das ist aber auch ungleich mehr Aufwand.

  5. #5
    HaWe
    Gast
    Python, die Riesenschlange (wahrscheinlich wegen dem Monsterbandwurmcode), nicht Phyton, das Plankton-Micropflänzchen

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Wer wird denn hier spitzfindig

Ähnliche Themen

  1. Light L16: Kompaktkamera mit 16 Objektiven fordert Spiegelreflexkameras heraus
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 08.10.2015, 11:20
  2. Einarmiger Roboter: Willow Garage bringt einen günstigeren PR2 heraus
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 11.08.2011, 10:20
  3. Hilfe...finde die fehler nicht heraus
    Von Kuwe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 13
    Letzter Beitrag: 21.04.2010, 20:29
  4. RX TX Umschaltung
    Von cardhu im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 15.08.2008, 21:48
  5. Interrupt aus Interruptroutine heraus??
    Von Baui im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 06.05.2005, 15:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress