Commit 207cc8e3 authored by Martin Drechsler's avatar Martin Drechsler

when ending measurement, it goes softly to value, and it saves initial and final comment

parent 8785f039
...@@ -7,6 +7,7 @@ Created on Fri May 3 10:32:30 2019 ...@@ -7,6 +7,7 @@ Created on Fri May 3 10:32:30 2019
""" """
from drivers.andorzyla import AndorZyla from drivers.andorzyla import AndorZyla
import threading
cam = AndorZyla(0) cam = AndorZyla(0)
cam.Init() cam.Init()
...@@ -15,5 +16,13 @@ cam.GetMetaData() ...@@ -15,5 +16,13 @@ cam.GetMetaData()
#%% #%%
cam.shutdown() cam.shutdown()
#%% #%%
def f(): cam.AcquisitionStart()
print('hola')
\ No newline at end of file cameraThread = threading.Thread(target=cam.live_acquisition_loop)
cam.live_acquisition_configure()
cameraThread.start()
cam.AcquisitionStart()
\ No newline at end of file
...@@ -755,11 +755,14 @@ class AndorBase(SDK3Camera): ...@@ -755,11 +755,14 @@ class AndorBase(SDK3Camera):
timeout = 1000000 timeout = 1000000
while getattr(t, "do_run", True): while getattr(t, "do_run", True):
a_s, px_encoding, xs, ys, bufs = self._live_acq_auxs try:
a_s, px_encoding, xs, ys, bufs = self._live_acq_auxs
except AttributeError:
print('AndorZyla object has no attribute _live_acq_auxs')
try: try:
pData, lData = SDK3.WaitBuffer(self.handle, int(timeout)) pData, lData = SDK3.WaitBuffer(self.handle, int(timeout))
except: except:
raise('Timeout in the camera') raise Exception('Timeout in the camera')
img = create_aligned_array(xs*ys, 'uint16') img = create_aligned_array(xs*ys, 'uint16')
SDK3.ConvertBuffer(bufs[self.acq_index_i%len(bufs)].ctypes.data_as(ctypes.POINTER(ctypes.c_uint8)), SDK3.ConvertBuffer(bufs[self.acq_index_i%len(bufs)].ctypes.data_as(ctypes.POINTER(ctypes.c_uint8)),
img.ctypes.data_as(ctypes.POINTER(ctypes.c_uint8)), img.ctypes.data_as(ctypes.POINTER(ctypes.c_uint8)),
......
from PyQt5 import QtGui, QtCore from PyQt5 import QtGui, QtCore
from drivers.andorzyla import AndorZyla #from drivers.andorzyla import AndorZyla
#from drivers.dummyAndor import AndorZyla from drivers.dummyAndor import AndorZyla
from cameraGui import CameraGuiMainWindow from cameraGui import CameraGuiMainWindow
from zylaCameraWorker import CameraWorker from zylaCameraWorker import CameraWorker
......
...@@ -35,7 +35,8 @@ class CameraWorker(QtCore.QObject): ...@@ -35,7 +35,8 @@ class CameraWorker(QtCore.QObject):
self.ao_to_scan = None self.ao_to_scan = None
self.scan_array_gen = None self.scan_array_gen = None
self._lock = threading.Lock() self._lock = threading.Lock()
self.measure_params = dict()
def make_connections(self, frontend): def make_connections(self, frontend):
# frontend connections # frontend connections
live_acq_params = frontend.cameraParamFrame.paramTree.p live_acq_params = frontend.cameraParamFrame.paramTree.p
...@@ -43,7 +44,11 @@ class CameraWorker(QtCore.QObject): ...@@ -43,7 +44,11 @@ class CameraWorker(QtCore.QObject):
frontend.signalWithMeasurementParameters.connect(self.simple_scan_measurement_start) frontend.signalWithMeasurementParameters.connect(self.simple_scan_measurement_start)
frontend.roiDataReadySignal.connect(self.save_data_from_scan_step) frontend.roiDataReadySignal.connect(self.save_data_from_scan_step)
frontend.measurementFrame.saveMeasureButton.clicked.connect( frontend.measurementFrame.saveMeasureButton.clicked.connect(
self.storage.permanent_save_current_data) lambda: self.permanent_save_measurement(
comment=frontend.measurementFrame.comments.toPlainText()
)
)
# internal connections # internal connections
self.cam.helper.imageAquiredSignal.connect(self.new_image_acquired) self.cam.helper.imageAquiredSignal.connect(self.new_image_acquired)
...@@ -128,15 +133,16 @@ class CameraWorker(QtCore.QObject): ...@@ -128,15 +133,16 @@ class CameraWorker(QtCore.QObject):
self.measurementStartingSignal.emit() self.measurementStartingSignal.emit()
self.ao_to_scan = self.get_scan_signal(measure_params['signal_to_scan']) self.ao_to_scan = self.get_scan_signal(measure_params['signal_to_scan'])
start = measure_params['start'] self.measure_params = measure_params
end = measure_params['end'] start = self.measure_params['start']
step_num = measure_params['steps'] end = self.measure_params['end']
step_num = self.measure_params['steps']
self.scan_array_gen = yield_array(create_measurement_array(start, end, step_num)) self.scan_array_gen = yield_array(create_measurement_array(start, end, step_num))
self.ao_to_scan.go_softly_to_value(start) self.ao_to_scan.go_softly_to_value(start)
self.storage.set_directory(measure_params['directory']) self.storage.set_directory(measure_params['directory'])
self.storage.create_data_file('Time', measure_params['signal_to_scan'], 'Roi data') self.storage.create_data_file('Time', measure_params['signal_to_scan'], 'Roi data')
self.storage.append_metadata_to_current_file(measure_params['spinboxes_dict'], self.cam.GetMetaData(), measure_params) self.storage.append_metadata_to_current_file(self.cam.GetMetaData(), self.measure_params)
self.cam.TriggerMode.setString('Software') self.cam.TriggerMode.setString('Software')
...@@ -152,7 +158,8 @@ class CameraWorker(QtCore.QObject): ...@@ -152,7 +158,8 @@ class CameraWorker(QtCore.QObject):
def simple_scan_measurement_end(self): def simple_scan_measurement_end(self):
self._stop_acquisition_loop() self._stop_acquisition_loop()
self.cam.TriggerMode.setString('Internal') self.cam.TriggerMode.setString('Internal')
self.ao_to_scan.go_softly_to_value(self.measure_params['end'])
self.measurementEndingSignal.emit() self.measurementEndingSignal.emit()
print('exiting scan ending in worker') print('exiting scan ending in worker')
...@@ -166,7 +173,7 @@ class CameraWorker(QtCore.QObject): ...@@ -166,7 +173,7 @@ class CameraWorker(QtCore.QObject):
# aca puede esperar o chequear algo, por ahora nada # aca puede esperar o chequear algo, por ahora nada
self.cam.trigger() self.cam.trigger()
print('trigger') print('trigger')
except: except StopIteration:
self.simple_scan_measurement_end() self.simple_scan_measurement_end()
def get_scan_signal(self, ao_name): def get_scan_signal(self, ao_name):
...@@ -183,6 +190,11 @@ class CameraWorker(QtCore.QObject): ...@@ -183,6 +190,11 @@ class CameraWorker(QtCore.QObject):
self.scan_array_gen.close() self.scan_array_gen.close()
print('Measurement aborted') print('Measurement aborted')
@QtCore.pyqtSlot(str)
def permanent_save_measurement(self, comment=''):
self.storage.append_metadata_to_current_file(
{'Final comment': comment}
)
self.storage.permanent_save_current_data()
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment