Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions py4syn/epics/HexapodeClass.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ def __init__(self, mnemonic, pvName, axis):
super().__init__(mnemonic)
self.hexapode = Device(pvName + ':',('STATE#PANEL:SET','STATE#PANEL:GET',
'STATE#PANEL:BUTTON','MOVE#PARAM:CM',
'MOVE#PARAM:X', 'MOVE#PARAM:Y',
'MOVE#PARAM:Z', 'MOVE#PARAM:RX',
'MOVE#PARAM:RY', 'MOVE#PARAM:RZ' ,
':POSUSER:X',':POSUSER:Y',':POSUSER:Z',
':POSUSER:RX',':POSUSER:RY',':POSUSER:RZ',
'MOVE:X', 'MOVE:Y',
'MOVE:Z', 'MOVE:RX',
'MOVE:RY', 'MOVE:RZ' ,
':POSUSERSIRIUS:X',':POSUSERSIRIUS:Y',':POSUSERSIRIUS:Z',
':POSUSERSIRIUS:RX',':POSUSERSIRIUS:RY',':POSUSERSIRIUS:RZ',
':POSMACH:X',':POSMACH:Y',':POSMACH:Z',
':POSMACH:RX',':POSMACH:RY',':POSMACH:RZ',
'CFG#CS:1','CFG#CS:2', 'STATE#POSVALID?',
Expand All @@ -38,11 +38,11 @@ def __init__(self, mnemonic, pvName, axis):
self.axis_dic={"X":1,"Y":2,"Z":3,
"RX":4,"RY":5,"RZ":6}
self.axis_number=self.axis_dic[self.axis]
self.rbv=PV(pvName + ':'+'POSUSER:'+self.axis)
self.pos=self.hexapode.get('POSUSER:'+self.axis)
self.hexapode.add_callback('POSUSER:'+self.axis, self.onStatusChange)
self.rbv=PV(pvName + ':'+'POSUSERSIRIUS:'+self.axis)
self.pos=self.hexapode.get('POSUSERSIRIUS:'+self.axis)
self.hexapode.add_callback('POSUSERSIRIUS:'+self.axis, self.onStatusChange)

self.hexapode.put('POSUSER:'+self.axis +".SCAN",9)
self.hexapode.put('POSUSERSIRIUS:'+self.axis +".SCAN",9)

def onStatusChange(self,value,**kw):
"""
Expand All @@ -57,7 +57,7 @@ def getValue(self):
"""
Returns the current position from the axis
"""
return self.hexapode.get('POSUSER:'+self.axis)
return self.hexapode.get('POSUSERSIRIUS:'+self.axis)

def setValue(self, v):
"""
Expand All @@ -76,7 +76,7 @@ def setAbsolutePosition(self, pos, waitComplete=True):

self.pos=pos
self.hexapode.put('STATE#PANEL:SET',11)
self.hexapode.put('MOVE#PARAM:'+self.axis, self.pos)
self.hexapode.put('MOVE:'+self.axis, self.pos)
self.moving=True
self.wait()

Expand Down
3 changes: 2 additions & 1 deletion py4syn/epics/VortexXspress3Class.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,5 @@ def wait(self):
Blocks until the acquisition completes.
"""
while not self._done:
epics.poll(evt=1.e-5, iot=0.1)
epics.poll(evt=1.e-5, iot=0.1)
sleep(0.1)
76 changes: 52 additions & 24 deletions py4syn/utils/scan.py
Original file line number Diff line number Diff line change
Expand Up @@ -1151,10 +1151,23 @@ def __writeData(self, idx):
global FILENAME

if (FILE_WRITER is not None):

#for d in FILE_WRITER.getDevices():
#try:
# # TODO
# # Send to insert devide all the data
# #FILE_WRITER.insertDeviceData(d, SCAN_DATA[d][idx])
# FILE_WRITER.insertDeviceData(FILE_WRITER.getDevices(), SCAN_DATA, idx=idx)
#except:
# print("nada")
# pass
FILE_WRITER.insertDeviceData(FILE_WRITER.getDevices(), SCAN_DATA, index=idx)
#for s in FILE_WRITER.getSignals():
# try:
# #FILE_WRITER.insertSignalData(s, SCAN_DATA[s][idx])
# FILE_WRITER.insertSignalData(s, SCAN_DATA[s])
# except:
# pass
FILE_WRITER.insertSignalData(FILE_WRITER.getSignals(), SCAN_DATA, index=idx)

if PARTIAL_WRITE:
FILE_WRITER.writeData(partial=PARTIAL_WRITE, idx=idx)

Expand Down Expand Up @@ -1342,20 +1355,21 @@ def doScan(self):
# Arrays to store positions and indexes to be used as callback arguments
positions = []
indexes = []

print('')
self.t1 = time.time()
# Pre Scan Callback
if(self.__preScanCallback):
self.__preScanCallback(scan=self, pos=positions, idx=indexes)
self.__initialize()

self.t2 = time.time()
NumberOfParams = self.getNumberOfParams()
ScanParams = self.getScanParams()

for pointIdx in range(0, self.getNumberOfPoints()):
# Saves point index at SCAN_DATA

self.t3 = time.time()
SCAN_DATA['points'].append(pointIdx)

#self.t3 = time.time()
# Pre Point Callback
if(self.__prePointCallback):
self.__prePointCallback(scan=self, pos=positions, idx=indexes)
Expand All @@ -1364,7 +1378,7 @@ def doScan(self):
self.__check_pause_interrupt(pointIdx)
except ScanInterruptedException:
break

self.t4 = time.time()
self.__waitDelay(scan=self, pos=positions, idx=indexes)
positions = []
indexes = []
Expand All @@ -1373,51 +1387,65 @@ def doScan(self):
param = ScanParams[deviceIdx]
point = param.getPoints()[pointIdx]
device = param.getDevice()

t1=time.time()
device.setValue(point)
indexes.append(pointIdx)

self.t5 = time.time()
self.__waitDevices()

self.t6 = time.time()
#print(time.time()-t1)
for deviceIdx in range(0, NumberOfParams):
param = ScanParams[deviceIdx]
positions.append(param.getDevice().getValue())
# Saves device position at SCAN_DATA
SCAN_DATA[param.getDevice().getMnemonic()].append(param.getDevice().getValue())

self.t7 = time.time()
# Pre Operation Callback
if(self.__preOperationCallback):
self.__preOperationCallback(scan=self, pos=positions, idx=indexes)

self.t8 = time.time()
# Launch the counters
self.__launchCounters(scan=self, pos=positions, idx=indexes)

self.t9 = time.time()
# Operation Callback
if(self.__operationCallback):
self.__operationCallback(scan=self, pos=positions, idx=indexes)

self.t10 = time.time()
# Save data to SCAN_DATA
self.__saveCounterData(scan=self, pos=positions, idx=indexes)

self.t11 = time.time()
# Post Operation Callback
if(self.__postOperationCallback):
self.__postOperationCallback(scan=self, pos=positions, idx=indexes)

self.write_thread = threading.Thread(target=self.__writeData,args=[pointIdx])
self.write_thread.start()
#self.__writeData(idx=pointIdx)
self.t12 = time.time()
#self.write_thread = threading.Thread(target=self.__writeData,args=[pointIdx])
#self.write_thread.start()
self.__writeData(idx=pointIdx)

# Updates the screen and plotter
#self.print_thread = threading.Thread(target=self.__printAndPlot)
#self.print_thread.start()
self.__printAndPlot()

self.print_thread = threading.Thread(target=self.__printAndPlot)
self.print_thread.start()
#self.__printAndPlot()
self.t13 = time.time()
# Post Point Callback
if(self.__postPointCallback):
self.__postPointCallback(scan=self, pos=positions, idx=indexes)
#print("t1", self.t1-self.t1)
#print("t2", self.t2-self.t1)
#print("t3", self.t3-self.t2)
#print("t4", self.t4-self.t3)
#print("t5", self.t5-self.t4)
#print("t6", self.t6-self.t5)
#print("t7", self.t7-self.t6)
#print("t8", self.t8-self.t7)
#print("t9", self.t9-self.t8)
#print("t10",self.t10-self.t9)
#print("t11",self.t11-self.t10)
#print("t12",self.t12-self.t11)
#print("tpoint",self.t13-self.t3)

self.__terminate()

print("\nTOTAL",self.t13-self.t1)
# Post Scan Callback
if(self.__postScanCallback):
self.__postScanCallback(scan=self)
Expand Down