Einmaliges Anzeigen währed der Abfrage

  • Hallo, möchte, dass sobald auf einem Pin eine 1 anliegt auf der Console auch einmalig eine 1 angezeigt wird.
    Aber bei diesem Code wird eine 1 angezeigt, solange der Pin den Wert 1 hat. Oder sollte man für so was den Interrupt benutzen? Wollte diesen Code in ein anderes Programm ergänzen. Würde der Interrupt dann den Ablauf des Programms stören?

  • Die while kannste dann unterbrechen:

    Besser wäre aber in der Tat Interrupts, da dieses Script ziemlich viel CPU Last erzeugen wird


  • Hallo, möchte, dass sobald auf einem Pin eine 1 anliegt auf der Console auch einmalig eine 1 angezeigt wird.
    Aber bei diesem Code wird eine 1 angezeigt, solange der Pin den Wert 1 hat. Oder sollte man für so was den Interrupt benutzen? Wollte diesen Code in ein anderes Programm ergänzen. Würde der Interrupt dann den Ablauf des Programms stören?

    Verstehe ich nicht ganz.
    Möchtest du auf eine wechselnde Flanke reagieren ?

    Das ist dein Script, ein wenig vereinfacht, ohne die überflüssigen if's

    Bash
    #!/bin/bash
    gpio=4
    echo "$gpio" > /sys/class/gpio/export
    echo "in" > /sys/class/gpio/gpio4/direction
    while true; do
    echo $(cat /sys/class/gpio/gpio4/value)
    done

    Hier mit Flankenwechsel, du merkst dir einfach den letzten Wert.


    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • bash mag keine Leerzeichen beim setzen von Variablen ( = ) @ Der_Imperator :fies:

    //EDIT: und $OLDVAL=$NEWVAL wird auch nix :fies:

  • Yepp, du hast recht. Danke für die Korrektur.
    Das ist das Elend wenn man mal eben schnell zwischen den Sprachen wechselt ohne das man es testet ;)

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (12. Februar 2015 um 08:33)

  • Ok, danke die korrigierte Variante funktioniert.
    Allerdings muss ich später mit Zeitstempel arbeiten. Angeblich ist bash etwas zu langsam und kann nicht mikrosekunden genau reagieren? Ist das richtig? Was kann man alternativ machen?

Jetzt mitmachen!

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