Gpio in C variable speichern

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebes Forum,
    ich probiere jtz schon ewig rum wie ich folgendes Problem in den Griff bekomme :
    Ich will ein C-Skript schreiben das einen GPIO lesen soll und dessen output als variable speichert .
    Also über den Befehl "system("gpio -g read 23"); " kann ich den Befehl ausführen und er schreibt mir den output in die Konsole .
    Ist das irgendwie leicht zu lösen das als int oder char abzurufen?

    LG thflorix

  • Hi thflorix,

    zunächst mal ist C keine Script-Sprache. Also script ist nicht ... Du schreibst einen Source der dann per Compiler in ein binary übersetzt wird, dass dann direkt ausgeführt werden kann.

    Dann: warum schreibst Du ein Programm in C wenn Du darin doch wieder nur per system() andere Programme aufrufst? Da kannst Du auch gleich ein bash-script nehmen.
    Um auf die GPIO Pins zuzugreifen verwendet man in der Regel eine passende Library, wie pigpio, wiringPi, bcm2835, ...
    Darin sind alle notwendigen Funktionen zum Handling der IOs vorhanden.

    Ich hab' allerdings den Eindruck, als würde es nicht schaden, wenn Du Dir zuerst mal ein paar Grundlagen zu C aneignen würdest ( so was -> hier <- z.B.).

    cu,
    -ds-

  • Entschuldige bitte das ich nicht alle Fachbegriffe richtig verwendet habe , ich nutze das Raspi nur als Hobby und hab keine Uni zu diesem Fachgebiet besucht.
    Jedoch bitte ich dich mir bei meinem Problem zu helfen.
    LG thflorix

  • zurück zur eingangs gestellten Frage:
    Das Problem ist nicht trivial zu lösen. Man müsste die Ausgabe des aufgerufenen Programms (also "gpio") irgendwie in eine Variable des aufrufenden Programms umleiten. Das geht auch sicher irgendwie, nur weiss ich nicht wie das unter Linux funktioniert.

    Python ist in dieser Hinsicht wesentlich "mächtiger", weshalb es vielleicht eine Alternative wäre.

    Das einzige was mir jetzt als "quick and dirty" Lösung einfällt, ist die Ausgabe von gpio in eine Datei umzuleiten:

    gpio -g read 23 >>datei.txt

    Und dann die Ausgabe von der Datei einlesen.

    Aber man sieht daran schon, dass das nicht gerade eine elegante Lösung des Problems ist.
    Besser - und imho auch richtig - wäre es, die wiringPi Bibliothek direkt einzubinden.

  • Hallo zusammen,

    wie wäre es mit

    Code
    wert := GPIO(23)

    zum Auslesen des Status von GPIO23.

    So mache ich es in der Programmiersprache Icon.

    Einen Ausgang setze ich mit

    Code
    GPIO(23,1,500)


    GPIO23 ist dann für 500 ms auf HIGH gesetzt. Lasse ich die Zeit weg, dann bleibt der Status erhalten.

    Auf LOW setze ich mit

    Code
    GPIO(23,0)

    ...

    Das geht in C mit Benutzung der richtigen Bibliothek nicht viel anders.

    Es ist nicht erforderlich, hierfür eine Pipe einzusetzen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (21. November 2014 um 20:18)

  • popen wirkt auf den ersten Blick als wäre es einfach und auch das richtige für mein Problem
    beim zweiten Blick kam Verwirrung ...
    Könntest du das vllt mal ganz einfach erklären :)

  • > popen wirkt auf den ersten Blick als wäre es einfach und auch das richtige für mein Problem
    Noeh, es ist NICHT das Richtige, wie schon einige Leute hier geschrieben haben !

    Meine Antwort bezog sich auf den Post von nurazur.

    Aber ich will keinem im Weg stehen:

  • Ok und wenn ich das richtige Lib importiert hab ... kann ich einfach den Output des Befehls in ne int fassen und wie ich Lust und Laune hab ausgeben oder weiterverwenden ?
    Wenn ja - cool ansonsten für mich leider unbrauchbar .
    Ich hab mir den Link zu Bcm2835 mal angeschaut und hab keine Stelle gefunden wo der Spaß erklärt wird (wie man das verwendet)
    lg thflorix

Jetzt mitmachen!

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