- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 96

Thema: C++ fstream GPIO Trigger/Interrupt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Das hatte ich schon so verstanden und das ist auch richtig so. Nur warum sollte ich nicht gleich die C-Funktionen benutzen in meinen eigenen C++ Objekten?
    Von der Performance reicht mir im Moment der Zugriff über das Filesystem.

    Die C Funktionen sind ja Standard libc. Wenn ich die benutze laufen meine eigenen C++ Objekte auf allen Platinchen die ein Linux/UNIX als OS verwenden (z.B. Gnublin). Ich habe es jetzt nicht überprüft aber ich vermute mal das WiringPi nicht auf jedem Linux Platinchen läuft sondern auf die besondere Hardware des Raspberry zugeschnitten ist. Wäre doch für meine C++ Objekte das bessere Konzept wenn die auch auf != Raspberry auch laufen würden?

    Das was ich Probiert habe mit dem fstream geht nur so weit wie ich es schon habe zum Port aus und ein schalten. Das mit den Triggern scheint so nicht mehr machbar zu sein was ich schade finde aber gut kann man nicht ändern.

  2. #2
    HaWe
    Gast
    ja, wenn du es nicht nur für den Pi willst, hast du vermutlich Recht.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    54
    Beiträge
    502
    Zu meinen Studiumszeiten haben wir das mit
    int fileno(FILE *stream);//#include <stdio.h>
    gemacht.
    Dann hast du deinen Filedescriptor.
    Und das geht bei dir nicht? Oder habe ich dein Problem falsch verstanden?

    Bin aber in C++ nicht so bewandert. Hat denn fstream::rdbuf()->fd() auch nicht funktioniert?

    Sorry, hab jetzt mal deinen Link angesehen. Das fd Problem ist ja eigentlich gar nicht dein eigentliches Problem. Das hast du ja anscheinend gelöst. Du möchtest gern, dass fstream von sich aus ein Event bereit stellt. Wenn das nicht so ist, dann hat sich doch eigentlich damit dein Versuch eine bessere Lösung für poll zu finden als gescheitert erwiesen. Du verbiegst dich jetzt um dann doch am Ende mit poll zu arbeiten. Damit sind wir wieder bei Shedepe und HaWe.
    Geändert von sast (17.01.2018 um 08:48 Uhr) Grund: Habe mir doch endlich mal die gesamte Anfrage durchgelesen ;)

    雅思特史特芬
    开发及研究

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Zitat Zitat von alexander_ro Beitrag anzeigen
    Das was ich Probiert habe mit dem fstream geht nur so weit wie ich es schon habe zum Port aus und ein schalten. Das mit den Triggern scheint so nicht mehr machbar zu sein was ich schade finde aber gut kann man nicht ändern.
    Das war mir ja nun auch schon aufgefallen.

    Nein das Problem mit dem fd ist nicht gelöst weil das in meinem Sourcecode das ist was ich probiert habe aber nicht funktioniert.

    fstream::rdbuf()->fd() das scheint nicht Standard zu sein und deshalb wurde es aus der libc++ wieder ausgebaut. Haben die ja eigentlich recht.

    Die Funktion fileno kenne ich aber die braucht die gefüllte Datenstruktur FILE die bekommt man von der C Funktion open aber nicht vom fstream. Das ist das Problem.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    54
    Beiträge
    502
    Das fileno nicht geht, habe ich inzwischen auch gelesen, weil sich fstream und FILE unterscheiden. Die einzige Gemeinsamkeit ist, dass sie intern im Unixsystem über fds abgewickelt werden. Deswegen sollte es irgendwie möglich sein, an den Filedescriptor zu kommen. Aber wie schon gesagt, verbiegst du dich total um dann doch nur zu pollen. Wenn fstream das Event nicht direkt anbietet nützt das nun mal nichts.
    Was steht denn in dem fstream? Eventuell kann man das im Interval vergleichen, wenn es zB nur ein Byte oder Wort ist.

    雅思特史特芬
    开发及研究

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    okay für mich kurz zur info, es geht darum dem GPIO ein signal/interrupt zu entlocken wenn ein GPIO sich ändert?

    ich weis dass man eine file mittels mmap in den speicehr mappen kann und so zumindest den zugriff stark vereinfachen kann

    obendrein wären da noch die linuxwerkzeuge inotify oder wenn der kernel das nicht hat, dnotify, damit kann man ohne die file zu lesen prüfen ob sie geändert worden ist, ob das mit device files auch funtkioniert konnte ich aber auf die schnelle nicht herausfinden, eventuell wäre das ein ansatz?


    EDIT: ---------

    habe gerade sogar gelesen dass interrupt unterstützung vom kernel verfügbar sei, nur noch nicht wie ich ddran komme (wie üblich alles in python)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    54
    Beiträge
    502
    alexander_ro möchte unbedingt fstream nehmen. Da liegt die Schwierigkeit.

    雅思特史特芬
    开发及研究

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    okay dann bin ich weider raus, PS wiring pi hat sogar unterstützung für kernel GPIO interrupts zur info
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  9. #9
    HaWe
    Gast
    ganz dumme Frage, vlt völlig abwegig, denn ich bin kein C++ Programmierer - aber kann man einen Pointer erzeugen, der auf fstream zeigt?
    edit,
    egal welcher ptr Typ, könnte auch ein void* sein, in der Art

    void* vptr;
    vptr = (void*)&fstream; // ???

    wenn das ginge, dann könnte man per typecasting evtl doch sein fd über fileno() bekommen...?

    int fd = fileno( (FILE*) vptr);
    Geändert von HaWe (17.01.2018 um 14:49 Uhr)

Ähnliche Themen

  1. Benötige Hilfe zu AT32U3C und GPIO
    Von xrzr im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 10.11.2015, 18:54
  2. Respberry Pi GPIO mit C++ und QT
    Von Basti1204 im Forum Raspberry Pi
    Antworten: 0
    Letzter Beitrag: 05.03.2013, 23:01
  3. [ERLEDIGT] Raspberry Pi GPIO
    Von Kampi im Forum Raspberry Pi
    Antworten: 4
    Letzter Beitrag: 04.11.2012, 22:45
  4. GPIO-Register Ansprechen
    Von kmrish im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 7
    Letzter Beitrag: 14.07.2011, 09:45
  5. schmitt-trigger an interrupt
    Von Bluesmash im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 19.06.2005, 22:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests