Ajouter un timmer ?

Résolu
Xifly Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
Xifly Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaiterai executer une fonction (ici nommée display) toutes les 10 secondes.

Je voudrai que cette fonction se redemarre à zéros peut importe où elle en était toutes les 10 secondes.

Je pensais y parvenir ainsi mais malheureusement ça ne fonctionne pas :

        time_t timer;
timer = time(NULL);
if (timer = time(NULL) + 10)
{
score=display(tab_lamp, score);
timer = time(NULL);
}


Si vous pouvez m'aider ça serait gentil.

Merci d'avance,

Xifly

1 réponse

  1. JwTdd
     
    salut,
    -ne pas confondre = et ==
    -time_t n'est pas en secondes
    -if n'est exécuté qu'une fois, sauf si il est dans une boucle
    -si il était dans une boucle timer changerais a chaque fois et +10 n'est jamais atteint
    -il y a bien un moyen de faire de cette façon mais cela utiliserais le processeur a son maximum, il vaut mieux chercher une fonction sleep adapté à ton système d'exploitation
    0
    1. Xifly Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
       
      Oulah, ça faisait un moment que je ne mettais pas penché sur le C en effet, j'ai fait des erreurs bêtes.
      Le problème est que pendant la fonction, l'utilisateur est amené a entrer des valeurs donc je ne peux mettre le programme en sleep (d'après ce que j'ai compris).
      0
    2. Xifly Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
       
      Sinon j'ai ceci, le programme se termine quand
      score=10
      donc le
      if
      est bien bouclé il me semble.

          time_t timer;
      timer = time(NULL);
      while(score<10)
      {
      if (timer == time(NULL) + 10)
      {
      score=display(tab_lamp, score);
      timer = time(NULL);
      }
      }


      Mais en effet le
      timer
      n'égale jamais
      timer + 10
      . Donc rien ne s'affiche
      0
    3. JwTdd
       
      while(score<10)
      {
      if (clock() >= timer + delais_en_secondes*CLOCKS_PER_SEC )
              {
                  score=display(tab_lamp, score);
                  timer = clock();
              }
      }


      EDIT: clock_t a la place de time_t c'est plus simple, si tu veux rester en time_t il faudrait utiliser la fonction difftime
      0
    4. Xifly Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
       
      Je dois initialiser le timer par
      clock_t timer
      ?
      Car ça me met un message d'erreur : "unknow type".
      Et il me dit que
      CLOCKS_PER_SEC
      n'est pas déclaré.
      0
    5. JwTdd
       
      oui, tu as bien #include <time.h> ?
      0