probleme avec une sorte de thread
Bonjour,
voila je suis en premiere année de dut informatique, et je coince. Je fais partie d'un club robotique et un enseignant à programmer un µC qui me permet d'utiliser des classes déja toutes faites. Celle qui me pose probleme et la classe Ticker voici la méthode en question :
Code:
1 2 3 4 5 6 7 8 9
| /** Attach a function to be called by the Ticker, specifiying the interval in micro-seconds
*
* @param fptr pointer to the function to be called
* @param t the time between calls in micro-seconds
*/
void attach_us(void (*fptr)(void), timestamp_t t) {
_function.attach(fptr);
setup(t);
} |
j'ai donc réussi a utiliser cette méthode :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
/... différents objets et variables créent en global
void CapteurUs(){ //cette fonction permet de générer un pulse pour que mon capteur Ultrason fonctionne, le code en lui meme n'est pas intéressant
if(m_verrou_trig == false){
Timer_trig.start();
Pin_trig.write(1);
m_verrou_trig = true;
}
if((Timer_trig.read_us() >= 10) and (Timer_trig.read_us() < 60)){
Pin_trig.write(0);
}
if(Timer_trig.read_us() >= 1000){ //on relance automatiquement une autre impulsion apres 1000µs
Timer_trig.stop();
Timer_trig.reset();
m_verrou_trig2 = false;
}
}
int main(){
Ticker T1;
T1.attach_us(&CapteurUs1, 25);
//...suite du code |
et ca marche. Mais vu que j'ai plein de capteurs Ultrason à utiliser, branchés à des broches différentes, je me suis dis, autant faire une classe ca sera plus clair. Et la je coince. Car ma class CapteurUS j'ai une méthode generatePulse() et quand je met
Code:
1 2 3 4 5
|
CapteurUS C1(...); //constructeur avec différents parametres
Ticker T1;
T1.attach_us(&C1.generetePulse, 25) |
ca ne marche pas. Je me suis renseigné et il faut mettre ca en static, or le probleme et qu'en static je n'ai plus acces au variable de ma class donc je suis coincé car ma class Capteur doit modifier la distance de l'un de ses attributs.
Comment faire? j'espere que vous avez compris mon probleme.
Je suis débutant en C++ donc ne soyez pas bourrin dans vos explications sinon vous allez me perdre :'(
Merci d'avance pour vos réponses