Skip to content

Commit b4ada4f

Browse files
committed
Fixed the type and .Net serialization errors that would occur
1 parent 071617f commit b4ada4f

File tree

2 files changed

+19
-23
lines changed

2 files changed

+19
-23
lines changed

Diff for: src/qt3utils/applications/controllers/princeton_spectrometer.py

+9-13
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,14 @@ def configure(self, config_dict: dict) -> None:
6060
"""
6161
self.logger.debug("Calling configure on the Princeton Spectrometer data controller")
6262
self.last_config_dict.update(config_dict)
63-
64-
try:
65-
#NOTE: If you dont type cast these then you will get serialization errors
66-
self.spectrometer.experiment_name = str(config_dict.get('experiment_name', self.spectrometer.experiment_name))
67-
self.spectrometer.exposure_time = float(config_dict.get('exposure_time', self.spectrometer.exposure_time))
68-
self.spectrometer.center_wavelength = float(config_dict.get('center_wavelength', self.spectrometer.center_wavelength))
69-
self.spectrometer.temperature_sensor_setpoint = float(config_dict.get('temperature_sensor_setpoint', self.spectrometer.temperature_sensor_setpoint))
70-
self.spectrometer.grating = str(config_dict.get('grating', self.spectrometer.grating))
71-
self.wave_start = float(config_dict.get('wave_start', self.wave_start))
72-
self.wave_end = float(config_dict.get('wave_end', self.wave_end))
73-
except Exception as e:
74-
self.logger.error({str(e)})
63+
64+
self.spectrometer.experiment_name = config_dict.get('experiment_name', self.spectrometer.experiment_name)
65+
self.spectrometer.exposure_time = config_dict.get('exposure_time', self.spectrometer.exposure_time)
66+
self.spectrometer.center_wavelength = config_dict.get('center_wavelength', self.spectrometer.center_wavelength)
67+
self.spectrometer.temperature_sensor_setpoint = config_dict.get('temperature_sensor_setpoint', self.spectrometer.temperature_sensor_setpoint)
68+
self.spectrometer.grating = config_dict.get('grating', self.spectrometer.grating)
69+
self.wave_start = config_dict.get('wave_start', self.wave_start)
70+
self.wave_end = config_dict.get('wave_end', self.wave_end)
7571

7672
def configure_view(self, gui_root: tk.Toplevel) -> None:
7773
"""
@@ -126,7 +122,7 @@ def configure_view(self, gui_root: tk.Toplevel) -> None:
126122
'temperature_sensor_setpoint': temperature_sensor_setpoint_var,
127123
'grating': grating_var,
128124
'wave_start': wave_start_var,
129-
'wave_end': wave_end_var,
125+
'wave_end': wave_end_var
130126
}
131127

132128
row += 1

Diff for: src/qt3utils/datagenerators/princeton.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
clr.AddReference("System.Collections")
2828
clr.AddReference("System.IO")
2929
from System.Collections.Generic import List
30-
from System import String
30+
from System import String, Int32, Int64, IntPtr, Double
3131
from System.IO import FileAccess
3232
except KeyError as e:
3333
logger.error(f"KeyError {e} during import")
@@ -83,11 +83,11 @@ def get(self, setting: Any) -> Any:
8383
return value
8484

8585
def load_experiment(self, value: str) -> None:
86-
self.experiment.Load(value)
86+
self.experiment.Load(String(value))
8787
self.set(lf.AddIns.ExperimentSettings.FileNameGenerationAttachDate, False)
8888
self.set(lf.AddIns.ExperimentSettings.FileNameGenerationAttachTime, False)
8989
self.set(lf.AddIns.ExperimentSettings.FileNameGenerationAttachIncrement, True)
90-
self.set(lf.AddIns.ExperimentSettings.FileNameGenerationIncrementNumber, 0)
90+
self.set(lf.AddIns.ExperimentSettings.FileNameGenerationIncrementNumber, Int32(0))
9191

9292
def file_setup(self) -> None:
9393
self.set(lf.AddIns.ExperimentSettings.FileNameGenerationBaseFileName, str(uuid.uuid4()))
@@ -211,7 +211,7 @@ def center_wavelength(self, nanometers: float) -> None:
211211
"""
212212
# The line below addresses bug where if step and glue is enabled it wont allow you to set the center wavelength.
213213
self.light.set(lf.AddIns.ExperimentSettings.StepAndGlueEnabled, False)
214-
self.light.set(lf.AddIns.SpectrometerSettings.GratingCenterWavelength, nanometers)
214+
self.light.set(lf.AddIns.SpectrometerSettings.GratingCenterWavelength, Double(nanometers))
215215

216216
@property
217217
def experiment_name(self) -> Union[str, None]:
@@ -246,7 +246,7 @@ def grating(self, value: str) -> None:
246246
Sets the current grating to be the one specified by parameter grating.
247247
"""
248248
if value in self.grating_options:
249-
self.light.set(lf.AddIns.SpectrometerSettings.GratingSelected, value)
249+
self.light.set(lf.AddIns.SpectrometerSettings.GratingSelected, String(value))
250250
else:
251251
logger.error(f"Grating {value} is not an options. The options are: {self.grating_options}")
252252

@@ -271,7 +271,7 @@ def num_frames(self, num_frames: int) -> None:
271271
"""
272272
Sets the number of frames to be taken during acquisition to number.
273273
"""
274-
self.light.set(lf.AddIns.ExperimentSettings.AcquisitionFramesToStore, num_frames)
274+
self.light.set(lf.AddIns.ExperimentSettings.AcquisitionFramesToStore, Int64(num_frames))
275275

276276
@property
277277
def exposure_time(self) -> float:
@@ -285,7 +285,7 @@ def exposure_time(self, ms: float) -> None:
285285
"""
286286
Sets the single frame exposure time to be ms (in ms).
287287
"""
288-
self.light.set(lf.AddIns.CameraSettings.ShutterTimingExposureTime, ms)
288+
self.light.set(lf.AddIns.CameraSettings.ShutterTimingExposureTime, Double(ms))
289289

290290
@property
291291
def temperature_sensor_setpoint(self) -> float:
@@ -302,7 +302,7 @@ def temperature_sensor_setpoint(self, deg_C: float) -> None:
302302
The `temperature_sensor_setpoint` defines a target or reference value for the camera's sensor, ensuring optimal or specific operation conditions for image acquisition.
303303
Depending on the setpoint, the behavior or response of the camera sensor might vary.
304304
"""
305-
self.light.set(lf.AddIns.CameraSettings.SensorTemperatureSetPoint, deg_C)
305+
self.light.set(lf.AddIns.CameraSettings.SensorTemperatureSetPoint, Double(deg_C))
306306

307307
class SpectrometerDataAcquisition(SpectrometerConfig):
308308
def acquire_frame(self) -> Tuple[np.ndarray, np.ndarray]:
@@ -332,8 +332,8 @@ def acquire_step_and_glue(self, wavelength_range: Tuple[float, float]) -> Tuple[
332332
self.light.set(lf.AddIns.ExperimentSettings.StepAndGlueEnabled, False)
333333
logger.error(f'Unable to perform step and glue due to error: {e}')
334334

335-
self.light.set(lf.AddIns.ExperimentSettings.StepAndGlueStartingWavelength, lambda_min)
336-
self.light.set(lf.AddIns.ExperimentSettings.StepAndGlueEndingWavelength, lambda_max)
335+
self.light.set(lf.AddIns.ExperimentSettings.StepAndGlueStartingWavelength, Double(lambda_min))
336+
self.light.set(lf.AddIns.ExperimentSettings.StepAndGlueEndingWavelength, Double(lambda_max))
337337

338338
if lambda_max - lambda_min < self.MIN_WAVELENGTH_DIFFERENCE:
339339
raise ValueError(f"End wavelength must be atleast {self.MIN_WAVELENGTH_DIFFERENCE} units greater than the start wavelength.")

0 commit comments

Comments
 (0)