33# mdunning 1/7/16
44
55from epics import PV
6- from time import sleep
6+ from time import sleep , time
77import datetime ,os ,sys
88from threading import Thread
99
1414os .environ ['PVSCAN_PVPREFIX' ]= pvPrefix
1515
1616# Import pvScan module
17+ start = time ()
1718sys .path .append ('/afs/slac/g/testfac/extras/scripts/pvScan/prod/modules/' )
18- import pvscan
19+ import pvscan2
20+ end = time ()
21+ print 'Import: ' , end - start
1922
2023#--- Experiment ---------------------------------------
2124# Create Experiment object. Sets default filepath and gets experiment name from PV.
2225# First argument (optional) is an experiment name.
2326# Second arg (optional) is a filepath.
24- exp1 = pvscan .Experiment ()
25- sleep (2 )
27+ start = time ()
28+ exp1 = pvscan2 .Experiment ()
29+ end = time ()
30+ print 'Exp.: ' , end - start
31+ #sleep(2)
2632
2733#--- Scan PVs ------------------------------------------
2834# Create ScanPv objects, one for each PV you are scanning.
29- # First argument is the scan PV, leave blank to get from pvScan IOC.
35+ # First argument is the scan PV, leave as empty string to get from pvScan IOC.
3036# Second arg is an index which should be unique.
31- scanPv1 = pvscan .ScanPv ('' ,1 ) # (UED Solenoid)
37+ start = time ()
38+ scanPv1 = pvscan2 .ScanPv ('' ,1 )
39+ end = time ()
40+ print 'scanPv: ' , end - start
3241
3342#--- Shutters -----------------------------------------
3443# Create Shutter objects.
3544# First argument is shutter PV.
3645# Second arg (optional) is an RBV PV, for example an ADC channel.
37- shutter1 = pvscan .DummyShutter ('ESB:GP01:VAL01' ,'ESB:GP01:VAL01' ) # (UED Drive laser)
38- shutter2 = pvscan .DummyShutter ('ESB:GP01:VAL02' ,'ESB:GP01:VAL02' ) # (UED pump laser)
39- shutter3 = pvscan .DummyShutter ('ESB:GP01:VAL03' ,'ESB:GP01:VAL03' ) # (UED HeNe laser)
46+ # Third arg (optional) is a unique shutter number index, which allows enabling/disabling from PVs.
47+ shutter1 = pvscan2 .DummyShutter ('ESB:GP01:VAL01' ,'ESB:GP01:VAL01' ,1 ) # (UED Drive laser)
48+ shutter2 = pvscan2 .DummyShutter ('ESB:GP01:VAL02' ,'ESB:GP01:VAL02' ,2 ) # (UED pump laser)
49+ shutter3 = pvscan2 .DummyShutter ('ESB:GP01:VAL03' ,'ESB:GP01:VAL03' ,3 ) # (UED HeNe laser)
4050#
4151# Create ShutterGroup object to use common functions on all shutters.
4252# Argument is a list of shutter objects.
43- shutterGroup1 = pvscan .ShutterGroup ([shutter1 ,shutter2 ,shutter3 ])
44- #
53+ shutterGroup1 = pvscan2 .ShutterGroup ([shutter1 ,shutter2 ,shutter3 ])
54+
4555#--- Other PVs -----------------
4656# Define as PV objects. Example PV('MY:RANDOM:PV')
4757#lsrpwrPv=PV('ESB:A01:ADC1:AI:CH3')
5262#---- Data logging --------------------------
5363# List of PV() objects to be monitored during scan.
5464# Example: dataLogPvList=shutterGroup1.rbv + [scanPv1,lsrpwrPv,PV('MY:PV1')] + [PV('MY:PV2')]
55- dataLogPvList = shutterGroup1 .rbv + [scanPv1 ]
65+ dataLogPvList = shutterGroup1 .rbv + [scanPv1 . scanpv ]
5666#
5767# Create DataLogger object.
5868# Argument is the list of PVs to monitor.
59- dataLog1 = pvscan .DataLogger (dataLogPvList )
69+ start = time ()
70+ dataLog1 = pvscan2 .DataLogger (dataLogPvList )
71+ end = time ()
72+ print 'dataLog: ' , end - start
6073#-------------------------------------------------
6174
6275# --- Image grabbing --------------------------
6376# Override saved camera settings here. Leave empty list to use the default; otherwise add PVs with single quotes.
6477grabImagesSettingsPvList = []
6578#
6679# Create ImageGrabber object.
67- # First arg is the camera PV prefix.
80+ # First arg is the camera PV prefix, leave as empty string to get from pvScan IOC.
6881# Second arg (optional) is a list of camera setting PVs to be dumped to a file.
6982# Third arg (optional) is the image grabbing plugin.
70- grab1 = pvscan .ImageGrabber ('13PS10' )
83+ start = time ()
84+ grab1 = pvscan2 .ImageGrabber ('' )
85+ end = time ()
86+ print 'grab: ' , end - start
7187#-------------------------------------------------------------
7288
7389### Define scan routine #####################################################
7490
7591def scanRoutine ():
7692 "This is the scan routine"
77- pvscan .printMsg ('Starting' )
93+ pvscan2 .printMsg ('Starting' )
7894 sleep (0.5 ) # Collect some initial data first
79- # Open shutters
80- pvscan .printMsg ('Opening shutters' )
81- pvscan .shutterFunction (shutterGroup1 .open ,1 )
95+ # Open all shutters, but only if enabled from PV.
96+ if shutter1 .enabled :
97+ pvscan2 .printMsg ('Opening drive shutter' )
98+ shutter1 .open .put (1 )
99+ if shutter2 .enabled :
100+ pvscan2 .printMsg ('Opening pump shutter' )
101+ shutter2 .open .put (1 )
102+ if shutter3 .enabled :
103+ pvscan2 .printMsg ('Opening shutter 3' )
104+ shutter3 .open .put (1 )
82105 # Scan delay stage and grab images...
83- pvscan .ScanPv .pv1DScan (scanPv1 ,grab1 )
84- # Close shutters
85- pvscan .printMsg ('Closing shutters' )
86- pvscan .shutterFunction (shutterGroup1 .close ,0 )
87- pvscan .printMsg ('Done' )
106+ pvscan2 .pv1DScan (scanPv1 .scanpv ,grab1 )
107+ # Close all shutters, but only if enabled from PV.
108+ if shutter1 .enabled :
109+ pvscan2 .printMsg ('Closing drive shutter' )
110+ shutter1 .close .put (0 )
111+ if shutter2 .enabled :
112+ pvscan2 .printMsg ('Closing pump shutter' )
113+ shutter2 .close .put (0 )
114+ if shutter3 .enabled :
115+ pvscan2 .printMsg ('Closing shutter 3' )
116+ shutter3 .close .put (0 )
117+ pvscan2 .printMsg ('Done' )
88118
89119### Main program ##########################################################3
90120
@@ -99,16 +129,16 @@ def show_usage():
99129 show_usage ()
100130 sys .exit (1 )
101131 pid = os .getpid ()
102- pvscan .pidPV .put (pid )
103- pvscan .Tee (dataLog1 .logFilename , 'w' )
104- pvscan .dataFlag = 1 # Start logging data when thread starts
132+ pvscan2 .pidPV .put (pid )
133+ pvscan2 .Tee (dataLog1 .logFilename , 'w' )
134+ pvscan2 .dataFlag = 1 # Start logging data when thread starts
105135 if dataLog1 .dataEnable == 1 :
106136 datalogthread = Thread (target = dataLog1 .datalog ,args = ())
107137 datalogthread .start ()
108138 scanRoutine ()
109139 sleep (2 ) # Log data for a little longer
110140 finally :
111- pvscan .dataFlag = 0 # Stop logging data
141+ pvscan2 .dataFlag = 0 # Stop logging data
112142
113143
114144### End ##########################################################################
0 commit comments