From 19d8c964f1fba88e95db8994f6bfca6821a65022 Mon Sep 17 00:00:00 2001 From: "Leticia G. Capovilla" Date: Tue, 9 Mar 2021 00:37:49 -0300 Subject: [PATCH] Luciano's commits. --- py4syn/epics/HexapodeClass.py | 22 ++++----- py4syn/epics/VortexXspress3Class.py | 3 +- py4syn/utils/scan.py | 76 ++++++++++++++++++++--------- 3 files changed, 65 insertions(+), 36 deletions(-) diff --git a/py4syn/epics/HexapodeClass.py b/py4syn/epics/HexapodeClass.py index 7fb9bed..6e7e58d 100644 --- a/py4syn/epics/HexapodeClass.py +++ b/py4syn/epics/HexapodeClass.py @@ -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?', @@ -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): """ @@ -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): """ @@ -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() diff --git a/py4syn/epics/VortexXspress3Class.py b/py4syn/epics/VortexXspress3Class.py index 569bc53..2840d0b 100644 --- a/py4syn/epics/VortexXspress3Class.py +++ b/py4syn/epics/VortexXspress3Class.py @@ -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) \ No newline at end of file + epics.poll(evt=1.e-5, iot=0.1) + sleep(0.1) diff --git a/py4syn/utils/scan.py b/py4syn/utils/scan.py index d9fe3fc..991c3a3 100755 --- a/py4syn/utils/scan.py +++ b/py4syn/utils/scan.py @@ -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) @@ -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) @@ -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 = [] @@ -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)