Skip to content

Commit 987d372

Browse files
committed
Fixed feature access; added warning when using SIMCAM.
1 parent aa1a34b commit 987d372

File tree

1 file changed

+86
-3
lines changed

1 file changed

+86
-3
lines changed

microscope/cameras/andorsdk3.py

Lines changed: 86 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,85 @@
4747
'software': devices.TRIGGER_SOFT,
4848
}
4949

50+
SDK_NAMES = {
51+
"_accumulate_count" : "AccumulateCount",
52+
"_acquisition_start" : "AcquisitionStart",
53+
"_acquisition_stop" : "AcquisitionStop",
54+
"_alternating_readout_direction" : "AlternatingReadoutDirection",
55+
"_aoi_binning" : "AOIBinning",
56+
"_aoi_height" : "AOIHeight",
57+
"_aoi_left" : "AOILeft",
58+
"_aoi_top" : "AOITop",
59+
"_aoi_width" : "AOIWidth",
60+
"_aoi_stride" : "AOIStride",
61+
"_auxiliary_out_source" : "AuxiliaryOutSource",
62+
"_aux_out_source_two" : "AuxOutSourceTwo",
63+
"_baseline_level" : "BaselineLevel",
64+
"_bit_depth" : "BitDepth",
65+
"_buffer_overflow_event" : "BufferOverflowEvent",
66+
"_bytes_per_pixel" : "BytesPerPixel",
67+
"_camera_acquiring" : "CameraAcquiring",
68+
"_camera_dump" : "CameraDump",
69+
"_camera_model" : "CameraModel",
70+
"_camera_name" : "CameraName",
71+
"_camera_present" : "CameraPresent",
72+
"_controller_id" : "ControllerId",
73+
"_frame_count" : "FrameCount",
74+
"_cycle_mode" : "CycleMode",
75+
"_electronic_shuttering_mode" : "ElectronicShutteringMode",
76+
"_event_enable" : "EventEnable",
77+
"_events_missed_event" : "EventsMissedEvent",
78+
"_event_selector" : "EventSelector",
79+
"_exposed_pixel_height" : "ExposedPixelHeight",
80+
"_exposure_time" : "ExposureTime",
81+
"_exposure_end_event" : "ExposureEndEvent",
82+
"_exposure_start_event" : "ExposureStartEvent",
83+
"_external_trigger_delay" : "ExternalTriggerDelay",
84+
"_fan_speed" : "FanSpeed",
85+
"_firmware_version" : "FirmwareVersion",
86+
"_frame_rate" : "FrameRate",
87+
"_full_aoi_control" : "FullAOIControl",
88+
"_image_size_bytes" : "ImageSizeBytes",
89+
"_interface_type" : "InterfaceType",
90+
"_io_invert" : "IoInvert",
91+
"_io_selector" : "IoSelector",
92+
"_line_scan_speed" : "LineScanSpeed",
93+
"_lut_index" : "LutIndex",
94+
"_lut_value" : "LutValue",
95+
"_max_interface_transfer_rate" : "MaxInterfaceTransferRate",
96+
"_metadata_enable" : "MetadataEnable",
97+
"_metadata_timestamp" : "MetadataTimestamp",
98+
"_metadata_frame" : "MetadataFrame",
99+
"_overlap" : "Overlap",
100+
"_pixel_encoding" : "PixelEncoding",
101+
"_pixel_readout_rate" : "PixelReadoutRate",
102+
"_pre_amp_gain_control" : "PreAmpGainControl",
103+
"_readout_time" : "ReadoutTime",
104+
"_rolling_shutter_global_clear" : "RollingShutterGlobalClear",
105+
"_row_n_exposure_end_event" : "RowNExposureEndEvent",
106+
"_row_n_exposure_start_event" : "RowNExposureStartEvent",
107+
"_row_read_time" : "RowReadTime",
108+
"_scan_speed_control_enable" : "ScanSpeedControlEnable",
109+
"_sensor_cooling" : "SensorCooling",
110+
"_sensor_height" : "SensorHeight",
111+
"_sensor_readout_mode" : "SensorReadoutMode",
112+
"_sensor_temperature" : "SensorTemperature",
113+
"_sensor_width" : "SensorWidth",
114+
"_serial_number" : "SerialNumber",
115+
"_simple_pre_amp_gain_control" : "SimplePreAmpGainControl",
116+
"_software_trigger" : "SoftwareTrigger",
117+
"_static_blemish_correction" : "StaticBlemishCorrection",
118+
"_spurious_noise_filter" : "SpuriousNoiseFilter",
119+
"_target_sensor_temperature" : "TargetSensorTemperature",
120+
"_temperature_control" : "TemperatureControl",
121+
"_temperature_status" : "TemperatureStatus",
122+
"_timestamp_clock" : "TimestampClock",
123+
"_timestamp_clock_frequency" : "TimestampClockFrequency",
124+
"_timestamp_clock_reset" : "TimestampClockReset",
125+
"_trigger_mode" : "TriggerMode",
126+
"_vertically_centre_aoi" : "VerticallyCentreAOI",
127+
}
128+
50129
# Wrapper to ensure feature is readable.
51130
def readable_wrapper(func):
52131
def wrapper(self, *args, **kwargs):
@@ -333,8 +412,8 @@ def initialize(self):
333412
if self.handle == None:
334413
raise Exception("No camera opened.")
335414
for name, var in sorted(self.__dict__.items()):
336-
sdk_name = name.replace('_', '')
337415
if isinstance(var, ATProperty):
416+
sdk_name = SDK_NAMES[name]
338417
if not SDK3.IsImplemented(self.handle, sdk_name):
339418
delattr(self, name)
340419
continue
@@ -365,8 +444,12 @@ def initialize(self):
365444
get_func, set_func, vals_func, is_readonly_func)
366445
# Default setup.
367446
self.set_cooling(True)
368-
self._trigger_mode.set_string('Software')
369-
self._cycle_mode.set_string('Continuous')
447+
if not self._camera_model.getValue().startswith('SIMCAM'):
448+
self._trigger_mode.set_string('Software')
449+
self._cycle_mode.set_string('Continuous')
450+
else:
451+
self._logger.warn("No hardware found - using SIMCAM")
452+
370453

371454
def callback(*args):
372455
data = self._fetch_data(timeout=500)

0 commit comments

Comments
 (0)