Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TIMER OCX A INTERVAL LONG (MULTI-USAGE : CLASSIQUE, BENCHMARK, HORLOGE)


Information sur la source

Catégorie :Control Classé sous : timer, ocx, benchmark, intervalle, afck Niveau : Initié Date de création : 19/07/2005 Date de mise à jour : 26/11/2005 13:28:47 Vu / téléchargé: 6 662 / 910

Note :
9,2 / 10 - par 5 personnes
9,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Un petit Timer sans prétention, pour remplacer celui de VB.
3 options : (expliquées sur la Form > How To use)

Classical -> Comme celui de Vb, plus précis, avec un intervalle "Long" et non pas "Integer".
Bench -> calcul entre son démarrage et sa fin, en Currency millisecondes, par QueryPerformance ou GetTicket à défaut.
Watch -> envoie un évènement à chaque seconde, minute, heure.

Invisible au RunTime, et on ne peut pas changer son type pendant qu'il est en Enabled=True.
pour tester l'erreur retournée : AfTimer1.TypeTimer=Watch
s'il est sur True et différent de Watch, l'erreur 231 se produit.
 

Conclusion

Pour avoir les performances réelles, compilez ce contrôle (OCX).
Si vous avez des suggestions, améliorations, questions, commentaires (+note), je suis là ;)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

19 juillet 2005 15:28:35 :
Ajout de l'OCX compilé
27 juillet 2005 16:20:37 :
Maj Zip (Interval pour Ocx + source)
13 août 2005 17:22:15 :
projet + ocx renommés suppression d'un "debug.print" égaré correction des références (remarque de mythic_kruger)
26 novembre 2005 13:28:47 :
mots-clés

Commentaires et avis

signaler à un administrateur
Commentaire de PCPT le 19/07/2005 16:02:50 administrateur CS

mise à jour du Zip : OCX compilé fourni.
(le Projet_Sample est tout de même lié au projet non-compilé)
je crois que ce Timer peut servir à plus d'un...
j'attend vos retours ;)

PCPT

signaler à un administrateur
Commentaire de Renfield le 19/07/2005 16:39:22 administrateur CS

Interessant...

Attention cependant a la technique employée : VB est sensible aux procédures de rappel (CallBack) et crash si on presse par exemple le bouton STOP de l'IDE

Attention dans "Let Interval" si on réaffecte la même valeur, on se retrouve avec mInterval = 1

Pour l'erreur, tu peux utiliser Err.Raise 231 , "TypeTimer ne peut pas être changé l...."

ca a été bossé, et reflechi, c'est clair !

signaler à un administrateur
Commentaire de PCPT le 19/07/2005 18:04:05 administrateur CS

Salut,
pour Le crash dans l'IDE, j'en suis conscient. il faut l'utiliser en OCX. il ne plante pas l'IDE lorsqu'il est compilé (je viens de vérifier).

pour "Let Interval", en effet, j'ai placé le "End If" un peu trop haut. je modifie çà, et je mettrais à jour après d'autres commentaires...
pour ceux qui veulent le changer de suite, il suffit de déplacer le "End If" juste avant le "End Property"

Pour "Err.Raise", je ne connais pas. on peut l'utiliser sans avoir à déclarer un "Event Error" perso? c'est juste pour savoir, j'aime bien ma manière de procéder tout de même :-p , avec légende + paramètres supplémentaires éventuels (même si c'est inutile pour ce cas de figure)

merci ....
(tu peux aussi noter si tu veux -_-)
PCPT

signaler à un administrateur
Commentaire de Afyn le 19/07/2005 22:52:40

C bien.
Normalement précis à 10 ms.

Effectivement les callBack sont chatouilleux.
Faudrait essayer avec d'autres API que Set Timer.

(Par exemeple un TimerQueueTimer serait le bien venu !)

Bonne continuation

Afyn
Navedac

signaler à un administrateur
Commentaire de PCPT le 20/07/2005 01:04:27 administrateur CS

Afyn -> la seule source qui parle apparemment de cette API, c'est là tienne ;)
mis à par MSDN où je viens de trouver des infos.
seulement, en comparaison avec ta source, pour les performances, en passant par SetTimer, mon PC est entre 18% et 24% d'utilisation (avec le reste qui tourne) à intervalle de 10ms. avec ta TimerQueue..., entre 48% et 73%. et 100% en 1ms.

tu peux me donner plus d'infos? dans le sens...., m'expliquer pourquoi je devrais modifier mon timer pour qu'il décolle les dissipateurs thermiques :-p

les 10ms, donc l'équart minimal réel pour le CallBack, ok, mais ce n'est qu'un timer. celui de VB est à 18ms. çà me paraît pas mal déjà. après, pour avoir des performances plus précises entre 2 évènements, il suffit de basculer en mode BenchMark. vous pouvez par exemple mesurer :

Dim I as Integer
Af.Enabled = True
I = 3
Af.Enabled = False

-> retoune 0,0207ms

merci pour ce(s) commentaire(s), j'en prend bonne note en attendant les suivants ;)
PCPT

signaler à un administrateur
Commentaire de Afyn le 20/07/2005 10:14:46

Quelques Infos :
Plusieurs Types de Timers :
Timer VB : intervalle min 18 ms !
Timer API SetTimer : intervalle min 10 ms (low priority)

Pour avoir un intervalle à la milliseconde :
Multimedia Timer : (winMM.dll) Win 95 -> Win XP
- Il faut que le PC soit équipé d'un Timer assez précis
(mais ça semble etre le cas de tous les PC !)
- Il faut régler la précision de l'horloge interne au max
- Le timer crée un Thread supplémentaire
-> un trés bon exemple Le RSTimer (environ 1 % du proc)
   composant free mais sans les sources

Ensuite viens le waitable timer soit disant plus léger
en ressource, qui s'éxécute dans le même thread, peut
être utile pour débugger. précis 1 ms également en ajustant
l'horloge système avec les API WinMM.

Sur XP, le top serait le TimerQueueTimer, moins de ressources
processeur. Mais là ... entre la théorie et la pratique ...
Si tu veux je te passe un exemple ... de code qui marche
dans l'IDE, mais qui plante en compilé quand on essaye
d'accéder à des variables Objets (commme un shape par ex)
Impossible de trouver un exemple fonctionnel. J'aimerai
bien que quelqu'un m'explique pourquoi ça plante ?
(peut etre un appel a la vm qui n'est pas safe)

Voilà, mes connaissance ne vont guère plus loin ...

En fait, il faudrait également connaitre le système
de message win, savoir quels messages sont traités
avant les autres pour mettre aux point un timer,
car ça ne sert à rien de savoir envoyer des
messages de façon précises, s'il sont traités
en dernier ...

Il y a surement des trucs à explorer du coté des
interruptions, ou de la façon dont sont programmé
les drivers.

Bon courage

Afyn
Navedac

signaler à un administrateur
Commentaire de PCPT le 27/07/2005 16:25:43 administrateur CS

Afyn -> ok, merci pour ces précisions. je ne pense pas faire évoluer ce timer, pour le moment du moins, mais j'ai feuilleté un peu la MSDN en rapport à tes informations.
peut-être m'y plongerais-je + un jour...

All -> zip mis à jour, avec la correction de l'intervalle (le "End If" trop haut).
et j'en ai profité pour le passer à 10 par défaut et 10 en cas d'erreur, en laissant la possibilité de le descendre jusqu'à 1 comme le Timer VB (même si il n'y en a pas d'utilité)

PCPT

signaler à un administrateur
Commentaire de mythic_kruger le 30/07/2005 03:49:15

Intérêt du programme: 10/10
    Utile, vu le contrôle Timer de VB.

Code: 8/10
    Pourquoi pas une classe plutôt qu'un OCX?

Distribution: 6/10
    Editer le vbp pour les références, hum.

Pédagogie: 10/10
    Bien les explications sur l'interface.

Interface: 10/10
   Bon design!

Conclusion: un bon contrôle ActiveX.

signaler à un administrateur
Commentaire de PCPT le 30/07/2005 10:35:52 administrateur CS

merci ;)



code -> parce que je suis dans les OCX depuis peu, c'est pour me faire la main.
        parce qu'en classe, çà existe déjà.
        pour vraiment remplacer le TimerVB, donc dans les outils ;)
        (mais tu es le 2e à m'en faire la remarque)

distribution -> l'ocx compilé est fourni dans un fichier Release, je ne vois pas le problème de référencer un projet recompilable, à un projet exemple....
ou alors j'ai mal compris.... (?)


çà fait plaisir en tout cas
PCPT

signaler à un administrateur
Commentaire de NeverDie le 04/10/2006 20:35:20

comme vous aller l'air à bien connaître les timer, j'ai une question pour vous. J'ai fais un petit programme console qui va vérifier l'utilisation du CPU et de la mémoire sur un Serveur (Windows server 2003). Ensuite, celui-ci enregistre les données dans la BD et enregistre également une erreur dans la BD si le % d'utilisation préalablement déterminé est dépassé. J'utilise un timer (VB) pour vérifier l'utilisation CPU/MEM, l'intervalle est prédéfini par un utilisateur. Tout fonctionne bien. Cependant, après un certain temps aléatoire, le timer arrête sans raison apparente. Aucune erreur enregistré dans Event LOG, aucune exeption "catcher" dans le programme non plus. Auriez-vous une idée de la cause de ce problème et qu'est-ce que je pourrais faire pour remédier à cette situation ?

merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Une fonction comme Timer avec un intervalle + grand ? [ par trabice ] Bonjour,tout est dans le titre.Je ne sais pas du tout si ca existe.MerciFabrice Urgent Timer et intervalle [ par moi4975 ] salut tous le monde,Voila j'ai mis un intervalle de 226000 millisecondes et mon timer revoit une erreur !!! Comment faut-il faire pour pouvoir decompt *** Timer avec intervalle de 1min 05 sec *** [ par browser64 ] Bonjour à tous, Sur le code "voir ci-dessous" je souhaiterai que mon "MSGBOX" s'execute toute les 1 min 05 secondes. Quel est le code manquant po Equivalent timer rapide (intervalle de 10ms) [ par mstarsup5 ] Bonjour, Pour un de mes programmes, j'utilise une boucle prenant assez de temps (10 secondes), dans lequel je dois utiliser des sleep 10 (les timer ne Effectuer un traitement à intervalle de 24 heures [ par syca ] Bonjour,Je cherche depuis un moment le moyen de faire l'équivalent du timer, mais sur une période calculée en heure et non en ms. Je sais mettre le pr [AIDE] Charger un OCX dans le code [ par nico_fip1 ] Bonjour,Est ce qu'un objet ocx peut être utilisé comme une colasse, et chargé directement dans le code ? (Sans le placer physiquement d Timer et filelistbox dans une page HTML sous VB6 [ par EREF ] Salut à Tous !!! Je débute en HTML et mon Pb est le suivant: Dans une page HTML (sous VB6) je veux faire un explorateur de fichier à deux fenetres de Probleme de timer [ par demonn ] bonjour a tous ,voilà j'ai un timer qui arrete et qui relance un processus toutes les 10 minutesseulement entre le moment ou il arrete et celui o Timer sur VB6 [ par gilles74 ] Bonjour,est ce que quelqu'un connait une solution simple pour créer un temporisateur (Precision 0.1s)?Merci. copier , enregistrer ... [ par diablamanshadow ] bonjour, alors voila mon probleme , je fais un programme (logique lol) et j'ai des ocx et voila la cata j'ai pas envie de me casser la tete a expliker


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,686 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.