+++ /dev/null
-;\r
-; AutoIt Version: 3.0\r
-; Language: English\r
-; Platform: Win9x/NT\r
-; Author: Benny Linnik (b.linnik@gsi.de)\r
-;\r
-; Script Function:\r
-; Reads MAPS running data from an Excel file and\r
-\r
-\r
-; set external parameters\r
-#include <String.au3>\r
-#include <GUIConstants.au3>\r
-#include <WindowsConstants.au3>\r
-#include <StaticConstants.au3>\r
-#Include <GuiEdit.au3>\r
-#include <Date.au3>\r
-#include "Mimosa32.au3"\r
-#include "Mimosa32Ter.au3"\r
-#include "Mimosa34.au3"\r
-\r
-$programversion = "0.7"\r
-$FileName = IniRead ( "config.ini", "experimental setup", "ExcelPath", "H:\dennis doering\Arbeitsprogramme\Mimosa34\LaborbuchMi34.xls" ) ; read path to Excel file\r
-$systemtemp = IniRead ( "config.ini", "experimental setup", "SystemTemperature", "20" ) ; current temperatur of the system\r
-$chipversion = IniRead ( "config.ini", "experimental setup", "ChipVersion", "Mi34" ) ; current chip generation in the system\r
-$chipinstalled = IniRead ( "config.ini", "experimental setup", "ChipInstalled", "5" ) ; chip number currently mounted into the system\r
-$radSource = IniRead ( "config.ini", "experimental setup", "RadSource", "none" ) ; current radioactive source of the system\r
-\r
-$excelLineBegin = "46" ; Change this to the range of cells you want to be processed\r
-$excelLineEnd = "500"\r
-Global $vref = 650 ; Initial vref, will be adjusted during runtime\r
-\r
-;create virtual functions\r
-Func GotoMiTab()\r
- Call ( $chipversion & "_GotoMiTab" )\r
-EndFunc\r
-\r
-Func GetVref()\r
- Return Call ( $chipversion & "_GetVref" )\r
-EndFunc\r
-\r
-Func SetVref($vref)\r
- Call ( $chipversion & "_SetVref", $vref )\r
-EndFunc\r
-\r
-Func SetMiParameter($matrix, $vref)\r
- Call ( $chipversion & "_SetMiParameter", $matrix, $vref )\r
-EndFunc\r
-\r
-Func SelectBoard()\r
- Call ( $chipversion & "_SelectBoard" )\r
-EndFunc\r
-\r
-$CellRange = "A" & $excelLineBegin &":N"& $excelLineEnd\r
-\r
-; Prompt the user to run the script - use a Yes/No prompt (4 - see help file)\r
-Local $answer = MsgBox(4, "Run script?", "Preparing to do all runs in range " & $CellRange & @CRLF & _\r
- "of file " & $FileName & " with " & @CRLF & _\r
- "Temperatur: " & $systemtemp & " °C" & @CRLF & _\r
- "Radioactive source: " & $radSource & @CRLF & _\r
- "Chip: " & $chipversion & " (" & $chipinstalled & ")"& @CRLF & _\r
- "If you run this script, daq.exe will be closed and the current run aborted, proceed?")\r
-\r
-\r
-; Check the user's answer to the prompt (see the help file for MsgBox return values)\r
-; If "No" was clicked (7) then exit the script\r
-If $answer = 7 Then\r
- Exit\r
-EndIf\r
-\r
-If Not FileExists($FileName) Then ; Just a check to be sure..\r
- MsgBox(16, "Excel Data Test", "Error: Can't find file " & $FileName)\r
- Exit\r
-EndIf\r
-\r
-$oExcelDoc = ObjGet($FileName) ; Get an Excel Object from an existing filename\r
-\r
-If (Not @error) And IsObj($oExcelDoc) Then ; Check again if everything went well\r
- ; NOTE: $oExcelDoc is a "Workbook Object", not Excel itself!\r
- $oDocument = $oExcelDoc.Worksheets(1) ; We use the 'Default' worksheet\r
- $aArray = $oDocument.range($CellRange).value ; Retrieve the cell values from given range\r
- ;$oExcelDoc.Close ; Close the Excel document\r
- ; The data should now be in the 2-dimensional array: $aArray\r
-\r
- If IsArray($aArray) And UBound($aArray, 0) > 0 Then ; Check if we retrieved any data\r
- ;Msgbox (0,"Excel Data Test","Debugging information for retrieved cells:" & @CRLF & _\r
- ; "Number of dimensions: " & UBound($aArray,0) & @CRLF & _\r
- ; "Size of first dimension: " & Ubound($aArray,1) & @CRLF & _\r
- ; "Size of second dimension: " & Ubound($aArray,2))\r
- ; "Size of second dimension: " & Ubound($aArray,2))\r
-\r
- ; The next lines are just for debugging purposes, it puts all cell values into\r
- ; a string to display in a MsgBox.\r
- ; Note: you can't use a FOR..IN loop for a multi-dimensional array!\r
-;~ ; debugging read data\r
-;~ $string=""\r
-;~ for $x=0 to ubound($aArray,1)-1\r
-;~ for $y=0 to ubound ($aArray,2)-1\r
-;~ $string=$string & "(" & $x & "," & $y & ")=" & $aArray[$x][$y] & @CRLF\r
-;~ Next\r
-;~ Next\r
-;~ Msgbox(0,"Excel Data Test","Debug information: Read Cell contents: " & @CRLF & $string)\r
-\r
- $totallexcelines=UBound($aArray, 2)\r
- $totalruns = 0\r
- For $run = 0 To UBound($aArray, 2) - 1\r
- If ($aArray[4][$run] == $systemtemp And $aArray[6][$run] == $chipinstalled And "Mi"&$aArray[2][$run] == $chipversion And $aArray[10][$run] == $radSource And $aArray[0][$run] == "") Then\r
- $totalruns = $totalruns + 1\r
- EndIf\r
- Next\r
- Local $answer = MsgBox(4, "Total runs", "Number of suitable runs found at the moment: " & $totalruns )\r
- If $answer = 7 Then\r
- Exit\r
- EndIf\r
-\r
- If ProcessExists("daq.exe") = True Then\r
- ProcessClose("daq.exe")\r
- ProcessWaitClose("daq.exe")\r
- EndIf\r
-\r
- If ProcessExists("i2c_ms_gui.exe") = True Then\r
- ProcessClose("i2c_ms_gui.exe")\r
- ProcessWaitClose("i2c_ms_gui.exe")\r
- EndIf\r
-\r
- Run("C:\ccmos_daq\v3.5.10\daq_v3.5.10.bat", "C:\ccmos_daq\v3.5.10\")\r
- WinWait("Debug")\r
- ControlClick("Debug", "", "[TEXT:Messages Clear]")\r
- Sleep(100)\r
- ControlClick("Debug", "", "[TEXT:Board Testing]")\r
- Sleep(2000)\r
- $i = 0\r
- Do\r
- $text = WinGetText("[CLASS:TDebugFrm]", "")\r
- $texthex = _StringToHex($text)\r
- If ($texthex == "4D657373616765730A5072696E7420426F6172647320526567730A0D0A3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0D0A426F6172642049643D302074657374207374617274696E67202E2E2E0D0A3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0D0A0D0A53746F70206163717569736974696F6E202E2E2E0D0A41445220434F554E54455220412074657374696E67202E2E2E0D0A41445220434F554E54455220412030204572726F72730D0A52414D20412074657374696E67202E2E2E0D0A52414D20412030204572726F72730D0A52414D20422074657374696E67202E2E2E0D0A52414D20422030204572726F72730D0A52414D20432074657374696E67202E2E2E0D0A52414D20432030204572726F72730D0A52414D20442074657374696E67202E2E2E0D0A52414D20442030204572726F72730D0A0D0A3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0D0A426F6172642049643D312074657374207374617274696E67202E2E2E0D0A3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0D0A0D0A53746F70206163717569736974696F6E202E2E2E0D0A41445220434F554E54455220412074657374696E67202E2E2E0D0A41445220434F554E54455220412030204572726F72730D0A52414D20412074657374696E67202E2E2E0D0A52414D20412030204572726F72730D0A52414D20422074657374696E67202E2E2E0D0A52414D20422030204572726F72730D0A52414D20432074657374696E67202E2E2E0D0A52414D20432030204572726F72730D0A52414D20442074657374696E67202E2E2E0D0A52414D20442030204572726F72730D0A0A555342322042616E647769647468204D65617375726D656E740A426F6172642054657374696E670A536F66747761726520496E697469616C697A6174696F6E0A4D6573736167657320436C6561720A") Then\r
- EndIf\r
- Sleep(500)\r
- $i = $i + 1\r
- If ($i > 20) Then\r
- MsgBox(16, "Message", "USB Boards could be not OK! Please check the Debug output.")\r
- Exit\r
- EndIf\r
- Until 1\r
- If StringRegExp ( $text, "[1-9]+ Errors" ) Then ; for some reasons the previous check sometimes doesn't work.\r
- MsgBox(16, "Message", "USB Boards could be not OK! Please check the Debug output.")\r
- Exit\r
- EndIf\r
-\r
-\r
- WinClose("Debug")\r
- WinWaitClose("Debug", 1000)\r
- $aArray = 0\r
- $totalrealruns=0\r
-\r
- For $run = 0 To $totallexcelines-1\r
-\r
- $currentrange="A"& $excelLineBegin+$run & ":N" & $excelLineBegin+$run\r
- $oExcelDoc = ObjGet($FileName) ; if doc was closed and object destroyed -> reopen it. A possibility to check if object exists would come handy here....\r
- $oDocument = $oExcelDoc.Worksheets(1) ; We use the 'Default' worksheet\r
- $currentline=$oDocument.range($currentrange).value\r
- If ($currentline[4][0] == $systemtemp And $currentline[6][0] == $chipinstalled And "Mi"&$currentline[2][0] == $chipversion And $currentline[10][0] == $radSource And $currentline[0][0] == "") Then\r
- $clock = $currentline[11][0] ; save needed clock\r
- If $clock == "" Then\r
- $clock = "100"\r
- $currentline[11][0] = "100"\r
- EndIf\r
- $runnum = $currentline[3][0] ; save runnumber\r
- $matrix = $currentline[9][0] ; save matrix\r
- $eventnum = $currentline[5][0] ; save number of events to save\r
- If $eventnum == "" Then\r
- $eventnum = 100000\r
- $currentline[5][0] = "100000"\r
- EndIf\r
-\r
- CheckWindowExist()\r
- SelectBoard()\r
- CheckIfBoardOK()\r
- GotoDebugTab()\r
-\r
- If ($clock == "100") Then\r
- ControlCommand($chipsoftware[0], "", "[TEXT:Intern]", "Check")\r
- ;If (Not ControlCommand("I2C control Software for Mimosa32", "", "[TEXT:Intern]", "IsChecked")) Then\r
- ;Msgbox (16,"Message","Could not set clock to intern")\r
- ;EndIf\r
- Else\r
- ShellExecuteWait ("C:\Programme\PuTTY\plink.exe", "-ssh cerberus /home/maps/bin/vxi11_cmd 192.168.10.152 'SOURce1:FREQuency:Fixed " & $clock & "Mhz'", "", "", @SW_HIDE)\r
- ShellExecuteWait ("C:\Programme\PuTTY\plink.exe", "-ssh cerberus /home/maps/bin/vxi11_cmd 192.168.10.152 'SOURce1:VOLTage:HIGH 3.3'", "", "", @SW_HIDE)\r
- ShellExecuteWait ("C:\Programme\PuTTY\plink.exe", "-ssh cerberus /home/maps/bin/vxi11_cmd 192.168.10.152 'SOURce1:VOLTage:LOW 0'", "", "", @SW_HIDE)\r
- ShellExecuteWait ("C:\Programme\PuTTY\plink.exe", "-ssh cerberus /home/maps/bin/vxi11_cmd 192.168.10.152 'OUTPut1:STATe ON'", "", "", @SW_HIDE)\r
- Sleep(500)\r
- ControlCommand("I2C control Software for Mimosa32", "", "[TEXT:Extern]", "Check")\r
- ;If (Not ControlCommand("I2C control Software for Mimosa32", "", "[TEXT:Extern]", "IsChecked")) Then\r
- ;Msgbox (16,"Message","Could not set clock to extern")\r
- ;EndIf\r
- EndIf\r
-\r
- GotoMiTab()\r
- SetMiParameter($matrix, $vref)\r
- ProgramMi()\r
-\r
- If WinExists("CMOS USB DAQ V3.5.10") = True Then\r
- ;WinActivate("CMOS USB DAQ V3.5.10")\r
- Else\r
- Run("C:\ccmos_daq\v3.5.10\daq_v3.5.10.bat", "C:\ccmos_daq\v3.5.10\")\r
- EndIf\r
- WinWait("CMOS USB DAQ V3.5.10")\r
-\r
- For $i = 0 To 20\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabLeft")\r
- Next\r
- $i = 0\r
- While (ControlGetText("CMOS USB DAQ V3.5.10", "", "TTabSheet1") <> "Run Parameters")\r
- If ($i > 20) Then\r
- MsgBox(0, "Message", "CMOS USB DAQ V3.5.10 RUN tab not found in DAQ software!")\r
- Exit\r
- EndIf\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabRight")\r
- $i = $i + 1\r
- Sleep(100)\r
- WEnd\r
-\r
- ControlSetText("CMOS USB DAQ V3.5.10", "", "TEdit23", "")\r
- Sleep(100)\r
- ControlFocus("CMOS USB DAQ V3.5.10", "", "TEdit23")\r
- ;Send($runnum)\r
- ControlSend("CMOS USB DAQ V3.5.10", "", "TEdit23", $runnum)\r
-\r
- ControlSetText("CMOS USB DAQ V3.5.10", "", "TEdit22", "")\r
- Sleep(100)\r
- ControlFocus("CMOS USB DAQ V3.5.10", "", "TEdit22")\r
-;~ Send($eventnum)\r
- ControlSend("CMOS USB DAQ V3.5.10", "", "TEdit22", $eventnum)\r
- ControlFocus("CMOS USB DAQ V3.5.10", "", "TEdit23")\r
-\r
- Sleep(1000)\r
- $starttime = _NowCalc()\r
-\r
- ControlClick("CMOS USB DAQ V3.5.10", "", "[TEXT:Start Run;CLASS:TButton]")\r
- ;WinWaitActive("Avertissement") ;Force overwrite\r
- ;ControlClick("Avertissement", "", "TButton2")\r
-\r
- Sleep(500)\r
- If (WinExists("Avertissement")) Then\r
- MsgBox(16, "Message", "Stopping. Could overwrite data!")\r
- Exit\r
- EndIf\r
-\r
-\r
- $i = 0\r
- While (ControlGetText("CMOS USB DAQ V3.5.10", "", "TTabSheet1") <> "Local Monitoring")\r
- If ($i > 20) Then\r
- MsgBox(0, "Message", "CMOS USB DAQ V3.5.10 Local Monitoring tab not found in DAQ software!")\r
- Exit\r
- EndIf\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabRight")\r
- $i = $i + 1\r
- Sleep(100)\r
- WEnd\r
-\r
- Sleep(1000)\r
-\r
- $avg = ControlGetText("CMOS USB DAQ V3.5.10", "", "[TEXT:DispAvg;CLASS:TEdit]")\r
- For $i = 0 To 20\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabLeft")\r
- Next\r
- $i = 0\r
- While (ControlGetText("CMOS USB DAQ V3.5.10", "", "TTabSheet1") <> "Run Parameters")\r
- If ($i > 20) Then\r
- MsgBox(0, "Message", "CMOS USB DAQ V3.5.10 RUN tab not found in DAQ software!")\r
- Exit\r
- EndIf\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabRight")\r
- $i = $i + 1\r
- Sleep(100)\r
- WEnd\r
- $j = 0\r
- If ($avg > 2300 Or $avg < 1700) Then\r
- Do\r
- ControlClick("CMOS USB DAQ V3.5.10", "", "[TEXT:Stop Run;CLASS:TButton]")\r
- ;WinActivate("I2C control Software for Mimosa32")\r
- $vref = GetVref()\r
- ;$vref = ControlGetText("I2C control Software for Mimosa32", "", "TEdit11")\r
- $diff = $avg - 2000\r
- Select\r
- Case Abs($diff) > 600\r
- $vref = $vref + SGN($diff) * 100\r
- Case Else\r
- $vref = $vref +SGN($diff) * 50\r
- EndSelect\r
- If ($vref > 1000 Or $vref < 300) Then\r
- MsgBox(0, "Message", "Stopped, vref value needs to be too low (<300) or too high (>1000), please check manually!")\r
- Exit\r
- EndIf\r
-\r
- ;ControlSetText("I2C control Software for Mimosa32", "", "TEdit11", $vref)\r
- ;ControlClick("I2C control Software for Mimosa32", "", "[TEXT:Prog All Analog;CLASS:TButton]")\r
- SetVref($vref)\r
- ProgramMi()\r
- ;WinActivate("CMOS USB DAQ V3.5.10")\r
- WinWait("CMOS USB DAQ V3.5.10")\r
- Sleep(1000)\r
- ControlClick("CMOS USB DAQ V3.5.10", "", "[TEXT:Start Run;CLASS:TButton]")\r
- WinWait("Avertissement")\r
- ControlClick("Avertissement", "", "TButton2")\r
-\r
-\r
- $i = 0\r
- While (ControlGetText("CMOS USB DAQ V3.5.10", "", "TTabSheet1") <> "Local Monitoring")\r
- If ($i > 20) Then\r
- MsgBox(0, "Message", "CMOS USB DAQ V3.5.10 Local Monitoring tab not found in DAQ software!")\r
- Exit\r
- EndIf\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabRight")\r
- $i = $i + 1\r
- Sleep(100)\r
- WEnd\r
-\r
- Sleep(1000)\r
-\r
- $avg = ControlGetText("CMOS USB DAQ V3.5.10", "", "[TEXT:DispAvg;CLASS:TEdit]")\r
- For $i = 0 To 20\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabLeft")\r
- Next\r
- $i = 0\r
- While (ControlGetText("CMOS USB DAQ V3.5.10", "", "TTabSheet1") <> "Run Parameters")\r
- If ($i > 20) Then\r
- MsgBox(0, "Message", "CMOS USB DAQ V3.5.10 RUN tab not found in DAQ software!")\r
- Exit\r
- EndIf\r
- ControlCommand("CMOS USB DAQ V3.5.10", "", "TPageControl1", "TabRight")\r
- $i = $i + 1\r
- Sleep(100)\r
- WEnd\r
-\r
- $j = $j + 1\r
- If ($j > 7) Then\r
- ControlClick("CMOS USB DAQ V3.5.10", "", "[TEXT:Stop Run;CLASS:TButton]")\r
- MsgBox(0, "Message", "VRef could not be set properly")\r
- Exit\r
- EndIf\r
-\r
- Until ($avg < 2300 And $avg > 1700)\r
- EndIf\r
-\r
- While (ControlGetText("CMOS USB DAQ V3.5.10", "", "TEdit18") < $eventnum)\r
- Sleep(10000)\r
- ;If EnvGet('SESSIONNAME') <> "Console" Then\r
- ;ShowWarning()\r
- ;EndIf\r
- ;WinWait("CMOS USB DAQ V3.5.10")\r
- WEnd\r
- WinWait("CMOS USB DAQ V3.5.10")\r
- ControlClick("CMOS USB DAQ V3.5.10", "", "[TEXT:Stop Run;CLASS:TButton]")\r
- ;If ($clock <> "100") Then\r
- ; ShellExecuteWait("C:\Programme\PuTTY\plink.exe", "-ssh cerberus /home/maps/bin/vxi11_cmd 192.168.10.152 'OUTPut1:STATe Off'", "", "", @SW_HIDE)\r
- ;EndIf\r
-\r
- $currentline[0][0] = @MDAY & "." & @MON & "." & @YEAR\r
- $currentline[8][0] = $vref\r
- $calcmin = _DateDiff('s', $starttime, _NowCalc()) ; n for minites, s for seconds\r
- $currentline[13][0] = "Automated run, performed by V." & $programversion & " runtime in minutes: " & $calcmin\r
-\r
- $oExcelDoc = ObjGet($FileName) ; if doc was closed and object destroyed -> reopen it. A possibility to check if object exists would come handy here....\r
- $oDocument = $oExcelDoc.Worksheets(1) ; We use the 'Default' worksheet\r
- $oDocument.range($currentrange).value = $currentline\r
- $oExcelDoc.Windows(1).Visible = True ; Otherwise the worksheet window will be saved 'hidden'\r
- $oExcelDoc.Save ; Save the workbook\r
-\r
- $oExcelDoc.saved = 1\r
- $totalrealruns = $totalrealruns + 1\r
- EndIf\r
- Next\r
- ShellExecuteWait("C:\Programme\PuTTY\plink.exe", "-ssh cerberus /home/maps/bin/vxi11_cmd 192.168.10.152 'OUTPut1:STATe Off'", "", "", @SW_HIDE)\r
- MsgBox(0, "Sucess!", "All runs (" & $totalrealruns & ") ended without errors." & @CRLF & _\r
- "Please check the Excel sheet and the results for errors.")\r
-\r
- Else\r
- MsgBox(0, "Excel Data Test", "Error: Could not retrieve data from cell range: " & $CellRange)\r
- EndIf\r
-\r
-Else\r
- MsgBox(0, "Excel Data Test", "Error: Could not open " & $FileName & " as an Excel Object.")\r
-EndIf\r
-\r
-$oExcelDoc = 0\r
-\r
-\r
-Func SGN($i)\r
- Return ($i>0)-($i<0)\r
- EndFunc ;==>SGN\r
-\r
- Func CheckValues($vref, $matrix, $runnum, $eventnum, $clock)\r
- Return 0\r
-EndFunc\r