begin process at 2012 02 15 16:21:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

Timer précis


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Timer précis

dimanche 7 septembre 2008 à 09:26:44 | Timer précis

calimero63110

Bonjour,

Je cherche a realiser un timer précis, ( maximum 5ms d'erreur ), il est réglé sur 30-40 ms, or il tick toutes les 70ms ! ( le code présent a l'interieur n'est pas tres volumineux ni long a executer.

Je cherche donc par nimporte quel moyen a rendre ce timer précis.

J'ai essayé via un timer avec l'api windows :

SetTimer Me.hwnd, 0, 40, AddressOf TimerProc
On obtiens EXACTEMENT le même resultat qu'avec le timer windows. Comment faire ?
dimanche 7 septembre 2008 à 09:37:11 | Re : Timer précis

jmfmarques

Membre Club
Bonjour,

essaye alors de le faire "ticker" toutes les millisecondes (intervalle de 1 ms) et utilise, dans ses unstrructions, une variable static utilisant la fonction Timer, de sorte à ne lancer une exécution que si la nouvelle valeur de la fonction timer est >= 5 par rapport à ta variable static.
dimanche 7 septembre 2008 à 09:49:47 | Re : Timer précis

calimero63110

C'est a dire :

A la fin du timer :
tick = gettickcount

au début

Do While gettickcount < tick + 40
DoEvents
Loop

c'est bien ça ?

Or je suppose qu'avec une machine peu puissante, l'équart va être encore plus important, voir ne pourra même pas ticker toutes les 40ms, non ?
dimanche 7 septembre 2008 à 11:22:41 | Re : Timer précis

jmfmarques

Membre Club

Re,

Non ...

Le principe est le suivant (ici avec un contrôle timer ... que tu peix remplacer par ton Timer/api et la fonction Timer (que tu peux remplacer par ton GetTickCount, si tu veux).

Une Form, un timer, un bouton Lancer et un bouton Stopper

Essaye :

Private debut As Double, fois As Double

Private Sub lancer_Click()
 debut = Timer
 Timer1.Interval = 1
 Timer1.Enabled = True
End Sub

Private Sub stopper_Click()
  Dim duree As Double, frequence As Double
  duree = Timer - debut
  frequence = duree / fois
  MsgBox "j'ai battu " & fois & " fois pendant " & duree & " secondes " & _
  "soit toutes les " & Format(frequence, "#0.000") & " secondes"
  fois = 0
End Sub

Private Sub Timer1_Timer()
  Static toto As Double
  If toto = 0 Then toto = Timer
  If Timer >= toto + 0.005 Then
   fois = fois + 1
  End If
End Sub

Tu n'arriveras jamais à ta fréquence de 0.005 secondes, toutefois, quel que soit le procédé ... sauf si ton matériel est super exceptionnel.

dimanche 7 septembre 2008 à 11:35:01 | Re : Timer précis

jmfmarques

Membre Club
Euh... un oubli de réiunitialisation de toto ...
corrige :

Private Sub Timer1_Timer()
  Static toto As Double
  If toto = 0 Then toto = Timer
  If Timer >= toto + 0.5 Then
   fois = fois + 0.005
   toto = Timer
  End If
End Sub
dimanche 7 septembre 2008 à 12:19:46 | Re : Timer précis

calimero63110

Euh la sa tick toutes les 30ms ?

C'est precis ? a 5ms pret c'est toutes les 30ms ?
dimanche 7 septembre 2008 à 13:30:09 | Re : Timer précis

akim77

Bonjour,

"Or je suppose qu'avec une machine peu puissante, l'équart va être encore plus important, voir ne pourra même pas ticker toutes les 40ms, non ?
"

Oui, Windows n'est pas un système temps réel donc aucune garantie sur le temps d'éxécution.

As-tu tenté de changer la priorité de ton processus ?
Dans le gestionnaire des tâches, dans l'onglet Processus, clic droit sur ton processus, définit la priorité "Haute" ou "Temps réel" (Temps réel peut rendre Windows instable)
Infos ici : http://sravier.free.fr/info/w2k_priorites.html
et ici http://www.vbfrance.com/codes/PROCESSPRIORITY_40455.aspx

Akim
dimanche 7 septembre 2008 à 13:36:14 | Re : Timer précis

jean_marc_n2

Hello, Pour des timer précis et tout ce qui concerne la gestion du temps, on pourra se référer au site de la FAQ Visual Basic et notamment à l'article : "Comment chronométrer mon programme ? Comment mesurer précisément le temps ?" : http://faq.vb.free.fr/index.php?question=176 L'article présente plusieurs méthodes, en fonction de la précision souhaitée. Cordialement Jean-Marc
dimanche 7 septembre 2008 à 15:22:12 | Re : Timer précis

PCPT

Administrateur CodeS-SourceS
salut,

précision (intervalle mini) du contrôle timer : 18ms.
précision par API : 10ms

possible de passer en dessous avec les api MIDI mais c'est un gouffre de ressources et le succès dépend du processeur.

bref il doit y avoir quelque chose que tu ne nous dis pas, un contrôle timer réglé à 40ms sera fonctionnel
le code dans l'évènement est peut être un peu plus long que "
pas tres volumineux ni long a executer "

++


Prenez un instant pour répondre à ce sondage svp  
dimanche 7 septembre 2008 à 16:42:32 | Re : Timer précis

jean_marc_n2

On atteint quand même sans soucis une résolution fiable d'une dizaine de microsecondes avec QueryPerformanceCounter, qui n'est pas un "gouffre de ressources" :-) (avec une machine à au moins 1 Ghz).

Cf. : http://faq.vb.free.fr/index.php?question=176#p5

La doc (MSDN) est indiquée en fin d'article.

(jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/




1 2

Cette discussion est classée dans : timer, cherche, windows, précis


Répondre à ce message

Sujets en rapport avec ce message

cherche code pour lancer des apps se trouvant ss windows [ par Mr.Fred. ] salut !je cherche le code pour lancer des apps windows telles que le bloc note ,la calculatrice par exemple a patir d'un exe vb.en fait je veux faire Apis Windows [ par Johjo ] Salut tout le monde.Je cherche un moyen d'obtenir la colonne dans laquelle est le curseur dans un textbox. Je cherche un moyen rapide.Je sais qu'avec Windows 95, 98, Me, 2000 ou XP ? [ par MyC ] Salut !Je cherche un moyen sûr et précis permettant de trouver la version de windows installée sur un PC.Par les API, ce n'est pas très précis, alors Je cherche un OCX [ par hayder ] L'expert ComptableJ'ai besoin d'un OCX qui permet de gérer des boîtes de dialogues dans des Forms. Je sais pas s'il existe mais windows et d'autres ap timer précis, très précis... [ par themaste ] Salut a tous!!! J'ai actuellement un prog qui me permet de connaitre le tem Bibliothèque windows et imprimante [ par grumli ] Bonjour,Je cherche à modifier l'imprimante par défaut à partir d'une appli VB, sous VB6. Je cherche, la bibliothèque de fonction générale de windows, je cherche un adaptateur wireless pour windows CE [ par BosB ] J'ai des client léger (terminaux passif qui permette de se connecter en ica, citrix, sur des bureau virtuel) que je veux mettre en reseau wiress... ce Windows Authentication [ par MrOsmose ] Bonjour, j'ai fouiller un peu partout ou je pouvais, mais je n'ai jusqu'a présent rien trouvé qui convenait a ce que je veux faire.en gros j'ai un pro faire fonctionner un Timer pendant un temps précis [ par gaudreaua ] Bonjour,je travaille avec un timer. je comprends bien qu'il boucle à tous les ... (selon le .interval que je lui donne en milliseconde)Ce que j'aimera Service windows qui se lance au démarrage mais ne fait rien! [ par terminathan ] Bonjour!Je suis en train de faire un service Windows ayant pour but de lancer toutes les deux minutes un .bat et un .VBs.Grâce à Renfield qui m'a aidé


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales