Fehlersuche - über Knöpfe aktivierte videos

  • Hallo!

    Ich hoffe ich bin im richtigen thread gelandet. Könnte mir jemand helfen den Fehler in der Programmierung zu finden?

    Ich habe für ein Museum was gebastelt... Es soll über Knöpfe die man drückt Videos abgespielt werden.. soweit so gut. Das Ziel ist es dass wenn keine Knöpfe gedrückt werden, das Video automatisch läuft. Bisher macht er es nicht und startet tausendmal das Video bis es Heiss wird,... Oder er bleibt schwarz...oder... Oder ..

    Brauche es Recht dringend.. wenn jmd helfen kann wär das so ultra!

  • Moin,

    also ich sehe da 4 mal die gleiche Bedingung,(If player == false) reicht doch ein mal, unnötigen und redundanten Code sollte man schon meiden. Beim starten wird player = false gesetzt, wenn ein Video gestartet wird, wird das Flag true. Aber ich sehe nicht das das irgendwo wieder auf false gestellt wird. Somit trifft diese Bedingung nie wieder ein. Nur bei der ersten der multiplen Bedingungen wird das Flag nicht gesetzt, wird dann also bei diesem Knopf sein, mit den unzähligen omxplayer instanzen.

    Ich leide an Verfolgungswahn... :daumendreh2: Ha, da ist schon wieder einer! :denker:

  • Soweit hab ich es jetzt geändert, ich post mal den kompletten code

    funktioniert leider nicht, so wie ich es mir gedacht hab, hab wohl einen groben denk fehler produziert...
    Lg

  • Ja da sind mehrere Denkfehler drinnen...

    Überdenke mal die Art und weiße wie du mit den einzelnen Abfragen umgehst. Wenn du selbst drauf kommen willst rate ich dir zur Salami Taktik. Also erstmal alles nur für einen Pin/Taster schreiben und dann drauf aufbauen.

    Du hast da mehrere Fehler bzw die falsche denkweise wie du das Problem lösen kannst.

    z.B.:

    while True:
    if (player and not False):
    if not (pi.read(button1) == 1):

    while True = Du möchtest das folgende Schleife endlos läuft...ok

    if (player and not False): = Jetzt fragst du ab ob es die Variable "player" an sich gibt und not false bezieht sich auf ja das weiß ich jetzt auch nicht.

    if not (pi.read(button1) == 1): = Wenn nicht button1 == 1 dann mach.... das wird jedesmal ausgeführt wenn der Taster nicht gedrückt ist

    Ich hab mich vorhin mal hingesetzt und den Code den du ungefähr haben willst nachgeschrieben. Keine Ahnung ob der Ad Hoc läuft aber ich will ihn nicht einfach hier anhängen wenn du nicht willst - selber lernen ist schöner...

  • if (player and not False): = Jetzt fragst du ab ob es die Variable "player" an sich gibt und not false bezieht sich auf ja das weiß ich jetzt auch nicht.

    Nö, das stimmt nicht.

    Lassen wir die unnützen Klammern mal weg:

    Python
    if player and not False:

    not False evaluiert zu True, das entspricht nun also:

    Python
    if player and True:

    Das and True ist unnötig, da True... naja, immer True ist. Also:

    Python
    if player:

    Und das ist einfach nur eine kurze Schreibweise für if bool(player) is True:. Es wird abgefragt, ob player "truthy" ist, nicht ob "es die Variable an sich gibt" :conf:

    Muesliriegel wenn du die bedenkliche Anzahl von Klammern in deinem Quellcode wirklich für notwendig hältst, solltest du dir definitiv eine andere Sprache als Python aussuchen.

  • .... zuviel cpp programmiert die letzten Tage.... Asche auf mein Haupt. Bin da gedanklich bei if (c != '0') falsch abgebogen.

    Aber schön zu sehen wie der Fragesteller seit Stunden auf ne Antwort wartet und ich innerhalb von Minuten korrigiert werde.

    • Offizieller Beitrag

    Der TE hat in #3 schon einen Tipp bekommen

    Wobei ich omxplayer-wrapper pythonischer finden würde. Wenn ich schon mal dabei bin, es wäre imho mit gpiozero leichter und übersichtlicher umzusetzen als mit pigpio.

  • Vielen Dank für die vielen denkanstöße, ich hab jetzt ein wenig umgebaut und alles auf gpiozero umgestellt und es läuft jetzt absulut sauber.
    jetzt brauch ich nur noch eine lösung das irgendein Video automatisch gestartet wird und man das gestartet video mit den anderen buttons unterbrechen kann.

    • Offizieller Beitrag

    Na das sieht doch schon viel besser aus!

    und man das gestartet video mit den anderen buttons unterbrechen kann

    player = True sollte nicht mehr nötig sein, denn beim Drücken eines Tasters/Buttons (so nennen elektronikaffine Leute die "Knöpfe" ;)) wird ja erstmal pauschal der OMX gekillt und das gedrückte Video läuft in Endlosschleife.

    jetzt brauch ich nur noch eine lösung das irgendein Video automatisch gestartet wird

    Starte doch einfach eins z.B. in Zeile 19, nachdem ein Taster gedrückt wurde läuft dieses Video eh bis zum nächsten Drücken eines (anderen) Tasters.

    //Edit

    Aber da fehlt noch was:

    Python
    from signal import pause
    
    ...
    
    pause()

    sonst läuft das Script einfach durch.

  • Danke, so läufst jetzt mit autoplay.

    • Offizieller Beitrag

    import sys ist soweit ich das überflogen habe auch nicht mehr nötig.

    Und movie1 = ('/home/pi/video/PA_P4_1.mp4') brauchts die Klammern? Wenn nicht, dann weg damit!

    Btw:

    Wobei ich omxplayer-wrapper pythonischer finden würde.

    Vielleicht siehst Du Dir das nochmals in Ruhe an. Das ist auch kein Teufelszeug! ;)

Jetzt mitmachen!

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