- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Funktions Templates? und Pointer Frage

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Ort
    Untersöchering(Bayern,Alpenvorland)
    Alter
    37
    Beiträge
    215

    Funktions Templates? und Pointer Frage

    Anzeige

    Powerstation Test
    Also meine Frage ist zu folgenden Quelltext:

    unsigned int timervar;
    timervar=0;
    char timerflag;
    timerflag=0;

    SIGNAL(SIG_OVERFLOW2)
    {
    if(timervarflag!=0)
    timervar++;
    }


    void timer2-init(void)
    {
    TCCR2 |= _BV(CS21); // Timer2 Prescaler 8 damit eine Overflow von 0,0000005s also 0,5microsek
    TIMSK |= _BV(TOIE2); //Timer2 Overflow Interrupt Enable
    }

    void start-funktion(void(*funtkionsname)(void), char dauer) // Dauer in microsekunden
    {
    timervarflag=1;
    while((timervar/2)!=dauer)
    (*funktionsname)();
    timervar=0;
    }

    Es ist das erste mal das ich Funktionen als Parameter verwende. Deswegen weis ich nicht ob ich irgendwelche Ponterfehler oder sonstige Fehler gemacht hab, habs auch noch nicht getestet?
    die Funktion start-funktion() würde ich als alternative zu irgendwelche wait() Funtktionen benutzen da bei wait() immer in der zu Wartenden zeit nichts gemacht wird.
    Jetzt meine zweite Frage. Könnte ich die Funktion start-funktion() auch so deklarieren?

    template <typename T>
    void start-funktion( T (*funktionsname)(T),int dauer)
    ...
    Ich hoffe mir kann einer helfen da ich mit Funktions Templates und Funktion als Funktionsargumente keine Erfahrung hab.

    Mfg Muraad

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Ort
    Untersöchering(Bayern,Alpenvorland)
    Alter
    37
    Beiträge
    215
    Sorry, war ziemlich spät als ich die Idee hatte und das geschrieben hab.
    Das ich Fehler beim Timer2 gemacht wahr mir dann auch ziemlich schnell klar. Aber kann mir keiner helfen und beispiele nennen wie man eine Funtkion als Parameter übergibt und anschließend benutzt?
    Gruß Muraad

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Hi, Im Visual C++ mach ich das so, weil mir der Kerl mit seinen functiondeclaration sonst auf den Socken geht:

    int function_1 (int par1, .... Parx); // die gibt's irgendwo
    int function_2 (int par1, .... Parx); // die gibt's auch irgendwo

    Darum geht's:
    // ---------------------------------------------------
    static int vectorcall(int Function, int par1, .... Parx)
    {
    union {
    int (*vVec)(int par1, ... parx)
    int iVec;
    } helpful;
    int result;
    helpful.ivec = Function;
    result = (*helpful.vVec)(par1, .... parx);
    return(result);
    }

    // ---------------------------------------------------
    main()
    {
    int result;
    .....
    result = vectorcall((int)function_1, par1, .... parx); // die eine
    result = vectorcall((int)function_2, par1, .... parx); // die andere


    .....

    }

    Sieht kompliziert aus, is aber aus der Praxis geboren. mfg robert

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Ort
    Untersöchering(Bayern,Alpenvorland)
    Alter
    37
    Beiträge
    215
    Danke dir PicNick das du geantwortet hast. Es war das was ich gesucht hab.
    Gruß Muraad

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress