Aktion nach 20sec Input auslösen

  • Hallo zusammen,

    ich muss zugeben das ich in dieser Programmiersprache gerade ein wenig blöd anstelle.
    Folgenden Script nutze ich, um bei einem Input ein Programm/Aktion auszulösen.

    Nun möchte ich aber, dass diese Programm erst startet, wenn der Eingang mindestens 20sec anliegt. Sollte mal nur 10sec der Eingang 1 haben soll nichts passieren.

    Kann mir hier jemand weiter helfen?
    Hab schon versucht mit sleep Befehlen weiter zukommen und bin gescheitert :blush:

    Wäre nett wenn mal einer drüber schauen kann.

    Vielen Dank, Zero-G

    Edit: Sorry gerade gesehen das mein Beitrag hier im falschen Forum ist. War nicht meine Absicht ;)

    Einmal editiert, zuletzt von Zero-G (11. August 2014 um 20:05)

  • Das muesste etwa so gehen:

    (UNGETESTET, mein Pi ist gerade nicht zur Hand)

    [Das ist uebrigens bash und nicht python ...]

    Einmal editiert, zuletzt von Tell (11. August 2014 um 20:04)

  • Vielen Dank für dir schnelle Antwort.
    Ich werde dies morgen auf der Arbeit testen.

    Ist es richtig das hier zwei "fi" stehen?

    Code
    fi
      else
        counter=0
      fi

    Das ich den Beitrag mit Python gekennzeichnet hab, hab ich leider erst nach dem abschicken gesehen und konnte dies nicht mehr ändern ;)

    Danke & Gruß

    Einmal editiert, zuletzt von Zero-G (12. August 2014 um 14:13)

  • ja das ist korrekt, in der oberen IF abfrage befindet sich eine weitere die prüft ob der Counter den Wunschwert erreicht hat.


    Die Zeile kannst du rauswerfen:

    Code
    # Der aktuelle Wert wird der alte Wert für den nächsten Durchlauf
      previous=$pin
  • Dies zu umgehen ;)
    Ich führe in dem Echo bloß ein Befehl aus.
    Dieser wird nun immer wieder wiederholt bis der der Eingang wieder null ist.

    In meine Fall bräuchte ich das dieser Befehl nur einmal ausgeführt wird.

    Gibt es da eine Möglichkeit?

    Danke für deine Hilfe


  • Ja, dann wird der Befehl alle 20sec gestartet..

    Nö, stimmt doch nicht. Der Befehl wird ausgeführt, wenn jemand wieder 20 Sek. den Knopf drückt ...
    Und wo ist jetzt Dein Problem?
    Mach nen exit nach der Ausführung und gut is ...
    -ds-

  • Solange der Taster gedrückt bleibt wird alle 20sec der Befehl ausgeführt.
    Ein Exit hilft mir auch nicht.

    Jedes mal wenn der Taster 20sec gedrückt wird möchte ich diesen Befehl ausführen.

  • Meine Güte, dann fragst Du halt auf -eq 40 ab statt -gt 40 und setzt den counter zurück, sobald der Taster wieder losgelassen wird.
    Oder wie jetzt :s
    Das fuktioniert sowie nur so lala ... während der Befehl ausgeführt wird, ist der script komplett ausser Betrieb (es sei denn, Du startest das im Hintergrund) und während des sleep bekommt er nicht mit, wenn der Taster losgelassen wurde.
    Prinzipiell eher kein Job, den ich mit der bash lösen würde ...

    cu,
    -ds-

Jetzt mitmachen!

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