Fonction Sleep qui ne marche pas ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Hawaii
Niveau 1
Niveau 1
Messages : 1
Enregistré le : ven. 18 déc. 2020 11:11
Status : Hors ligne

Fonction Sleep qui ne marche pas ?

#1

Message par Hawaii »

Bonjour
Avant tout je suis un débutant et je ne maitrise pas encore forcément la sémantique du codage ou autre.
Je travaille sur un script qui, basiquement, à l'aide d'une interface graphique permet de pinger des serveurs ( 50 serveurs max ) et de retourner l'état du serveur.
Voici l'interface graphique :
TestServeurs.png
While 1
   Sleep(100)
   If $Scanner = 1 Then
      VerifierXClick($LigneEnCours)
      $LigneEnCours = $LigneEnCours + 1
      If $LigneEnCours = 51 Then
         $LigneEnCours = 1
      EndIf
   EndIf

WEnd

Func StopClick()
   GUICtrlSetState ( $Button3, $GUI_ENABLE )
   GUICtrlSetState ( $Button4, $GUI_DISABLE )
   ConsoleWrite("STOP" & @CRLF)
   If $Scanner = 1 Then
      $Scanner = 0
   EndIf
EndFunc

Func DemarrageToutClick ()
   GUICtrlSetState ( $Button4, $GUI_ENABLE )
   GUICtrlSetState ( $Button3, $GUI_DISABLE )
   ConsoleWrite("Demarre" & @CRLF)
   If $Scanner = 0 Then
      $Scanner = 1
      EndIf
EndFunc



Func VerifierToutClick ()
    If $Scanner = 0 Then
       Return
    Else
       If GuiCtrlRead($adresse1) <> "" Then
         Estcequeleserveurrepond ($Verifier1, $adresse1, $heure1, $priorite1)
       EndIf
    EndIf
Donc voici le bout de code qui nous interesse :
(Pour vous expliquer un peu)
StopClick et DemarrageClick sont les boutons qui permettent de démarrer les pings ou de stopper
Dans le fonction VerifierToutClick je n'ai selectionné que le bout de code qui permet d'interroger le premier serveur ( les 49 autres suivent )

Il y a 50 serveurs, à chaque ping envoyé et retour de l'état d'un serveur, cela s'incrémente de 1 et lorsque $LigneEnCours = 51 ça retourne à 1, cela permet de faire tester les serveurs en continu
Le problème que je rencontre est le suivant :

Je veux pouvoir faire une pause une fois que tout les serveurs ont été testés ( d'une minute ou plus )
Ce que j'ai réussi à faire avec Sleep() une fois que $LigneEnCours = 51

Cependant lorsque je dois tester moins de serveur ( 1 seul serveur par exemple ) je veux que le sleep s'active quand même ( pour éviter de continuellement interroger un unique serveur en continu ), mais je n'y arrive pas
Et je ne sais pas comment faire.
Si vous avez des questions, posez-les car c'est un peu compliqué pour moi d'être concis et clair sans faire un pavé énorme.

Merci
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1945
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Fonction Sleep qui ne marche pas ?

#2

Message par TommyDDR »

De ce que vous nous montrez, le sleep se lance.
Comme l'indique la documentation (La touche F1 est votre amie !)
sleep.png
sleep.png (4.35 Kio) Vu 197 fois
sleep.png
sleep.png (4.35 Kio) Vu 197 fois
Sleep(100) = attendre 100 millisecondes (ce qui est très court), c'est peut être là votre problème, vous vouliez peut être 100 secondes :
Sleep(100000)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 48
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Fonction Sleep qui ne marche pas ?

#3

Message par Nine »

Je crois que c'est ton approche qui est principalement le problème. Au lieu de nommer tes serveurs individuellement ($adresse1, $adresse2, etc.), tu devrais mettre tous tes contrôles dans un vecteur (Array). Grâce à une boucle For...Next, tu vas pouvoir vérifier tous tes serveurs en quelques lignes seulement donc réduire considérablement la grandeur de ton script. En même temps, tu vas pouvoir plus facilement déterminer combien il y a de serveurs à pinger. Même la création de tes 50 contrôles de serveurs devrait être faite dans une boucle For...Next.

C'est difficile de proposer une solution exacte lorsque l'on voit qu'une toute petite partie d'un script.
Répondre