@@ -405,35 +405,35 @@ def disconnect_hardware(self, msg):
405
405
def save_odin (self , msg ):
406
406
"""Save Odin's settings to file."""
407
407
config = {}
408
- config ["fem/hexitec_config" ] = self .fem .hexitec_config
409
- config ["daq/file_name" ] = self .daq .file_name
410
- config ["daq/file_dir" ] = self .daq .file_dir
411
408
config ["daq/addition_enable" ] = self .daq .addition_enable
412
- config ["daq/pixel_grid_size" ] = self .daq .pixel_grid_size
413
- config ["daq/calibration_enable" ] = self .daq .calibration_enable
414
- config ["daq/gradients_filename" ] = self .daq .gradients_filename
415
- config ["daq/intercepts_filename" ] = self .daq .intercepts_filename
416
- config ["daq/discrimination_enable" ] = self .daq .discrimination_enable
417
409
config ["daq/bin_end" ] = self .daq .bin_end
418
410
config ["daq/bin_start" ] = self .daq .bin_start
419
411
config ["daq/bin_width" ] = self .daq .bin_width
420
- config ["daq/max_frames_received" ] = self .daq .max_frames_received
421
- config ["daq/pass_processed" ] = self .daq .pass_processed
422
- config ["daq/pass_raw" ] = self .daq .pass_raw
412
+ config ["daq/calibration_enable" ] = self .daq .calibration_enable
413
+ config ["daq/discrimination_enable" ] = self .daq .discrimination_enable
414
+ config ["daq/file_dir" ] = self .daq .file_dir
415
+ config ["daq/file_name" ] = self .daq .file_name
416
+ config ["daq/gradients_filename" ] = self .daq .gradients_filename
417
+ config ["daq/image_frequency" ] = self .daq .image_frequency
418
+ config ["daq/intercepts_filename" ] = self .daq .intercepts_filename
423
419
config ["daq/lvframes_dataset_name" ] = self .daq .lvframes_dataset_name
424
420
config ["daq/lvframes_frequency" ] = self .daq .lvframes_frequency
425
421
config ["daq/lvframes_per_second" ] = self .daq .lvframes_per_second
426
422
config ["daq/lvspectra_frequency" ] = self .daq .lvspectra_frequency
427
423
config ["daq/lvspectra_per_second" ] = self .daq .lvspectra_per_second
428
- config ["daq/threshold_lower" ] = self .daq .threshold_lower
429
- config ["daq/threshold_upper" ] = self .daq .threshold_upper
430
- config ["daq/image_frequency" ] = self .daq .image_frequency
424
+ config ["daq/max_frames_received" ] = self .daq .max_frames_received
425
+ config ["daq/pass_processed" ] = self .daq .pass_processed
426
+ config ["daq/pass_raw" ] = self .daq .pass_raw
427
+ config ["daq/pixel_grid_size" ] = self .daq .pixel_grid_size
431
428
config ["daq/threshold_filename" ] = self .daq .threshold_filename
429
+ config ["daq/threshold_lower" ] = self .daq .threshold_lower
432
430
config ["daq/threshold_mode" ] = self .daq .threshold_mode
431
+ config ["daq/threshold_upper" ] = self .daq .threshold_upper
433
432
config ["daq/threshold_value" ] = self .daq .threshold_value
434
- config ["number_frames" ] = self .number_frames
435
433
config ["duration" ] = self .duration
436
434
config ["duration_enable" ] = self .duration_enable
435
+ config ["fem/hexitec_config" ] = self .fem .hexitec_config
436
+ config ["number_frames" ] = self .number_frames
437
437
try :
438
438
with open (self .odin_config_file , "w" ) as f :
439
439
json .dump (config , f )
@@ -471,6 +471,7 @@ def load_odin(self, msg):
471
471
self .daq ._set_threshold_filename (config ["daq/threshold_filename" ])
472
472
self .daq ._set_threshold_mode (config ["daq/threshold_mode" ])
473
473
self .daq ._set_threshold_value (config ["daq/threshold_value" ])
474
+ self .daq ._set_compression_type (config ["daq/compression_type" ])
474
475
if config ["duration_enable" ]:
475
476
self .set_duration (config ["duration" ])
476
477
self .set_duration_enable (config ["duration_enable" ])
@@ -494,8 +495,15 @@ def set_duration_enable(self, duration_enable):
494
495
else :
495
496
self .set_number_frames (self .number_frames )
496
497
498
+ def round_to_even (self , n ):
499
+ """Round (upwards) integer to even integer."""
500
+ return (2 * round (0.4 + n / 2 ))
501
+
497
502
def set_number_frames (self , frames ):
498
503
"""Set number of frames in DAQ, FEM."""
504
+ # Ensure even number of frames
505
+ if frames % 2 :
506
+ frames = self .round_to_even (frames )
499
507
if frames <= 0 :
500
508
raise ParameterTreeError ("frames must be above 0!" )
501
509
self .number_frames = frames
0 commit comments