omxplayer mit GPIO steueren

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Leute,
    erst einmal tolles Forum. Habe auch schon ne menge gelernt, ich bin noch neu in den Linux und RPI Thema.
    Ich versuch seit 2 wochen etwas scheinbar leichtes aber irgend wie ist es doch nicht so leicht.

    Der Wunsch: RPI bekommt Strom und ein Script wird gestartet, vieleicht python oder bash.
    Es gibt drei Tasten die an GPIO 17,27,22 hängen.

    17 Kapitel "zurück" KEY = i
    27 Kapitel "vorwärts" KEY = o
    22 Startet den Film

    zu gegeben habe alles mögliche schon probiert und die meisten haben in Python geschrieben deshalb habe ich es erst einmal in Python probiert. Hier der Code:

    was mache ich hier falsch ?!

    Einmal editiert, zuletzt von gogomann (17. Februar 2014 um 21:32)

  • Cool, probiere ich doch gleich mal aus.
    Der Code schau nun so aus:

    Code
    def my_callback(channel):
        job.stdin.write('p')

    Fehler:

    Code
    Traceback (most recent call last):
      File "usb_button_09_forum.py", line 24, in my_callback
        job.stdin.write('p')
    AttributeError: 'int' object has no attribute 'stdin'

    ich habe erst einmal p für Pause aus probiert. Schade und nun ?!

  • Tja, so lange der Player nicht gestartet ist, enthaelt job einen int ...

    Also neuer Versuch:

    * erst my_callback2 aufrufen
    * so lange der player noch laeuft my_callback aufrufen

    Wenn das klappt, bekommt job am besten den Wert None beim Start,
    und jeder Callback checkt ob job noch None ist.

    Zweite Stufe: irgendwann ist der Player am Ende und job sollte wieder None
    werden ...


    Da gibt's ein Beispiel fuer eine aehnliche Aufgabe: omxplayer an zwei Eingaengen

    Einmal editiert, zuletzt von Tell (17. Februar 2014 um 23:17)

  • Schade hat leider nicht geklappt.

    Code
    Traceback (most recent call last):
      File "usb_button_09_forum.py", line 24, in my_callback
        job.stdin.write('p')
    AttributeError: 'int' object has no attribute 'stdin'

    Was mache ich denn jetzt?
    Auch mit job = None
    hat es nichts gebracht. Hat jemand eine Idee?

    Tell: Ja das Beispiel habe ich auch gesehen und bin leider nicht weiter gekommen.

    Einmal editiert, zuletzt von gogomann (18. Februar 2014 um 20:25)

  • Noch ein letzter Versuch ...

    Das hier ist die Schluesselstelle (pirproc entspricht job):


    if pirproc is not None: # Wenn der Prozess gestartet wurde
    if pirproc.poll() is None: # Und noch nicht beendet ist
    pirproc.stdin.write( 'q' ) # Dann schicke ihm ein q

    Und hier wird der Prozess gestartet:
    pirproc = SP.Popen( ["/usr/bin/omxplayer","/usr/share/scratch/Media/Sounds/Percussion/Gong.wav"], stdin = SP.PIPE )

  • Danke für den Tip, teste ich jetzt.

    Code
    Traceback (most recent call last):
      File "usb_button_09_forum_01.py", line 24, in my_callback
        if job is not None:                  # Wenn der Prozess gestartet wurde
    UnboundLocalError: local variable 'job' referenced before assignment

    wow das ist ja mal ein ganz neuer Fehler, scheinbar kann man keine variablen von def zu def senden

  • Danke Tell,
    das hatte ich heute morgen auch gefunden. Leider birgt es mich nicht weiter.
    Ist es denn möglich den omxplayer über eine bash[font="Lucida Sans Unicode, Lucida Sans, Lucida Grande, Verdana, Geneva, sans-serif"] [/font]von python aus zu starten?
    in etwa so oder ähnlich?

    Code
    os.system('starte_film.sh')

    Und wenn ja das klappt dann den Film über bash stoppen u.s.w. ?

    Dann würde ich für die Aktionen immer eine bash aufrufen.

    ist dann der Code oben richtig?

    Sorry ich komme aus der php ecke und bin mit Linux, RPI und python total unerfahren.

  • Dann braucht es gar kein python mehr !

    Ich hab mal ein bisschen gespielt:

    Code
    ./tell | omxplayer /usr/share/scratch/Media/Sounds/Percussion/Gong.wav

    Und das steht im Script:

    q beendet natuerlich den Player weil ich keine langen Soundfiles auf dem System habe

  • Ich glaub ich habe ein Problem mit dem System oder so! aus lauter Verzweifelung hab ich ein kleine Script geschrieben. Ich wollte schauen ob den die Tasten befehle auch an kommen.

    Hier das Script

    und jetzt ist das komische, ganz ohne Taster oder andere Verbindungen läuft das Script mit folgenden Ausgabe:

    Ist das normal, das Script falsch oder der R-PI defekt?

    OK nun habe ich wohl den Fehler gefunden, nicht genügend im Hirn. ;)
    OK ich habe nun meine Buttons nach diesem Bild auf gebaut.
    raspberry-pi-gpio-example-circuit-connection.jpg
    gefunden hier: http://blog.oscarliang.net/use-gpio-pins-on-raspberry-pi/

    Und jetzt machen die Knöpfe auch das was sie sollen .

    Und jetzt probiere ich das alte Script noch mal.

    Einmal editiert, zuletzt von gogomann (20. Februar 2014 um 20:28)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!