Quick hack: GPIO-Steuerung in C ohne root Rechte und ohne Library ...

  • Ich hatte hier -> Zugriff auf die GPIOs per sysfs als Alternative zu den Libraries z.B. pigpio/bcm2835/wiringPi? <- ja schon nach Euren Erfahrungen mit sysfs gefragt, weil ich auf der Suche nach einer einfachen Lösung zum Steuern der GPIOs war.

    Ich hab dann die GPIO UAPI entdeckt, die mir in diesem Zusammenhang gut gefällt und da mal ein bisschen was drum herum gebastelt.


    Zunächst mal die GPIO-Zugriffe:


    //EDIT: da ist jetzt noch die Funktion für einen event-handler dazugekommen ...



    und dann noch ein kleines Testprogramm:


    Ich will das jetzt gar nich gross dokumentieren, denn das ist wohl selbsterklärend.

    Nur so viel: die Routinen setzen auf dem selben Level wie sysfs auf und sind dadurch entsprechend resourcenschonend und schnell ...


    Das ist jetzt einfach mal eine Art "Abfallprodukt", das für den einen oder anderen evtl. hilfreich sein kann.


    10.11.2018:

    Der Sourcecode ist ab sofort auf github ( https://github.com/dreamshader/dsGPIO ) verfügbar ...


    cheers,

    -ds-

  • Hallo,

    so habe mich damit beschäftigt.

    Die Funktionsweise ist mir aber noch nicht klar.

    Wenn ich im Verzeichnis "build" den Befehl make und make install ausführe erhalte ich das Programm "gpioTest", beim ausführen (./gpioTest) erhalte ich die Meldung:

    Code
    1. lock faild!
    2. ends with exitcode -2

    MfG


    Juergen B.

  • Hi jbaben ,

    hmm ....

    Welches Pi-Modell, welches OS?

    Ist Dein user in der Gruppe "gpio"?


    Code
    1. pi@z-stretch:~/Projects/Raspberry_PI/dsGPIO/build $ groups
    2. pi adm tty dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi


    ciao,

    -ds-

  • Hallo,

    vielen Dank für die schnelle Antwort.

    Die gezeigten Werte sehen bei mir auch so aus, bis auf die Ausführung des Test Programmes.

    Mein Pi-Modell = Raspberry Pi 2 Modell B mit RASPIAN Stretch.

    User pi ist in der Gruppe gpio.


    MfG


    Juergen B.