gaudreaua
Messages postés32Date d'inscriptionjeudi 7 mai 2009StatutMembreDernière intervention15 mai 2009
-
14 mai 2009 à 19:10
gaudreaua
Messages postés32Date d'inscriptionjeudi 7 mai 2009StatutMembreDernière intervention15 mai 2009
-
15 mai 2009 à 14:49
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'aimerais c'est lui dire que tourner pendant 30 secondes puis exit sub. Est-ce possible ?
J'ai essayer cela mais... vous comprendrez sûrement que le i se met à zéro à chaque tour donc il n'arrête jamais...
i = 0
If i = 300 Then
Exit Sub
Else
emissionPort ("ZEA " & no_port)
attente (0.05)
buffer = Form2.MSComm1.Input
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 mai 2009 à 19:58
Il me semble que j'ai été très clair, pourtant (à condition que celui qui me lit ne se contente pas d'ouvrir le bec et d'attendre la becquetée !)...
Si tu te lances dans le développement, tu seras très vite confronté à mille fois plus complexe que ce petit amusement !!!
Un exemple, alors (et fais un effort d'analyse et de compréhension de ce mécanisme, hein ...)
Un projet (tout neuf) avec un label label1 et un timer timer1
Private Sub Form_Activate()
Timer1.Interval = 1
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Static couic As Date If couic 0 Then couic Now
Label1.Caption = Now
If DateDiff("s", couic, Now) > 10 Then
couic = 0
Timer1.Enabled = False
End If
End Sub
Lance et observe .... (ne nécessite aucune espèce de commentaire).
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 mai 2009 à 19:35
Bonjour,
- on arrête un timer non par exit sub mais par sa propriété enabled
- une boucle avec i dans un timer n'a pas vraiment de sens !
- un timer n'étant jamis très précis, il est préférable de compter sa durée de fonctionnement non en nombre de battements multiplié par l'intervalle, mais, en lieu et place :
- de se servir d'une variable static (on y met l'heure au départ et on arrête le timer lorsque l'heure actuelle dépasse de plus de x secondes l'heure de départ)...
Tout cela est de la plus grande simplicité
gaudreaua
Messages postés32Date d'inscriptionjeudi 7 mai 2009StatutMembreDernière intervention15 mai 2009 14 mai 2009 à 19:44
Je comprends bien ce que tu dis... mais je ne vois pas comment je vais l'appliquer...
Quand je clique sur un bouton commande
1- le compte ou décompte de 30 sec débute
2- pendant ce temps j'utilise un timer pour récupérer des valeurs sur le port comm toutes les 100 milliseconde
je veux qu'il s'arrête timer.enabled = false quand le 30 seconde est écoulé
je ne comprends pas bien comment utiliser l'heure?
tu serais aimable de pousser tes explications un peu plus loin pour le débutant que je suis.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 mai 2009 à 19:50
Private sub Timer1_Timer()
Static nStartTime As Long
If nStartTime = 0 Then
nStartTime = Timer
ElseIf Timer = nStartTime+30 Then
Timer1.Enabled = False
Else
'# emission port.....
End If
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 mai 2009 à 20:01
Bonjour Renfield,
- Tu m'as doublé pendant que ma fille me souhaitait un bon anniversaire !
- j'ai préféré choisir Now pour éviter un éventuel chevauchement de dates (défaut de la fonction Timer)
gaudreaua
Messages postés32Date d'inscriptionjeudi 7 mai 2009StatutMembreDernière intervention15 mai 2009 14 mai 2009 à 21:29
Merci messieur...
et ce n'est pas faute de me creuser la tête ou de chercher du tout fait... mais comme je débute en vb ce n'est pas les concepts qui m'échappe, je comprends très bien ce qu'il faut faire mais je n'arrive pas à les mettre en place car je ne connais pas les fonctions....
je ne savais pas qu'il y avait le fonction de date et heure et je ne savais pas non plus ce qu'était une variable static..
Parfois les Pros oublient que le newbies ne connaissent pas la moitié des fonctions qui existent....
Bon votre solution fonctionne et merci encore
et Joyeux anniversaire jmf0
gaudreaua
Messages postés32Date d'inscriptionjeudi 7 mai 2009StatutMembreDernière intervention15 mai 2009 14 mai 2009 à 22:02
Bonjour les spécialiste du Timer...
dans mon appli je dois récupérer le temps auquel j'ai récupérer ma valeur sur le port comm ... en utilisant mes nouvelles connaissance que j'ai apprises de vous, j'ai produit ce qui suit.... voici mon problème parfois j'obtiens une valeur de b négative.... comment cela est-ce possible ??? avez-vous des solutions.???
static tps_lect As Long
If tps_lect 0 Then tps_lect Timer
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 mai 2009 à 22:28
Alors ?
La fonction Timer te renvoit le nombre de secondes écoulées depuis minuit.
Il est clair que dans le cas d'un chevauchement de jours entre les deux mesures, la 2ème sera alors plus petite que la première et alors :
la_deuxième moins la_première sera négative ...
Raison pour laquelle j'ai (revoiis donc mon exemple) choisi d'utiliser la Fonction Now plutôt que la fonction Timer ...
Fais-en autant et tu n'auras plus de valeur négative, pardi !
Voilà ...
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 mai 2009 à 22:58
1) typé en long, start ne peut te retourner des décimales !
2) quiel que soit son type : timer - start ne peut être < 0 que si Timer < start (et cela ne peut arriver que si start a été défini avant minuit et que Timer - start est calculé après minuit ... (c'est clair !)
Tu vux mesurer plus finement qu'en secondes ? C'est possible avec la onction GetTickCount de l'Api de Windows, mais je n'ose même pas t'en parler compte tenu du niveau que tu as et des difficultés que tu montres à "manipuler" et comprendre du plus simple ...
Pardonne-moi et bonne chance ...
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 15 mai 2009 à 00:02
Alors et très calmement :
"et comment je suis supposé savoir que le 1/100 de seconde du timer n'est pas précis"
- Ce n'est pas "le" Timer (qui est un contrôle VB) , qu'utilise ta variable start, mais la fonction Timer (qui est autre chose).
- ouvre (surtout si tu es débutant) ton aide en ligne (elle est faite pour cela et même les plus avertis et les plus avancés l'ouvrent plusieurs fois par jour) et lis ce qui est dit à propos de la fonction Timer (VB t'explique qu'elle mesure des secondes et ne fais aucune allusion à des 100èmes de seconde)
- il t'est toujours loisible, lorsque tu as un doute, de faire un petit test... celui que j'ai fait est un exemple de précaution...
- en ce qui concerne les typages : leur compréhension est absolument indispensable et doit être l'un des tout premiers pas à faire avec assurance !
En résumé et très amicalement : ne te lance pas dans le développement tête baissée si tu ne veux pas te cogner contre un mur. L'aide en ligne existe pour être lue avec la plus grande attention (au moins en ce qui concerne certains points fondamentaux). Je n'ai eu qu'elle à mon époque (pas de web ===>> pas de forums, pas de profs ==>> pas de cours, etc... ===>> donc absolument tout seul + cette précieuse aide en ligne). J'ose à peine te dire (ne le prends pas mal, hein...) que ces questions de base ont été assimilées en moins de 48 heures...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 mai 2009 à 07:07
fichtre, que de posts...
"t'as raison, je vais chercher davantage sur l'aide en ligne.... mais avec toute les ressources web pourquoi s'en priver..."
Si les resources web en question c'est nous, je prefere autant que tu cherche un brin par toi même.
utilises la touche F2, pour savoir ce que VB peut te proposer
utilises l'aide en ligne, si tu as des questions de compréhension de prolemes de bases
utilises le forum. beaucoup de questions ont dejà été posées. Trouver les bon termes de recherche montre une onne analyse de ton probleme
et là seulement, tu poses une question...
Ne vas pas considérer que l'on dénigre les débutants. Ca fourmille ici. Les gens auraient tourné les talons si c'était le cas.
Je sais donc par experience que c'est les mains dans le code, et dans google, parfois que tu apprendra vraiment.