Autostart probleme

  • Hallo,

    ich habe da ein Problem,

    ich habe ein test.py geschrieben die Sound Dateien bei tasten druck ausgibt.

    wenn ich die Datei mit sudo python test.py ausführe funktioniert es so wie es soll

    in /etc/rc.local habe ich folgendes eingetragen

    nach dem Reboot habe ich grep python ausgeführt

    pi@raspberrypi ~ $ ps -ef | grep python
    root 2176 1 97 20:30 ? 00:16:51 python /home/pi/test.py
    pi 2219 2192 0 20:48 pts/1 00:00:00 grep --color=auto python


    das Programm läuft.

    nur es gibt keinen ton von sich.

    beende ich die test.py und starte sie per Hand funktioniert es wieder.

    was läuft da schief???

    lg
    m4xx

  • Du zeigst ja nicht deine Test.py - darum kann man nur raten. Keine absoluten pfade ist mein heißer Kandidat.


    Gesendet von iPhone mit Tapatalk

  • Benutzt du python2 oder python3? Du vermischst jedenfalls die print's was du aber nicht darfst. Entweder du nutzt python2 dann ist print keine Funktion also nur "print x" oder du nutzt python3 dann "print(x)"

    Dein Script verursacht 100% CPU Last da sich die while ungebremst rotiert. Benutz anstatt Polling lieber Interrupt.

    Und die ganzen Leerzeilen erschweren das lesen

  • danke für deine hilfe meinst du mit absolute pfade diesen? os.system("mpg321 -g 100 Studio.mp3 &")
    Automatisch zusammengefügt:
    hmmm ich weis nicht welches pyhton ich verwende ich arbeite auf einen raspberry 2
    Automatisch zusammengefügt:
    ich habe blöder weise keine Ahnung von python aber das hast du e schon bemerkt

    Einmal editiert, zuletzt von m4xx (9. September 2016 um 23:22)

  • Ja, das sind relative Pfade. Du musst den vollen Pfad zu Studio.mo3 angeben.

    Das man das mit den Print statements nicht machen darf ist offensichtlich Unfug. Python 3 kennt nur noch eine Funktion print, aber Python 2 schluckt die extra Klammern ohne zu murren.

    Man sollte die Form ohne Klammern *bevorzugen*, weil unnötige Dinge das Leben nicht einfacher machen, und Konsistenz beim verstehen eines Programms hilft. So zB for-schleifen verwenden, wenn man weiß wieviel Schritte man braucht, statt einer while schleife. Aber es ist nicht inkorrekt.


    Gesendet von iPhone mit Tapatalk


  • Das man das mit den Print statements nicht machen darf ist offensichtlich Unfug. Python 3 kennt nur noch eine Funktion print, aber Python 2 schluckt die extra Klammern ohne zu murren.

    Na dann frag mal bootsmann zu diesem Thema ... Solltest du dich auf ne endlose Diskussion einstellen.

    Aber schon komisch; in anderen Threads prügelt Ihr auf mich ein wenn ich Code nicht absolut Korrekt schreibe - hier plötzlich darf man das .... Oder hast du nur mal wieder Lust über irgend etwas was ich schreibe meckern zu können?

  • Code
    if ( gpio.input(22) == 0 )and ( x == 1 ):
                           gpio.output(23, 1)
                           x=x+1
                           print x
                           print ("Runde 1")
                           os.system("mpg321 -g 100 /home/pi/13Ehrenrunde1.mp3 &")
                           time.sleep(108)

    super danke habe es geändert und siehe da es funktioniert

    danke

    ich werde es jetzt mit den Interrupt versuchen

    Danke

  • meigrafd Oh ICH verwende keine Klammern. Oder wenn dann mit "from __future__ Import print_function"

    Aber ich bezweifele sehr das Bootsmann behauptet, das man das nicht darf. Dürfen darf man alles. Sollen sollte man es nicht.

    Aber für heute Genug gekabbelt - der OP hat ja was er braucht.


    Gesendet von iPhone mit Tapatalk

  • Bei Gelegenheit suche ich dir mal die unzähligen Beiträge raus in denen mich bootsmann quasi dazu drängen wollte kein print(x) mit python2 zu verwenden, da print in python2 keine Funktion ist und somit aus der Ausgabe eine tuple macht..... Aber Hey - Hauptsache Du glaubst im Recht zu sein.

Jetzt mitmachen!

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