-
[MFC] Gestion du temps
Bonjour,
J'utilise une communication de type GPIB dans une boite de dlg avec VC++6.0.
Une partie de la communication GPIB se fait dans des thread, pour que l'utilisateur garde la main et puisse par exemple cliquer sur un bouton annuler.
Je voudrais gérer le temps de communication. en effet, avec le GPIB le temps entre une requette et une réponse peut varier de 50ms à 120ms.
Je voudrais que le temps entre une demande et une réponse soit toujours le même (avec la meillieur présision possible).
Mon idée est d'envoyer la requette, attendre la réponse pendant par exemple 200ms, si la réponse arrive ou la stock et le programme attend la fin des 200ms. si la réponse n'a pas eu le temps de venir le programme prend la valeur précedente et relance une requette nouvelle de 200ms.
Ainsi, j'ai une valeur toute les 200ms, soit elle est correct soit le programme travail avec la valeur d'avant.
Quel est la meillieur approche pour ce type d'application?
J'ai trouvé QueryPerformanceCounter ou la fonction _sleep, si quelqu'un connait une autre solution ou des exemples du même genre?
merci de votre aide,
-
SetTimer() ne fait pa l'affaire????
-
SetTimer n'est pas assez précis !?
-
N'utilise surtout pas le sleep sous XP j'ai vu des sleep(1) pouvant durer jusqu'a 50 ms donc le QueryPerformanceCounter semble le meilleur choix
-
et que pensez vous de GetTickCount()?
-
Et bien GetTickCount() est précis à la milliseconde près, alors que QueryPerformanceCounter() permet une précision à la nanoseconde.
-
Merci pour vos indications.
Peut-il y a avoir des problèmes avec ce type de fonction (temps) et l'utilisation de threads?
-
Bien sûr, il faut faire attention. Mais si tu programmes proprement, et surtout, si tu sais exactement ce que tu va faire avant d'écrire ton code, il ne devrait pas y avoir de problèmes.