Einfache Abfrage

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo

    Ich möchte eigentlich Tastensignale von der GPIO Schnittstelle auswerten, und als simulierte Tastatur Taste an das Programm VLC senden. Allerdings scheitere ich schon bei einer einfachen IF abfrage.

  • Gewöhn dir erst mal richtige Einrückungen an damit der Code besser lesbar ist.

    Unschön:

    Code
    if [ $pin2 ]
    then
    echo N
    sleep 1
    fi

    Besser:

    Code
    if [ $pin2 ]
    then
        echo N
        sleep 1
    fi

    Am Besten:

    Code
    if [ $pin2 ]; then
        echo N
        sleep 1
    fi

    Das wird so aber natürlich noch nicht funktionieren. Die Frage ist was in der if-Bedingung gegeben sein soll? Es würde zwar auch so funktionieren, aber ist - hrhr - unschön :fies:

    Richtiger wäre also:

    Code
    if [ $pin2 == 1 ]; then
        echo N
        sleep 1
    fi

    Das sleep in der if macht aber eigentlich auch kein Sinn. Da lässt sich eine Zeile einsparen indem man einfach nach den if's nur ein mal sleep setzt.
    Auch sollte man unnötige " vermeiden, denn bash sucht dadrin nach Variablen. also oben beim "echo "3" >/sys/class/gpio/export" kannst du die " weg lassen.


    Also, Optimiert:

    Allerdings glaube ich nicht dass das so mit VLC funktionieren wird. Du bräuchtest imho eine FIFO Datei die VLC beachtet..

    Du hast imho 2 Möglichkeiten

    • fifo Datei erzeugen und vlc anweisen diesen zu beachten
    • "Remote control interface" mithilfe von netcat nutzen

    Zu 1.:

    Code
    mkfifo /tmp/vlc.fifo
    vlc /tmp/vlc.fifo

    Und dann die Befehle in die fifo Datei schicken:

    Code
    echo pause > /tmp/vlc.fifo

    Zu 2.:

    Code
    vlc -I rc --rc-host localhost:1250 {file/playlist}


    Und dann jeden Befehl wie folgt absetzen:

    Code
    echo pause | nc localhost 1250


    Ansonsten kannst du dir auch folgende Seiten mal angucken:
    http://raspi.tv/2013/how-to-st…hout-being-root

  • Wenn ich den Code mit sudo sh tasten.sh ausführe bekomme ich folgende Fehlermeldung:
    tasten.sh: 16: [: 0: unexpected operator
    tasten.sh: 19: [: 0: unexpected operator

    Und wenn ich den Code mit sudo bash tasten.sh ausführe bekomme ich folgende Fehlermeldung:
    tasten.sh: zeile 7: echo: schreibfehler: Das Gerät oder die Ressource ist belegt.
    tasten.sh: zeile 10: echo: schreibfehler: Das Gerät oder die Ressource ist belegt.

  • sh ist nicht bash. sh ist älter als bash und kann nicht so viel..

    Führ das Script bitte gemäß des Shebangs mit bash aus.

    Und die 2. Fehlermeldungen liegen vermutlich daran dass der Port bereits exportiert wurde..

    Spoiler anzeigen
  • Zitat

    Du hast imho 2 Möglichkeiten

    1. fifo Datei erzeugen und vlc anweisen diesen zu beachten
    2. "Remote control interface" mithilfe von netcat nutzen

    1. geht nicht also 2 nur wen ich das mache kommen folgende Meldungen ohne das Ich etwas betätige:

    sudo bash /../tasten.sh
    VLC media player 2.0.3 Twoflower
    Command Line Interface initialized. Type 'help' for help.
    >> Bye-bye!

    Die Meldung wiederholt sich im Sekundentakt.

  • Die Meldung wiederholt sich im Sekundentakt.

    Steht doch auch so im Script ?

    laufe die schleife und wenn pin = 1 echo p, warte ne sekunde und geh zum anfang.

    Du musst auf Änderungen der GPIO reagieren.
    Pin auslesen, mit altem Wert vergleichen
    wenn == dann mach nix
    wenn != dann mach was und setze alter Wert = neuer Wert.

    Ansonsten macht der bei PIN == 1 jede Sekunde was.

    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.

  • Sobald ich diesen Code per sudo bash /taste.sh ausführe werden die Eingänge 2,3,4 auf 1 gesetzt und 14 bleibt 0 ohne das überhaupt etwas angeschlossen ist.

    Einmal editiert, zuletzt von max7722 (10. Januar 2015 um 13:40)

  • Sobald ich diesen Code per sudo bash /taste.sh ausführe werden die Eingänge 2,3,4 auf 1 gesetzt und 14 bleibt 0

    Hast du UART deaktiviert um auch GPIO-14 anderweitig verwenden zu können?

    Standardmäßig sind GPIO-14 und GPIO-15 mit ihrer Sonderfunktion aktiv: UART. Raspbian ist Standardmäßig so eingestellt das über diese Pins der Bootvorgang ausgegeben wird. Also eine Serielle-Konsole.
    Wenn du speziell diese GPIO's für etwas anderes verwenden willst, musst du die Serielle-Konsole erst deaktivieren und die GPIOs freigeben. Wie das geht wird > hier < beschrieben.

    Und das nächste ist dass wenn du die GPIO's als IN schaltest, musst du einen Vorwiderstand verwenden, da sonst der Zustand unvorhersehbar wechselt, auch wenn tatsächlich nichts angeschlossen ist.

  • Zitat

    Also eine Serielle-Konsole.
    Wenn du speziell diese GPIO's für etwas anderes verwenden willst, musst du die Serielle-Konsole erst deaktivieren und die GPIOs freigeben.

    Habe ich gemacht nun funktioniert der ­GPIO 15 genauso wie beschrieben Standard 1 bei Beschaltung 0. Der ­GPIO ­14 ­bleib 0, egal ob er Positiv oder Negativ beschaltet wird mit Widerstand. Die ­GPIOs 2,3,4 sind immer 1, egal ob sie Positiv oder Negativ beschaltet werden. Kann es sein das die ­GPIOs Defekt sind?

    Da alle anderen GPIOs belegt sind musste ich die P5 Leiste Einlöten dort gibt es weitere 4 GPIOs Zwei Normale und Zwei mit der Sonderfunktion I2C0_SDA und I2C0_SCL allerdings wechseln die Zwei GPIOs mit den Sonderfunktionen in Unregelmäßigen abständen ihre Zustände auch mit 10 ­Kohm Widerständen.

    Einmal editiert, zuletzt von max7722 (11. Januar 2015 um 11:07)

  • Achtung verbotener Doppelpost

    Zitat

    Da alle anderen GPIOs belegt sind musste ich die P5 Leiste Einlöten dort gibt es weitere 4 GPIOs Zwei Normale und Zwei mit der Sonderfunktion I2C0_SDA und I2C0_SCL allerdings wechseln die Zwei GPIOs mit den Sonderfunktionen in Unregelmäßigen abständen ihre Zustände auch mit 10 ­Kohm Widerständen.

    Es hatte gestern Abend funktioniert GPIO 14,15,30,31 jetzt ohne das etwas geändert wurde hat GPIO 14 ein Dauersignal. Gibt es weitere GPIOs oder eine kostengünstige Erweiterung da mein Pi spinnt?

Jetzt mitmachen!

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