Problème de boucle
Posté : lun. 13 mai 2019 12:07
Bonjour !
J'ai construit ce code à partir de morceaux récupérés ça et là car je démarre dans l’utilisation d'AutoIt et que mes expériences de programmation sont assez faibles.
Le but de ce code est d'automatiser une tâche de sauvegarde.
Nous utilisons un logiciel lié à un instrument de mesure de particules dans l'air. Les données sont enregistrées en permanence sur un serveur qui se révèle assez peu pratique à utiliser.
CE que je souhaite faire c'est utiliser le logiciel pour faire une sauvegarde des données toutes les heures. ainsi je peux récupérer ces données et les exploiter par ailleurs.
J'ai donc écrit une fonction qui lance le logiciel et procède aux manip permettant la sauvegarde des données.
J'ai écrit le code permettant d'afficher une fenêtre avec un bouton lançant la boucle d'enregistrement et qui comporte une fenêtre de texte qui affiche le nom du dernier fichier enregistré.
Le problème que je rencontre c'est que la boucle ne marche pas.
Quand je remplace la fonction que j'ai écrite par une autre plus simple, j'arrive à obtenir la répétion de celle ci. Mais avec ma fonction, ça ne marche pas.
J'en conclu qu'il y a une erreur dans ce que j'ai écrit. Ce constat est renforcé par le fait qu'une fois lancée, la boucle ne me permet plus de fermer la fenêtre crée via le bouton de fermeture X.
Si vous pouvez m'aider à débloquer la situation, ce serait formidable.
J'ai construit ce code à partir de morceaux récupérés ça et là car je démarre dans l’utilisation d'AutoIt et que mes expériences de programmation sont assez faibles.
Le but de ce code est d'automatiser une tâche de sauvegarde.
Nous utilisons un logiciel lié à un instrument de mesure de particules dans l'air. Les données sont enregistrées en permanence sur un serveur qui se révèle assez peu pratique à utiliser.
CE que je souhaite faire c'est utiliser le logiciel pour faire une sauvegarde des données toutes les heures. ainsi je peux récupérer ces données et les exploiter par ailleurs.
J'ai donc écrit une fonction qui lance le logiciel et procède aux manip permettant la sauvegarde des données.
J'ai écrit le code permettant d'afficher une fenêtre avec un bouton lançant la boucle d'enregistrement et qui comporte une fenêtre de texte qui affiche le nom du dernier fichier enregistré.
Le problème que je rencontre c'est que la boucle ne marche pas.
Quand je remplace la fonction que j'ai écrite par une autre plus simple, j'arrive à obtenir la répétion de celle ci. Mais avec ma fonction, ça ne marche pas.
J'en conclu qu'il y a une erreur dans ce que j'ai écrit. Ce constat est renforcé par le fait qu'une fois lancée, la boucle ne me permet plus de fermer la fenêtre crée via le bouton de fermeture X.
Si vous pouvez m'aider à débloquer la situation, ce serait formidable.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_Language=1036
#AutoIt3Wrapper_Run_AU3Check=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version : 3.3.14.5
Auteur: jezekiel
Fonction du Script :
Acquisition de données LOAC
#ce ----------------------------------------------------------------------------
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Acquisition LOAC", 615, 325, 408, 308)
Global $Input1 = GUICtrlCreateInput("", 112, 200, 409, 100, $ES_MULTILINE )
Global $Bouton1 = GUICtrlCreateButton("Acquisition", 344, 64, 201, 97)
Global $Pic1 = GUICtrlCreatePic("C:\Users\pompom\Desktop\Loac\IMG_3184.JPG", 15, 15, 239, 180) ;;chemin du fichier image
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func LOAC ()
Run("C:\Eoscan\LOAC.exe") ;;Chemin du logiciel LOAC
WinWaitActive("LOAC")
While 1
send("^o") ;ouvrir une nouvelle mesure
WinWaitActive("Select a data")
ControlClick("Select a data", "Other ...", "[CLASS:TButton;INSTANCE:1]")
WinWaitActive("[Select a data;class:#32770]")
$emplacement_dossier = "C:\GPSonde\Data\loac" ;; le chemin complet du dossier de sauvegarde LOAC
$search = FileFindFirstFile($emplacement_dossier &"\*.sick")
If $search = -1 Then
MsgBox(0, "Erreur", "Pas de fichier trouvé")
Exit
EndIf
While 1
If Winexists ("Initial Information") then
send("{space}")
Else
$file = FileFindNextFile($search)
If @error Then ExitLoop
$sauve = $file
send($file & "{enter}")
sleep(10)
WEnd
If Winexists ("Initial Information") then
send("{space}")
Else
EndIf
FileClose($search)
WinWaitActive("LOAC - [Read File]")
Send("{altdown}")
Send("de")
Send("{altup}")
WinWaitActive("Select Directory")
send("{space}")
send("{enter}")
Winclose ("LOAC - [Read File]")
Send("{space}")
WinWaitActive("Acquisition LOAC")
ControlClick("Acquisition LOAC", "" ,3)
send(@Year & "{space}" & @MON & "{space}" & @MDAY & "{space}" & @HOUR & ":" & @MIN & "->" & $sauve & @CRLF )
sleep(10)
WEnd
EndFunc
While Winexists("Acquisition LOAC")
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Bouton1
;While 1
; Switch $nMsg
; Case $GUI_EVENT_CLOSE
; EndSwitch
LOAC ()
sleep (3600000)
;WEnd
EndSwitch
sleep(10)
WEnd
#AutoIt3Wrapper_Res_Language=1036
#AutoIt3Wrapper_Run_AU3Check=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version : 3.3.14.5
Auteur: jezekiel
Fonction du Script :
Acquisition de données LOAC
#ce ----------------------------------------------------------------------------
#pragma compile(Icon, C:\Program Files (x86)\AutoIt3\Icons\au3.ico)
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Acquisition LOAC", 615, 325, 408, 308)
Global $Input1 = GUICtrlCreateInput("", 112, 200, 409, 100, $ES_MULTILINE )
Global $Bouton1 = GUICtrlCreateButton("Acquisition", 344, 64, 201, 97)
Global $Pic1 = GUICtrlCreatePic("C:\Users\pompom\Desktop\Loac\IMG_3184.JPG", 15, 15, 239, 180) ;;chemin du fichier image
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func LOAC ()
Run("C:\Eoscan\LOAC.exe") ;;Chemin du logiciel LOAC
WinWaitActive("LOAC")
While 1
send("^o") ;ouvrir une nouvelle mesure
WinWaitActive("Select a data")
ControlClick("Select a data", "Other ...", "[CLASS:TButton;INSTANCE:1]")
WinWaitActive("[Select a data;class:#32770]")
$emplacement_dossier = "C:\GPSonde\Data\loac" ;; le chemin complet du dossier de sauvegarde LOAC
$search = FileFindFirstFile($emplacement_dossier &"\*.sick")
If $search = -1 Then
MsgBox(0, "Erreur", "Pas de fichier trouvé")
Exit
EndIf
While 1
If Winexists ("Initial Information") then
send("{space}")
Else
$file = FileFindNextFile($search)
If @error Then ExitLoop
$sauve = $file
send($file & "{enter}")
sleep(10)
WEnd
If Winexists ("Initial Information") then
send("{space}")
Else
EndIf
FileClose($search)
WinWaitActive("LOAC - [Read File]")
Send("{altdown}")
Send("de")
Send("{altup}")
WinWaitActive("Select Directory")
send("{space}")
send("{enter}")
Winclose ("LOAC - [Read File]")
Send("{space}")
WinWaitActive("Acquisition LOAC")
ControlClick("Acquisition LOAC", "" ,3)
send(@Year & "{space}" & @MON & "{space}" & @MDAY & "{space}" & @HOUR & ":" & @MIN & "->" & $sauve & @CRLF )
sleep(10)
WEnd
EndFunc
While Winexists("Acquisition LOAC")
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Bouton1
;While 1
; Switch $nMsg
; Case $GUI_EVENT_CLOSE
; EndSwitch
LOAC ()
sleep (3600000)
;WEnd
EndSwitch
sleep(10)
WEnd