Page 1 sur 1

Fonction Sleep qui ne marche pas ?

Posté : ven. 18 déc. 2020 11:48
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

Re: Fonction Sleep qui ne marche pas ?

Posté : ven. 18 déc. 2020 15:39
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 1513 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)

Re: Fonction Sleep qui ne marche pas ?

Posté : ven. 18 déc. 2020 15:42
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.