from org.csstudio.opibuilder.scriptUtil import PVUtil from org.csstudio.opibuilder.scriptUtil import WidgetUtil from org.csstudio.opibuilder.scriptUtil import ConsoleUtil from org.csstudio.utility.pv import PVFactory import re import os import time import sys import os.path def connectPV(pvName): pvN = PVFactory.createPV(pvName) pvN.start() cnt = 0 status1 = pvN.isConnected() while (( not (status1)) and (cnt<5) ): cnt += 1 time.sleep(0.1) status1 = pvN.isConnected() if (cnt<5): val = PVUtil.getString(pvN) else: ConsoleUtil.writeInfo( "epics PV " + pvName + " is NOT connected!") pvN.stop() return val scanName = widget.getParent().getMacroValue("P") pvFileSystem = scanName + "saveData_fileSystem" pvSubDir = scanName + "saveData_subDir" pvBaseName = scanName + "saveData_baseName" pvFullPathName= scanName + "saveData_fullPathName" pvMdaFileName = scanName + "saveData_fileName" #--- connect to the saveData PVs fileSystem = connectPV(pvFileSystem) # ConsoleUtil.writeInfo( "FileSystem = " + str(fileSystem)) subDir = connectPV(pvSubDir) # ConsoleUtil.writeInfo( "SubDir = " + str(subDir)) baseName = connectPV(pvBaseName) # ConsoleUtil.writeInfo( "BaseName = " + str(baseName)) fullPathName = connectPV(pvFullPathName) # ConsoleUtil.writeInfo( "FullPathName = " + str(fullPathName)) mdaFileName = connectPV(pvMdaFileName) # ConsoleUtil.writeInfo( "mdaFileName = " + str(mdaFileName)) mdaDirName = fileSystem + "/" + subDir + "/" root_osname = os.environ['EPICS_OSNAME'] root_version = os.environ['EPICS_ROOT_VERSION'] ConsoleUtil.writeInfo( "ROOT OSNAME is " + root_osname) envCmd = 'source /gapps/root/%s/%s/bin/thisroot.csh /gapps/root/%s/%s ;' % (root_osname, root_version, root_osname, root_version) analysisCmd = 'analyzeScanTAGM.py -d ' + mdaDirName + ' -f ' + mdaFileName + " -s " ' ; ' xtermCmd = "xterm -geometry 80x10 -e '" + envCmd + " printenv; sleep 1; " + analysisCmd + " ' &> /dev/null &" cmd = xtermCmd ConsoleUtil.writeInfo( "Will issue command " + cmd ) status = os.system(cmd)