; ; Automatizovane mereni v HOLMImpulse ; ; Marcel Batik ; Verze 1.0.1; 10/2012 ; #include _Main() func _Main() ;============================================================== ; Zakladni nastaveni a volitelne parametry local $APP_TITLE = "HOLMImpulse v1.4.2.0" ; Titulek okna HOLMImpulse local $OPT_TITLE = "Measurement Options" ; Titulek okna astaveni slotu local $EXP_TITLE = "Export response to file" ; Titulek okna exportu dat local $COVR_TITLE = "Confirm overwrite" local $DEFAULT_DUT_LABEL = "TEST" ; Prednasteveny nazev D.U.T. local $DEFAULT_LIST = "0/30/60" ; Prednastaveny seznam uhlu [deg] local $DEFAULT_GATE_FROM = -30 ; Prednastaveny zacatek okna [samples] local $DEFAULT_GATE_TO = 400 ; Prednastaveny konec okna [samples] local $DEFAULT_PAUSE = 8 ; Prednastavena pauza mezi merenimi [s] local $DEFAULT_EXPORT_PATH = "" ; Prednastavena cesta exportu dat local $DEFAULT_FR_EXT = ".txt" ; Pripona pro exportovane soubory ;============================================================== local $GUIWidth = 355, $GUIHeight = 212 local $msg local $N_MEAS = 0 dim $angles[64] GUICreate("HOLMImpulse AutoMeasure 1.0.1", $GUIWidth, $GUIHeight) GUICtrlCreateLabel("D.U.T. label:", 10, 12) $ctrl_dut = GUICtrlCreateInput($DEFAULT_DUT_LABEL, 120, 10, 130, 22) GUICtrlCreateLabel("Angle list [deg]:", 10, 42) $ctrl_angles = GUICtrlCreateInput($DEFAULT_LIST, 120, 40, 220, 22) $ctrl_gate = GUICtrlCreateCheckbox("Gating [samples]:", 10, 72) $ctrl_gate0 = GUICtrlCreateInput($DEFAULT_GATE_FROM, 120, 70, 60, 22) $ctrl_gate1 = GUICtrlCreateInput($DEFAULT_GATE_TO, 190, 70, 60, 22) GUICtrlCreateLabel("Pause [s]:", 10, 112) $ctrl_pause = GUICtrlCreateInput($DEFAULT_PAUSE, 120, 110, 60, 22) $Meas_Btn = GUICtrlCreateButton("Measure!", 260, 108, 80, 25) GUICtrlCreateLabel("Export folder:", 10, 152) $ctrl_export_path = GUICtrlCreateInput($DEFAULT_EXPORT_PATH, 120, 150, 130, 22) $Export_Btn = GUICtrlCreateButton("Export", 260, 148, 80, 25) global $ctrl_info = GUICtrlCreateLabel("", 10, 190, 200, 22) GUISetState(@SW_SHOW) while 1 $msg = GUIGetMsg() select case $msg = $GUI_EVENT_CLOSE GUIDelete() exit case $msg = $Meas_Btn ; ; Spusteni mereni ; $dut_label = GUICtrlRead($ctrl_dut) $sleep_sec = GUICtrlRead($ctrl_pause) $angles = StringSplit(GUICtrlRead($ctrl_angles), "/", 2) $N_MEAS = UBound($angles) $gating = GUICtrlRead($ctrl_gate) $gate0 = GUICtrlRead($ctrl_gate0) $gate1 = GUICtrlRead($ctrl_gate1) GUICtrlSetState($Meas_Btn, $GUI_DISABLE) WinActivate($APP_TITLE) $currentTab = ControlCommand($APP_TITLE, "", "[NAME:mainTabControl]", "CurrentTab") if $currentTab = 3 then ; "Measurements" local $N = 0 for $a in $angles ; Pauza mezi merenimi do_pause($sleep_sec) if $N > 0 then ; Prechod na dalsi slot ControlFocus($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]") ControlSend($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]", "{DOWN}") endif ; Spustit vlastni mereni -> kliknout na "Measure" info("Performing measurement...") ControlClick($APP_TITLE, "", "[NAME:measureButton;INSTANCE:3]") ; Pockat, az mereni probehne... WinWait("A - Out") sleep(4000) while WinExists("A - Out") sleep(1000) wend sleep(100) ;sleep(5000) ;WinWaitClose("A - Out") ;sleep(200) ; Pojmenovat slot $slot_name = $dut_label & " " & $a & "deg" ControlSetText($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]", $slot_name) ControlFocus($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]") ControlSend($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]", "{ENTER}") ; Nastavit gating if $gating = $GUI_CHECKED then info("Setting gating...") ; Otevrit okno "Options" ControlClick($APP_TITLE, "", "[NAME:optionsButton;INSTANCE:3]") WinWait($OPT_TITLE) ; Zvolit time-window ControlClick($OPT_TITLE, "", "[NAME:timeWindowRadioButton]") sleep(500) ; Najet na editacni pole zacatku okna ControlFocus($OPT_TITLE, "", "[NAME:timeWindowAutoButton]") ControlSend($OPT_TITLE, "", "[NAME:timeWindowAutoButton]", "{TAB}") ; Nastavit zacatek a konec okna ControlSetText($OPT_TITLE, "", ControlGetFocus($OPT_TITLE), $gate0) Send("{TAB}") ControlSetText($OPT_TITLE, "", ControlGetFocus($OPT_TITLE), $gate1) Send("{ENTER}") ; Zavrit okno "Options" ControlClick($OPT_TITLE, "", "[NAME:closeButton]") endif $N += 1 next info("Measurement done.") GUICtrlSetState($Meas_Btn, $GUI_ENABLE) else MsgBox(64, "Error", "Please switch to the 'Measurements' tab in HOLMImpulse window. Then try again.") GUICtrlSetState($Meas_Btn, $GUI_ENABLE) endif case $msg = $Export_Btn ; ; Export dat na disk ; $path = GUICtrlRead($ctrl_export_path) if ($path <> "") and (StringRight($path, 1) <> "\") then $path &= "\" endif ; Pruchod pres vsechny dalsi sloty, az do prvniho nalezeneho "Empty" $label = ControlGetText($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]") while not (StringLeft($label, 6) == "Empty ") ControlClick($APP_TITLE, "", "[NAME:exportButton;INSTANCE:3]") WinWait($EXP_TITLE) ControlSetText($EXP_TITLE, "", "[NAME:filenameTextBox]", $path & $label & $DEFAULT_FR_EXT) sleep(200) ControlClick($EXP_TITLE, "", "[NAME:exportFreqButton]") WinWait($COVR_TITLE, "", 1) if WinExists($COVR_TITLE) then ControlClick($COVR_TITLE, "", "[CLASS:Button]", "left") endif sleep(500) while WinExists($EXP_TITLE) sleep(200) wend ; Prechod na dalsi slot ControlFocus($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]") ControlSend($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]", "{DOWN}") $label = ControlGetText($APP_TITLE, "", "[NAME:listComboBox;INSTANCE:3]") wend endselect wend endfunc func info($text) GUICtrlSetData($ctrl_info, $text) endfunc func do_pause($sec) while $sec > 0 info("Paused... (" & $sec & ")") sleep(1000) $sec -= 1 wend endfunc