Timer haute precision

Signaler
Messages postés
8
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
7 juin 2007
-
Messages postés
104
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
27 juin 2007
-
Yo tout le monde !
Je crois que je me trouve dans la bonne section. J'ai cherché un peu sur le net et j'ai trouvé deux - trois trucs sur l'utilisation d'api windows pour realiser un timer de haute precision (au moins de l'ordre de la milliseconde).
J'expose le probleme : j'ai une communication  serie a realiser avec un pc  windows et une carte electronique, et les transferts doivent se faire de maniere tres precise. Actuellement j'utilise le fameux System.Windows.Forms.Timer, mais c'est vraiment pas precis.
Ce que j'ai besoin c'est d'un timer capable d'appeler une methode toutes les millisecondes (en supposant que les instructions contenues de la methode s'executent en moins d'une milliseconde). Le problème c'est que je ne sais pas du tout comment proceder.

Je voulais utiliser un thread.sleep(1) mais d'apres ce que j'ai pu lire c'est pas precis non plus. Sinon on parle de creer un timer en comptant le nombre de tick mais là je seche.

Si qqn pouvait m'aider, c'est assez urgent en fait.

Merci tout le monde et bonne soiree / nuit !

3 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,
Le C# et le .net sont géniaux pour beaucoup de choses, mais pas pour ce genre de chose là.
A mon avis, tu auras vraiment beaucoup de peine à éxécuter une instruction précisémment toute les milliseconde.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut, il y'a des timers bien plus précis que celui que tu utilises mais ils ne déclenchent pas d'évenements, tu dois tourner dans une boucle. En NET 2.0 on utilise la classe StopWatch, sinon tu peux aussi utiliser ma classe HighTimer.

http://www.csharpfr.com/infomsg_MESURE-TEMPORELLE-PRECISE_806922.aspx#9
Messages postés
104
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
27 juin 2007
3
Je pense que ca doit etre possible car qu'on par exemple en Web on trace une application ,le framework nous donne des chiffres avec 10 chiffres apres la virgule voir plus en fait je pense que c'est la précision du type double .

Bref en regardant un peu sur le web ,j'ai trouvé ca.je sais pas si ca peut t'aider.

http://saftsack.fs.uni-bayreuth.de/~dun3/archives/more-accurate-timing-stopwatch-performancetimer-queryperformancecounter/19.html

ou encore

http://msdn2.microsoft.com/En-US/library/aa457094.aspx

http://msdn2.microsoft.com/fr-fr/library/system.diagnostics.stopwatch.ishighresolution(VS.80).aspx

I hope i will help ;-)