Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
total_control_app
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Martin Drechsler
total_control_app
Commits
75027243
Commit
75027243
authored
May 06, 2019
by
Martin Drechsler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Almost readt to measure (with the dummy at least). Some fixing in storage required.
parent
f4cb859d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
141 additions
and
129 deletions
+141
-129
MCDAQcontrolsignals.py
MCDAQcontrolsignals.py
+94
-93
cameraGui.py
cameraGui.py
+7
-6
ADoutputs.py
drivers/ADoutputs.py
+3
-1
storage.py
resources/storage.py
+16
-4
zylaCameraWorker.py
zylaCameraWorker.py
+21
-25
No files found.
MCDAQcontrolsignals.py
View file @
75027243
...
@@ -2,7 +2,6 @@
...
@@ -2,7 +2,6 @@
"""
"""
Here the class of control signals are created. There are two types: analog and digital.
Here the class of control signals are created. There are two types: analog and digital.
"""
"""
import
numpy
as
np
from
drivers.ADoutputs
import
daq_AO
,
daq_DO
from
drivers.ADoutputs
import
daq_AO
,
daq_DO
from
PyQt5
import
QtCore
from
PyQt5
import
QtCore
from
subclasses.controllayouts
import
LaserControlLayout
from
subclasses.controllayouts
import
LaserControlLayout
...
@@ -11,102 +10,104 @@ from subclasses.controllayouts import LaserScanLayout
...
@@ -11,102 +10,104 @@ from subclasses.controllayouts import LaserScanLayout
AO_TYPES
=
[
'cavity_piezo'
,
'electrode'
,
'laser_piezo'
]
AO_TYPES
=
[
'cavity_piezo'
,
'electrode'
,
'laser_piezo'
]
class
anal_control_signal
(
QtCore
.
QObject
):
class
anal_control_signal
(
QtCore
.
QObject
):
_registry
=
[]
_registry
=
[]
scanStepSignal
=
QtCore
.
pyqtSignal
(
float
)
scanStepSignal
=
QtCore
.
pyqtSignal
(
float
)
scanEndSignal
=
QtCore
.
pyqtSignal
(
float
)
scanEndSignal
=
QtCore
.
pyqtSignal
(
float
)
def
__init__
(
self
,
name
,
channel
,
ao_type
,
out_minimum
=
-
10
,
out_maximum
=
10
,
out_step
=
0.1
,
feedfoward
=
False
):
def
__init__
(
self
,
name
,
channel
,
ao_type
,
out_minimum
=
-
10
,
out_maximum
=
10
,
out_step
=
0.1
,
feedfoward
=
False
):
super
()
.
__init__
()
super
()
.
__init__
()
if
name
in
[
ao
.
name
for
ao
in
self
.
_registry
]:
if
name
in
[
ao
.
name
for
ao
in
self
.
_registry
]:
raise
ValueError
(
'Two analog control signals cannot share the name:
%
s used already'
%
(
name
))
raise
ValueError
(
'Two analog control signals cannot share the name:
%
s used already'
%
(
name
))
if
channel
in
[
ao
.
ch
for
ao
in
self
.
_registry
]:
if
channel
in
[
ao
.
ch
for
ao
in
self
.
_registry
]:
raise
ValueError
(
'Two analog control signals cannot share the channel: channel
%
s used already'
%
(
channel
))
raise
ValueError
(
'Two analog control signals cannot share the channel: channel
%
s used already'
%
(
channel
))
if
ao_type
not
in
AO_TYPES
:
if
ao_type
not
in
AO_TYPES
:
raise
ValueError
(
"Invalid ao type. Expected one of:
%
s"
%
AO_TYPES
)
raise
ValueError
(
"Invalid ao type. Expected one of:
%
s"
%
AO_TYPES
)
self
.
_registry
.
append
(
self
)
self
.
_registry
.
append
(
self
)
self
.
name
=
name
self
.
name
=
name
self
.
ch
=
channel
self
.
ch
=
channel
self
.
ao_type
=
ao_type
self
.
ao_type
=
ao_type
self
.
AO
=
daq_AO
(
self
.
ch
)
self
.
AO
=
daq_AO
(
self
.
ch
)
self
.
is_feedwoward_enabled
=
feedfoward
self
.
is_feedwoward_enabled
=
feedfoward
self
.
initial_value
=
0
self
.
initial_value
=
0
self
.
max
=
out_maximum
self
.
max
=
out_maximum
self
.
min
=
out_minimum
self
.
min
=
out_minimum
self
.
step
=
out_step
self
.
step
=
out_step
self
.
siPrefix
=
True
self
.
siPrefix
=
True
self
.
suffix
=
'V'
self
.
suffix
=
'V'
self
.
scanTimer
=
QtCore
.
QTimer
()
self
.
scanTimer
=
QtCore
.
QTimer
()
self
.
current_scan_step
=
0
self
.
current_scan_step
=
0
self
.
scan_array_gen
=
None
self
.
scan_array_gen
=
None
def
make_connections
(
self
,
frontend
):
def
make_connections
(
self
,
frontend
):
for
layout
in
LaserControlLayout
.
_registry
:
if
self
.
name
in
layout
.
spinboxes
:
for
layout
in
LaserControlLayout
.
_registry
:
layout
.
spinboxes
[
self
.
name
]
.
setMinimum
(
self
.
min
)
if
self
.
name
in
layout
.
spinboxes
:
layout
.
spinboxes
[
self
.
name
]
.
setMaximum
(
self
.
max
)
layout
.
spinboxes
[
self
.
name
]
.
setMinimum
(
self
.
min
)
layout
.
spinboxes
[
self
.
name
]
.
setValue
(
self
.
initial_value
)
layout
.
spinboxes
[
self
.
name
]
.
setMaximum
(
self
.
max
)
layout
.
spinboxes
[
self
.
name
]
.
sigValueChanging
.
connect
(
self
.
sb_change
)
layout
.
spinboxes
[
self
.
name
]
.
setValue
(
self
.
initial_value
)
layout
.
spinboxes
[
self
.
name
]
.
sigValueChanging
.
connect
(
self
.
sb_change
)
scan_layouts
=
[
l
for
l
in
LaserScanLayout
.
_registry
if
l
.
name
==
self
.
name
]
for
scan_layout
in
scan_layouts
:
scan_layouts
=
[
l
for
l
in
LaserScanLayout
.
_registry
if
l
.
name
==
self
.
name
]
scan_layout
.
spinboxes
[
'start'
]
.
setMinimum
(
self
.
min
)
for
scan_layout
in
scan_layouts
:
scan_layout
.
spinboxes
[
'start'
]
.
setMaximum
(
self
.
max
)
scan_layout
.
spinboxes
[
'start'
]
.
setMinimum
(
self
.
min
)
scan_layout
.
spinboxes
[
'stop'
]
.
setMinimum
(
self
.
min
)
scan_layout
.
spinboxes
[
'start'
]
.
setMaximum
(
self
.
max
)
scan_layout
.
spinboxes
[
'stop'
]
.
setMaximum
(
self
.
max
)
scan_layout
.
spinboxes
[
'stop'
]
.
setMinimum
(
self
.
min
)
scan_layout
.
spinboxes
[
'stop'
]
.
setMaximum
(
self
.
max
)
def
name
(
self
):
return
self
.
name
def
name
(
self
):
return
self
.
name
def
scan_event
(
self
):
self
.
current_scan_step
=
next
(
self
.
scan_array_gen
)
def
scan_event
(
self
):
self
.
AO
.
set_out
(
self
.
current_scan_step
)
self
.
current_scan_step
=
next
(
self
.
scan_array_gen
)
self
.
scanStepSignal
.
emit
(
self
.
current_scan_step
)
self
.
AO
.
set_out
(
self
.
current_scan_step
)
self
.
scanStepSignal
.
emit
(
self
.
current_scan_step
)
@
QtCore
.
pyqtSlot
(
object
)
def
scan_action
(
self
,
scan_array_gen
):
@
QtCore
.
pyqtSlot
(
object
)
print
(
'action'
)
def
scan_action
(
self
,
scan_array_gen
):
if
self
.
scanTimer
.
isActive
():
print
(
'action'
)
print
(
'stop timer'
)
if
self
.
scanTimer
.
isActive
():
self
.
scanTimer
.
stop
()
print
(
'stop timer'
)
self
.
scanEndSignal
.
emit
(
self
.
current_scan_step
)
self
.
scanTimer
.
stop
()
else
:
self
.
scanEndSignal
.
emit
(
self
.
current_scan_step
)
print
(
'start timer'
)
else
:
self
.
scan_array_gen
=
scan_array_gen
print
(
'start timer'
)
self
.
scanTimer
.
start
(
5.0
)
self
.
scan_array_gen
=
scan_array_gen
self
.
scanTimer
.
start
(
5.0
)
@
QtCore
.
pyqtSlot
(
object
,
object
)
def
sb_change
(
self
,
sb
,
value
):
@
QtCore
.
pyqtSlot
(
object
,
object
)
self
.
AO
.
set_out
(
value
)
def
sb_change
(
self
,
sb
,
value
):
self
.
AO
.
set_out
(
value
)
class
digital_control_signal
(
QtCore
.
QObject
):
class
digital_control_signal
(
QtCore
.
QObject
):
_registry
=
[]
_registry
=
[]
def
__init__
(
self
,
name
,
channel
,
inverse
=
False
):
def
__init__
(
self
,
name
,
channel
,
inverse
=
False
):
super
()
.
__init__
()
super
()
.
__init__
()
self
.
_registry
.
append
(
self
)
self
.
_registry
.
append
(
self
)
self
.
name
=
name
self
.
name
=
name
self
.
ch
=
channel
self
.
ch
=
channel
self
.
initial_value
=
0
self
.
initial_value
=
0
self
.
DO
=
daq_DO
(
self
.
ch
)
self
.
DO
=
daq_DO
(
self
.
ch
)
def
make_connections
(
self
,
frontend
):
def
make_connections
(
self
,
frontend
):
for
layout
in
LaserControlLayout
.
_registry
:
for
layout
in
LaserControlLayout
.
_registry
:
if
self
.
name
in
layout
.
checkboxes
:
if
self
.
name
in
layout
.
checkboxes
:
layout
.
checkboxes
[
self
.
name
]
.
stateChanged
.
connect
(
self
.
when_change_digital
)
layout
.
checkboxes
[
self
.
name
]
.
stateChanged
.
connect
(
self
.
when_change_digital
)
@
QtCore
.
pyqtSlot
(
int
)
@
QtCore
.
pyqtSlot
(
int
)
def
when_change_digital
(
self
,
state
):
def
when_change_digital
(
self
,
state
):
if
state
==
QtCore
.
Qt
.
Checked
:
if
state
==
QtCore
.
Qt
.
Checked
:
self
.
DO
.
set_out
(
True
)
self
.
DO
.
set_out
(
True
)
else
:
else
:
self
.
DO
.
set_out
(
False
)
self
.
DO
.
set_out
(
False
)
\ No newline at end of file
\ No newline at end of file
cameraGui.py
View file @
75027243
...
@@ -18,7 +18,6 @@ from subclasses.cameraParameterTree import CameraParameterTree
...
@@ -18,7 +18,6 @@ from subclasses.cameraParameterTree import CameraParameterTree
from
subclasses.controllayouts
import
LaserControlLayout
,
LaserScanLayout
from
subclasses.controllayouts
import
LaserControlLayout
,
LaserScanLayout
from
resources.scanFunctions
import
create_measurement_array
from
resources.scanFunctions
import
create_measurement_array
#from drivers.andorzyla import AndorZyla
#from drivers.andorzyla import AndorZyla
from
drivers.dummyAndor
import
AndorZyla
from
drivers.dummyAndor
import
AndorZyla
from
measurement
import
MeasurementFrame
from
measurement
import
MeasurementFrame
...
@@ -29,6 +28,7 @@ import numpy as np
...
@@ -29,6 +28,7 @@ import numpy as np
class
CameraGuiMainWindow
(
QMainWindow
):
class
CameraGuiMainWindow
(
QMainWindow
):
signalWithMeasurementParameters
=
QtCore
.
pyqtSignal
(
object
)
signalWithMeasurementParameters
=
QtCore
.
pyqtSignal
(
object
)
roiDataReadySignal
=
QtCore
.
pyqtSignal
(
float
)
def
__init__
(
self
):
def
__init__
(
self
):
super
()
.
__init__
()
super
()
.
__init__
()
...
@@ -37,7 +37,7 @@ class CameraGuiMainWindow(QMainWindow):
...
@@ -37,7 +37,7 @@ class CameraGuiMainWindow(QMainWindow):
self
.
counter
=
0
self
.
counter
=
0
self
.
frames_checker_timer
=
QtCore
.
QTimer
()
self
.
frames_checker_timer
=
QtCore
.
QTimer
()
self
.
isMeasuring
=
False
self
.
initUI
()
self
.
initUI
()
def
initUI
(
self
):
def
initUI
(
self
):
...
@@ -183,7 +183,9 @@ class CameraGuiMainWindow(QMainWindow):
...
@@ -183,7 +183,9 @@ class CameraGuiMainWindow(QMainWindow):
for
roi
in
self
.
rois
:
for
roi
in
self
.
rois
:
roiSlice
=
roi
.
getArrayRegion
(
self
.
img
.
image
,
img
=
self
.
img
)
roiSlice
=
roi
.
getArrayRegion
(
self
.
img
.
image
,
img
=
self
.
img
)
self
.
newData
=
roiSlice
.
sum
()
self
.
newData
=
np
.
mean
(
roiSlice
)
if
self
.
isMeasuring
:
self
.
roiDataReadySignal
.
emit
(
self
.
newData
)
self
.
scanROIdataY
[
self
.
iROIdata
]
=
self
.
newData
self
.
scanROIdataY
[
self
.
iROIdata
]
=
self
.
newData
self
.
timeROIdataY
[
self
.
iROIdata
]
=
self
.
newData
self
.
timeROIdataY
[
self
.
iROIdata
]
=
self
.
newData
...
@@ -235,8 +237,7 @@ class CameraGuiMainWindow(QMainWindow):
...
@@ -235,8 +237,7 @@ class CameraGuiMainWindow(QMainWindow):
def
measurement_starting
(
self
):
def
measurement_starting
(
self
):
self
.
cameraButton
.
setEnabled
(
False
)
self
.
cameraButton
.
setEnabled
(
False
)
self
.
measurementFrame
.
startMeasureButton
.
setEnabled
(
False
)
self
.
measurementFrame
.
startMeasureButton
.
setEnabled
(
False
)
self
.
isMeasuring
=
True
start
=
self
.
measurementFrame
.
startValue
.
value
()
start
=
self
.
measurementFrame
.
startValue
.
value
()
end
=
self
.
measurementFrame
.
endValue
.
value
()
end
=
self
.
measurementFrame
.
endValue
.
value
()
steps
=
self
.
measurementFrame
.
stepsNum
.
value
()
steps
=
self
.
measurementFrame
.
stepsNum
.
value
()
...
@@ -256,6 +257,7 @@ class CameraGuiMainWindow(QMainWindow):
...
@@ -256,6 +257,7 @@ class CameraGuiMainWindow(QMainWindow):
def
measurement_ending
(
self
):
def
measurement_ending
(
self
):
self
.
cameraButton
.
setEnabled
(
True
)
self
.
cameraButton
.
setEnabled
(
True
)
self
.
measurementFrame
.
startMeasureButton
.
setEnabled
(
True
)
self
.
measurementFrame
.
startMeasureButton
.
setEnabled
(
True
)
self
.
isMeasuring
=
False
for
l
in
LaserControlLayout
.
_registry
+
LaserScanLayout
.
_registry
:
for
l
in
LaserControlLayout
.
_registry
+
LaserScanLayout
.
_registry
:
l
.
unfreeze
()
l
.
unfreeze
()
print
(
'gui meas end'
)
print
(
'gui meas end'
)
...
@@ -270,7 +272,6 @@ class CameraGuiMainWindow(QMainWindow):
...
@@ -270,7 +272,6 @@ class CameraGuiMainWindow(QMainWindow):
measure_params
[
'end'
]
=
self
.
measurementFrame
.
endValue
.
value
()
measure_params
[
'end'
]
=
self
.
measurementFrame
.
endValue
.
value
()
measure_params
[
'steps'
]
=
self
.
measurementFrame
.
stepsNum
.
value
()
measure_params
[
'steps'
]
=
self
.
measurementFrame
.
stepsNum
.
value
()
measure_params
[
'directory'
]
=
self
.
measurementFrame
.
folderBrowser
.
toPlainText
()
measure_params
[
'directory'
]
=
self
.
measurementFrame
.
folderBrowser
.
toPlainText
()
self
.
signalWithMeasurementParameters
.
emit
(
measure_params
)
self
.
signalWithMeasurementParameters
.
emit
(
measure_params
)
###############################################################################
###############################################################################
...
...
drivers/ADoutputs.py
View file @
75027243
...
@@ -76,7 +76,7 @@ class daq_AO(object):
...
@@ -76,7 +76,7 @@ class daq_AO(object):
self
.
out_num
=
out_num
self
.
out_num
=
out_num
self
.
board_num
=
board_num
self
.
board_num
=
board_num
self
.
output_range
=
output_range
self
.
output_range
=
output_range
self
.
current_value
=
None
if
daqfound
:
if
daqfound
:
ul
.
set_config
(
InfoType
.
BOARDINFO
,
self
.
board_num
,
self
.
out_num
,
BoardInfo
.
DACRANGE
,
self
.
output_range
)
ul
.
set_config
(
InfoType
.
BOARDINFO
,
self
.
board_num
,
self
.
out_num
,
BoardInfo
.
DACRANGE
,
self
.
output_range
)
...
@@ -87,11 +87,13 @@ class daq_AO(object):
...
@@ -87,11 +87,13 @@ class daq_AO(object):
def
set_out
(
self
,
value
):
def
set_out
(
self
,
value
):
try
:
try
:
ul
.
v_out
(
self
.
board_num
,
self
.
out_num
,
self
.
output_range
,
value
)
ul
.
v_out
(
self
.
board_num
,
self
.
out_num
,
self
.
output_range
,
value
)
self
.
current_value
=
value
except
ULError
as
e
:
except
ULError
as
e
:
self
.
show_ul_error
(
e
)
self
.
show_ul_error
(
e
)
else
:
else
:
def
set_out
(
self
,
value
):
def
set_out
(
self
,
value
):
print
(
'Analog out
%
i set to
%
f'
%
(
self
.
out_num
,
value
)
)
print
(
'Analog out
%
i set to
%
f'
%
(
self
.
out_num
,
value
)
)
self
.
current_value
=
value
return
value
,
self
.
out_num
return
value
,
self
.
out_num
class
daq_DO
(
object
):
class
daq_DO
(
object
):
...
...
resources/storage.py
View file @
75027243
...
@@ -21,8 +21,11 @@ class Storage(object):
...
@@ -21,8 +21,11 @@ class Storage(object):
"""
"""
Class to handle data saving.
Class to handle data saving.
"""
"""
def
__init__
(
self
,
directory
):
def
__init__
(
self
):
self
.
directory
=
''
def
set_directory
(
self
,
directory
):
self
.
directory
=
directory
self
.
directory
=
directory
def
create_data_file
(
self
,
*
args
):
def
create_data_file
(
self
,
*
args
):
...
@@ -42,7 +45,8 @@ class Storage(object):
...
@@ -42,7 +45,8 @@ class Storage(object):
def
append_data_to_current_file
(
self
,
*
args
):
def
append_data_to_current_file
(
self
,
*
args
):
with
open
(
self
.
get_current_filename
(),
'ab'
)
as
f
:
with
open
(
self
.
get_current_filename
(),
'ab'
)
as
f
:
data
=
np
.
column_stack
(
args
)
#data = np.column_stack(args)
data
=
[
arg
for
arg
in
args
]
np
.
savetxt
(
f
,
data
)
np
.
savetxt
(
f
,
data
)
f
.
flush
()
f
.
flush
()
...
@@ -75,10 +79,11 @@ class Storage(object):
...
@@ -75,10 +79,11 @@ class Storage(object):
return
max
(
savings_number_list
)
+
1
return
max
(
savings_number_list
)
+
1
def
get_current_filename
(
self
):
def
get_current_filename
(
self
):
s_num
=
self
.
get_saving_number
()
-
1
s_num
=
self
.
get_saving_number
(
True
)
-
1
saving_directory
=
"/"
.
join
([
self
.
directory
,
self
.
get_date_string
()])
saving_directory
=
"/"
.
join
([
self
.
directory
,
self
.
get_date_string
()])
filename
=
"/"
.
join
([
saving_directory
,
'dump'
,
's'
+
str
(
s_num
)
.
zfill
(
2
)])
+
'.temp'
filename
=
"/"
.
join
([
saving_directory
,
'dump'
,
's'
+
str
(
s_num
)
.
zfill
(
2
)])
+
'.temp'
return
filename
return
filename
def
permanent_save_current_data
(
self
):
def
permanent_save_current_data
(
self
):
...
@@ -88,8 +93,15 @@ class Storage(object):
...
@@ -88,8 +93,15 @@ class Storage(object):
shutil
.
move
(
oldfile
,
"/"
.
join
([
saving_directory
,
newfilename
])
)
shutil
.
move
(
oldfile
,
"/"
.
join
([
saving_directory
,
newfilename
])
)
print
(
"/"
.
join
([
saving_directory
,
newfilename
]))
print
(
"/"
.
join
([
saving_directory
,
newfilename
]))
#%%
#%%
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
storage
=
Storage
(
'/home/martindrech/Documents/storage'
)
storage
=
Storage
()
storage
.
set_directory
(
'./'
)
storage
.
create_data_file
(
'col1'
,
'col2'
)
storage
.
create_data_file
(
'col1'
,
'col2'
)
storage
.
create_data_file
(
'col1'
,
'col2'
)
storage
.
create_data_file
(
'col1'
,
'col2'
)
storage
.
create_data_file
(
'col1'
,
'col2'
)
storage
.
create_data_file
(
'col1'
,
'col2'
)
storage
.
permanent_save_current_data
()
zylaCameraWorker.py
View file @
75027243
...
@@ -14,14 +14,14 @@ import threading
...
@@ -14,14 +14,14 @@ import threading
import
time
import
time
from
MCDAQcontrolsignals
import
anal_control_signal
from
MCDAQcontrolsignals
import
anal_control_signal
from
resources.messages
import
show_warning
from
resources.messages
import
show_warning
from
resources.storage
import
Storage
from
resources.scanFunctions
import
create_measurement_array
,
yield_array
from
resources.scanFunctions
import
create_measurement_array
,
yield_array
from
resources.storage
import
Storage
class
CameraWorker
(
QtCore
.
QObject
):
class
CameraWorker
(
QtCore
.
QObject
):
imageReadySignal
=
QtCore
.
pyqtSignal
(
np
.
ndarray
,
int
)
imageReadySignal
=
QtCore
.
pyqtSignal
(
np
.
ndarray
,
int
)
measurementStartingSignal
=
QtCore
.
pyqtSignal
()
measurementStartingSignal
=
QtCore
.
pyqtSignal
()
measurementEndingSignal
=
QtCore
.
pyqtSignal
()
measurementEndingSignal
=
QtCore
.
pyqtSignal
()
def
__init__
(
self
,
andor_camera
):
def
__init__
(
self
,
andor_camera
):
super
()
.
__init__
()
super
()
.
__init__
()
...
@@ -31,6 +31,7 @@ class CameraWorker(QtCore.QObject):
...
@@ -31,6 +31,7 @@ class CameraWorker(QtCore.QObject):
self
.
cam
.
SensorCooling
.
setValue
(
True
)
self
.
cam
.
SensorCooling
.
setValue
(
True
)
print
(
"camera worker initialized"
)
print
(
"camera worker initialized"
)
self
.
storage
=
Storage
()
self
.
ao_to_scan
=
None
self
.
ao_to_scan
=
None
self
.
scan_array_gen
=
None
self
.
scan_array_gen
=
None
...
@@ -39,6 +40,7 @@ class CameraWorker(QtCore.QObject):
...
@@ -39,6 +40,7 @@ class CameraWorker(QtCore.QObject):
live_acq_params
=
frontend
.
param_tree
.
p
live_acq_params
=
frontend
.
param_tree
.
p
frontend
.
cameraButton
.
clicked
.
connect
(
lambda
:
self
.
run
(
live_acq_params
))
frontend
.
cameraButton
.
clicked
.
connect
(
lambda
:
self
.
run
(
live_acq_params
))
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
)
# internal connections
# internal connections
self
.
cam
.
helper
.
imageAquiredSignal
.
connect
(
self
.
new_image_acquired
)
self
.
cam
.
helper
.
imageAquiredSignal
.
connect
(
self
.
new_image_acquired
)
...
@@ -117,7 +119,6 @@ class CameraWorker(QtCore.QObject):
...
@@ -117,7 +119,6 @@ class CameraWorker(QtCore.QObject):
@
QtCore
.
pyqtSlot
(
int
)
@
QtCore
.
pyqtSlot
(
int
)
def
new_image_acquired_with_trigger
(
self
,
acq_index
):
def
new_image_acquired_with_trigger
(
self
,
acq_index
):
self
.
imageReadySignal
.
emit
(
self
.
cam
.
acq_queue
.
get
(),
acq_index
)
self
.
imageReadySignal
.
emit
(
self
.
cam
.
acq_queue
.
get
(),
acq_index
)
self
.
simple_scan_measurement_step
()
def
simple_scan_measurement_start
(
self
,
measure_params
):
def
simple_scan_measurement_start
(
self
,
measure_params
):
...
@@ -131,9 +132,11 @@ class CameraWorker(QtCore.QObject):
...
@@ -131,9 +132,11 @@ class CameraWorker(QtCore.QObject):
start
=
measure_params
[
'start'
]
start
=
measure_params
[
'start'
]
end
=
measure_params
[
'end'
]
end
=
measure_params
[
'end'
]
step_num
=
measure_params
[
'steps'
]
step_num
=
measure_params
[
'steps'
]
directory
=
measure_params
[
'directory'
]
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
))
storage
=
Storage
(
directory
)
self
.
storage
.
set_directory
(
measure_params
[
'directory'
])
self
.
storage
.
create_data_file
(
'Time'
,
measure_params
[
'signal_to_scan'
],
'Roi data'
)
self
.
cam
.
TriggerMode
.
setString
(
'Software'
)
self
.
cam
.
TriggerMode
.
setString
(
'Software'
)
self
.
cam
.
helper
.
imageAquiredSignal
.
disconnect
(
self
.
new_image_acquired
)
self
.
cam
.
helper
.
imageAquiredSignal
.
disconnect
(
self
.
new_image_acquired
)
...
@@ -158,31 +161,24 @@ class CameraWorker(QtCore.QObject):
...
@@ -158,31 +161,24 @@ class CameraWorker(QtCore.QObject):
try
:
try
:
value
=
next
(
self
.
scan_array_gen
)
value
=
next
(
self
.
scan_array_gen
)
self
.
ao_to_scan
.
AO
.
set_out
(
value
)
self
.
ao_to_scan
.
AO
.
set_out
(
value
)
#aca puede esperar o chequear algo, por ahora nada
#
aca puede esperar o chequear algo, por ahora nada
self
.
cam
.
trigger
()
self
.
cam
.
trigger
()
except
StopIteration
:
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
):
return
[
ao
for
ao
in
anal_control_signal
.
_registry
if
ao
.
name
==
ao_name
][
0
]
return
[
ao
for
ao
in
anal_control_signal
.
_registry
if
ao
.
name
==
ao_name
][
0
]
QtCore
.
QTimer
.
singleShot
(
5000
,
self
.
measurementEndingSignal
.
emit
)
@
QtCore
.
pyqtSlot
(
float
)
print
(
'Ending measurement'
)
def
save_data_from_scan_step
(
self
,
roiData
):
self
.
storage
.
append_data_to_current_file
([
time
.
time
(),
self
.
ao_to_scan
.
AO
.
current_value
,
roiData
])
self
.
simple_scan_measurement_step
()
"""
scan_array = create_measurement_array() # aca necesito parametros de los spinboxes de la measurementGUi
prepare_camara_to_triggered_acq() #includes stopping acquisition if it is in acq live
create_temporary_data_files
measurement loop:
set_scan_signal
wait_predefined_time
take_and_recibe_image
process_image_to_get_data
save_data
update_camera_gui_with_image_and_data
update_measurement_gui
"""
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment