[R] Timer.tick ??!

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

[R] Timer.tick ??!

#1

Message par cutprod »

Bonsoir a tous, encore félicitation pour le forum j'y trouve souvent mon "bonheur"!
Petite question : sous vb net j'utilise des timers qui me déclencher des évènements au "timer.tick"
Sous Autoit j'utilise "AdlibRegister", il n' y a pas autre chose? pas de timer.tick?
Modifié en dernier par cutprod le dim. 17 oct. 2010 09:31, modifié 3 fois.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Timer.tick ??!

#2

Message par jbnh »

En quoi AdlibRegister ne convient-il pas ?
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Timer.tick ??!

#3

Message par cutprod »

Si si ça convient très bien!
C'était juste pour savoir...
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [R] Timer.tick ??!

#4

Message par jbnh »

Je crois bien que l'équivalent est bien AdlibRegister et AdlibUnRegister.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [R] Timer.tick ??!

#5

Message par cutprod »

ok, je te remercie.
Pourquoi lorsque sur un événement je lance 2 "AdlibRegister" avec la même valeure "time" sa flambe mon programme (je peut plus sortir!) ?
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Timer.tick ??!

#6

Message par cutprod »

Regarde sur un script de ce genre ca bloque quand j'active mes deux fonctions : Pourquoi?
(Je suis sur que c'est tout bête mais je débute...)

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 364, 221, 192, 124)
$Button1 = GUICtrlCreateButton("fonction1", 43, 53, 121, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("fonction2", 197, 54, 121, 33, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("", 43, 141, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
$Label2 = GUICtrlCreateLabel("", 203, 143, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
         Case $GUI_EVENT_CLOSE
         Exit

         Case $Button1
         AdlibRegister("one",1000)

         Case $Button2
         AdlibRegister("two",1000)

       EndSwitch
WEnd

Func one()
GUICtrlSetBkColor($Label1, 0xff0000)
Sleep (500)
GUICtrlSetBkColor($Label1, 0xC0C0C0)
EndFunc

Func two ()
GUICtrlSetBkColor($Label2, 0xff0000)
Sleep (500)
GUICtrlSetBkColor($Label2, 0xC0C0C0)
EndFunc


 
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Timer.tick ??!

#7

Message par Tlem »

En regardant votre code, je dirais simplement que si vous cliquez sur le bouton 1, vous activez une première fonction qui est exécutée une fois par seconde. Or cette fonction dure un tout petit peut plus que 500ms ce qui ne laisse pas beaucoup de temps à votre boucle de message (moins de 500 ms) :roll: .
Si vous cliquez sur le bouton 2, vous activez une nouvelle fonction qui dure un peut plus de 500 ms et qui doit être exécutée toute les secondes.

Donc 500 ms + 500 ms = 1 seconde
Autrement dit, vos fonctions utilisent 100% des ressources du script, ce qui le rend 'sourd' aux autres commandes puisque la boucle de message ne peut être exécutée normalement. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Timer.tick ??!

#8

Message par cutprod »

OK je vois, y a t il une solution ?(Pour ce genre d'actions)
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Timer.tick ??!

#9

Message par Tlem »

Oui, il y a deux solutions.

1 - Diminuer le temps de chaque fonctions en modifiant le Sleep(500) par un Sleep(100) par exemple.
2 - Augmenter la périodicité d'appel aux fonctions. Au lieu de 1 seconde, utilisez 5 secondes ou plus.

Il est aussi possible de faire un mix des deux solutions. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Timer.tick ??!

#10

Message par cutprod »

Merci pour ton aide.
Ça m'étonne un peut! On ne peut pas faire un script ou figure deux pauvres boutons qui clignotent 1 fois par seconde ,sans faire planter le prog!!
Rassure moi?
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Timer.tick ??!

#11

Message par Tlem »

Le programme ne plante pas !!!
Il fait ce que vous lui demandez de faire, sauf que là vous lui demandez d'être à plus de 100%.
Le problème vient de la commande Sleep(). Elle est à proscrire dans les fonctions comme AdlibRegister().

Lisez ceci : http://www.autoitscript.fr/forum/viewto ... 560#p36560

Voici une alternative :
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] Timer.tick ??!

#12

Message par cutprod »

Ton alternative fonctionne très bien.
Je te remercie.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Timer.tick ??!

#13

Message par Tlem »

N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Timer.tick ??!

#14

Message par zeshrek »

A la recherche d'une fonctionnalité similaire (pour mon controle parental, ou je veux surveiller que les process voulus tournent, et que que les indésirables eux ne tournent pas) je suis tombé sur ce topic
Je ne connaissais pas adlibregister, et c'est exactement ce qu'il me fallait, du coup je me suis servi de ton script pour voir comment ca marche... et j'ai eu l'idée d'une autre solution a ton pb.

Comme l'a dit Tlem, le pb vient des sleep. D'ou ma question, pourquoi les garder si ils sont source de probleme ?

Donc voici ce sur quoi je t'aurai orienté.
(j'ai rajouté un 3eme bouton qui lance les 2 compteurs simultanément pour etre sur que ca ne pose pas de pb et qu'ils restent bien synchrones)

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 364, 221, 192, 124)
$Button1 = GUICtrlCreateButton("fonction1", 20, 54, 90, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("fonction2", 240, 54, 90, 33, $WS_GROUP)
$Button3 = GUICtrlCreateButton("fonction3", 130, 94, 90, 33, $WS_GROUP)

$Label1 = GUICtrlCreateLabel("", 43, 141, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
$Label2 = GUICtrlCreateLabel("", 203, 143, 116, 25)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$color1 = 0xff0000
$color2 = 0xC0C0C0
$color3 = 0x00ff00
$color4 = 0xC0C0C0

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $Button1
            AdlibRegister("one", 500)

        Case $Button2
            AdlibRegister("two", 500)

        Case $Button3
            AdlibRegister("one", 500)
            AdlibRegister("two", 500)

    EndSwitch
WEnd

Func one()
    _swap($color1,$color2)
    GUICtrlSetBkColor($Label1, $color1)
EndFunc

Func two()
    _swap($color3,$color4)
    GUICtrlSetBkColor($Label2, $color3)
EndFunc

Func _swap(ByRef $v1, ByRef $v2)
    $v3 = $v2
    $v2 = $v1
    $v1 = $v3
    Return
EndFunc
Si vis pacem para bellum
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [R] Timer.tick ??!

#15

Message par cutprod »

ha oui ok, c'est très bon aussi!!
Mais put tu m'expliquer pourquoi tu donne la même valeur a deux variables, pourquoi ne pas en utiliser qu'une seule ?
$color2 = 0xC0C0C0
$color4 = 0xC0C0C0
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Timer.tick ??!

#16

Message par zeshrek »

cette question je l'attendais...
Comme les valeurs swapent par paquet de 2 ($color1 avec $color2 et $color3 avec $color4) si on en utilisait que 2 quand la premiere fonction fait son swap ca marcherait, puis la 2eme viendrait remettre tout d'aplomb, ce qui fait que quand la premiere reviendrait, elle remetrait a nouveau comme elle avait mis apres son premier passage, du coup ca clignoterait plus.
Pire si on en met que 3 (col1=fond, col2 et col3 etant des couleurs distinctes pour les 2 cases).
Donc fonction1 swap col1 et col2
et fonction 2 swap col1 et col3
Si les 2 fonctions sont activées on se retrouve avec un chenillard ou les 3 couleurs se succedent sur chaque case.

De plus comme ca rien ne t'empeche de mettre
$color1 = 0x00ff00
$color2 = 0x000000
$color3 = 0x0c0c0c
$color4 = 0xffffff
pour faire clignoter la premiere en noir et vert, et la seconde en gris et blanc (si je me trompe pas dans mes codes couleur...)
Si vis pacem para bellum
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [R] Timer.tick ??!

#17

Message par cutprod »

OK merci pour tes "lumières", on progresse chaque jours...
Cut, srcipteur du dimanche...désolé !-)
Répondre