J'ai creer une fonction graphique d'affichage et j'aimerai qu'elle s'exécute toutes les deux secondes.
Est ce qu'il existe un moyen en C de fixer la période d'éxécution (en seconde) d'une fonction ??
D'avance merci
J'ai creer une fonction graphique d'affichage et j'aimerai qu'elle s'exécute toutes les deux secondes.
Est ce qu'il existe un moyen en C de fixer la période d'éxécution (en seconde) d'une fonction ??
D'avance merci
Tu peux faire une boucle de temporisation; par exemple:
Et ajuste la valeur maximale de i pour obtenir a peu pres 2 secondes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (i = 0; i < 9999999; i++)
Une autre méthode consisite à utiliser la fonction sleep() ou usleep()
Elles prennent en paramettre la durée d'attente(en millisecondes je crois)
N'hésites pas si t as des questions ...
********************
Fragonard, le roi du canular.
Quand est-ce que le serveur passe à l'heure d'hiver ?
Ce système va engranger plusieurs problèmes :Envoyé par Fragonard
1. Il va utiliser toutes les ressources de ta machine pendant ce temps, alors que je suppose que ton programme à autre chose à faire.
2. Pour obtenir 2 secondes exactement tu vas en effectuer des tests afin de trouver le bon nombre à passer dans la boucle.
3. si tu changes de machine, ton temps ne sera plus de 2 secondes, car l'exécution des cycles sera plus rapide (ou plus lente) suivant le CPU utilisé.
Tu peux utiliser SetTimer(), il exécutera ta fonction dans les bons délais.
Errare humanum est ... sed humanus naturae erratum est.
pour sleep() c'est des secondesEnvoyé par Fragonard
et le problème avec cette fonction c'est que je n'ai pas réussi à l'arreter
Tu peux faire ta fonction de pause :
Puis tu l'appelles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void pause( int nb_sec ) { clock_t val ; val= (nb_sec * CLOCKS_PER_SEC ) + clock() ; while( val > clock() ) ; }
Nas'
Code : Sélectionner tout - Visualiser dans une fenêtre à part pause( (int) 2 ) ;
Comment ca l'arreter ? Soit tu creer un handler de signal et tu balance un signal pour reveiller le process, soit tu fais des thread, dont un qui ne fait que dormir et quand il se reveille, il declanche l'affichage.Envoyé par Willand
1)Avant de poster, merci de lire les règles. 2)Utiliser [code] [/code] pour quoter le code ! 3)Conseils pour le forum C [a lire en entier!]
Ou une thread d'affichage qui fait unà la fin de l'affichage et qui tourne en boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sleep(2);
Tom
J'ai l'habitude de travailler sous linux et ce genre de problèmes se résoud grace aux signaux et je pense que cela existe sous windows puisque c'est une norme Posix.
Dans ton cas il suffit de redéfinir le signal SIGALRM, je te conseille de consulter sur le net ou sur le manuel linux la structure sigaction ainsi que l'appelle sigaction.
J'espere que cette solution te conviendra et elle me semble la plus adaptée a ton problème.
TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS
Je ne suis pas sur que Windows respecte la norme POSIX. Il me semble que POSIX c'est pour UNIX et LINUX.
Tom
et Sleep() (attention à la majuscule !!) ne marche pas non plus ?
Sleep() prend en paramètre des millisecondes.
Errare humanum est ... sed humanus naturae erratum est.
Méa culpa Metal Tom pour Posix .
Suite a ta remarque j'ai fait des recherches et voila ce que j'ai obtenu
Donc Posix est une norme UNIX. Je ne connais pas la programmation système windows mais je suis sur qu'il existe un systeme de signaux permettant de résoudre le problème du monsieur.[POSIX] Portable Operating System for Computer Environment. Norme Unix de l'IEEE, numérotée « 1003.1 », et qui spécifie le noyau du système. La norme POSIX 1-b spécifie les noyaux temps réel. La « 1-c » spécifie les threads. C'était une norme excellente, mais qui fut remplacée par les Spec1170.
A bientot
TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS
En fait comme beaucoup de monde j'ai appris la programmation système sous Linux/UNIX donc la prog système Windows : connais pas bien.
Mais en tout cas sous Linux/UNIX on peut faire des trucs puissants assez facilement. Ca c'est sûr.
Tom
La fonction sleep marche t'elle sur les environnements windows ?
La fonction Sleep (avec une majuscule) existe : http://msdn.microsoft.com/library/en...base/sleep.aspEnvoyé par Sylk
il faut inclure une bibliotheque pour l'utiliser ?
En bas de l'article donné par gl:
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.
tu as en effet :
Sleep(millisecondes)
mais le mieux sous windows c'est d'utiliser un timer (regarde la fonction
SetTimer)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager