- Eleshop Messgeraete Angebote    Werbung      
Ergebnis 1 bis 10 von 45

Thema: pthread-Task als Methode einer C++ Klasse?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.05.2015
    Beiträge
    69
    Ja, ich denke das geht so mit dem detach.

    Du musst nur darauf achten das du vor dem start eines neuen Threads dein runstate Element testest. Erst wenn das 0 ist kannst du einen neuen Thread auf diese PID Struktur los lassen, sonst gibt's Quddel-Muddel.

    Gruss
    botty

  2. #2
    HaWe
    Gast
    jap, mach ich!

    Code:
    void RotatePID(uint8_t port, long Target, float RotatSpeed, int8_t cont) {
    
        if( !motor[port].tid && motor[port].runstate) motor[port].runstate=0; // repair
        if( motor[port].runstate ) return;
        if( motor[port].tid )  return;
          
        motor[port].runstate=1;                // set runstate: PID active
        // custom init PID [port]    
        motor[port].target =Target;                   // assign target
        motor[port].tarpwm =RotatSpeed;               // assign rotation speed
        motor[port].cont=cont;                        // cont vs. hit once
        // Reset PID control defaults
        motor[port].outp    =0;                // PID control output value
        motor[port].maxout  =100;              // absolute max possible output (max pwr)
        motor[port].read    =0;                // current reading
        motor[port].err     =0;                // current error
        motor[port].integr  =0;                // integral of errors
        motor[port].speed   =0;                // current speed
        motor[port].stopPIDcontrol =0;         // flag for external termination
    
        pthread_create( & motor[port].tid,  // id speichern in dem dazugehörigen Array-Element
                        0,                  // Default Attribute (threads cancelbar)
                        PID_calc,           // Name der PID-Kalkulationsroutinge
                        (void*)port);       // der Index des Array-Elements für eine PID Struktur, 
                                            // die mit dem Motorindex gleich ist.   
                                            
        pthread_detach(motor[port].tid);
     
    
    }
    Geändert von HaWe (29.09.2016 um 19:52 Uhr)

Ähnliche Themen

  1. [ERLEDIGT] Abgeleitete Klasse = konkrete Klasse?
    Von vixo im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 15.09.2016, 16:02
  2. Antworten: 4
    Letzter Beitrag: 02.04.2016, 14:23
  3. Task motionControl() mit der M32
    Von inka im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 10.04.2013, 06:40
  4. Gegen-EMK-Methode
    Von MatlStg im Forum Motoren
    Antworten: 7
    Letzter Beitrag: 11.02.2008, 17:07
  5. Was ist die besser Methode? (ADC auswerten)
    Von quantum im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 28.01.2007, 12:57

Berechtigungen

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

    Werbung      Labornetzteil AliExpress