Ajouter un timmer ?

Résolu/Fermé
Xifly Messages postés 44 Date d'inscription vendredi 3 janvier 2014 Statut Membre Dernière intervention 8 décembre 2017 - 19 mars 2015 à 17:20
Xifly Messages postés 44 Date d'inscription vendredi 3 janvier 2014 Statut Membre Dernière intervention 8 décembre 2017 - 22 mars 2015 à 01:17
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

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
Xifly Messages postés 44 Date d'inscription vendredi 3 janvier 2014 Statut Membre Dernière intervention 8 décembre 2017
Modifié par Xifly le 19/03/2015 à 19:34
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
Xifly Messages postés 44 Date d'inscription vendredi 3 janvier 2014 Statut Membre Dernière intervention 8 décembre 2017
Modifié par Xifly le 19/03/2015 à 19:31
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
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
Xifly Messages postés 44 Date d'inscription vendredi 3 janvier 2014 Statut Membre Dernière intervention 8 décembre 2017
21 mars 2015 à 20:12
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
oui, tu as bien #include <time.h> ?
0