def initialize(self): """Initialise the camera. Open the connection, connect properties and populate settings dict. """ try: self.handle = SDK3.Open(self._index) except Exception as e: raise microscope.InitialiseError("Problem opening camera.") from e if self.handle == None: raise microscope.InitialiseError("No camera opened.") for name, var in sorted(self.__dict__.items()): if isinstance(var, ATProperty): sdk_name = SDK_NAMES[name] if not SDK3.IsImplemented(self.handle, sdk_name): delattr(self, name) continue var.connect(self.handle, sdk_name) if type(var) is ATCommand: continue is_readonly_func = var.is_readonly if type(var) is ATEnum: set_func = var.set_index get_func = var.get_index vals_func = var.get_available_values else: set_func = var.set_value get_func = var.get_value if type(var) is ATString: vals_func = var.max_length elif type(var) in (ATFloat, ATInt): vals_func = lambda v=var: (v.min(), v.max()) else: vals_func = None if name in INVALIDATES_BUFFERS: set_func = self.invalidate_buffers(set_func) self.add_setting( name.lstrip("_"), PROPERTY_TYPES[type(var)], get_func, set_func, vals_func, is_readonly_func, ) # Default setup. self.set_cooling(True) if not self._camera_model.getValue().startswith("SIMCAM"): self._trigger_mode.set_string("Software") self._cycle_mode.set_string("Continuous") else: _logger.warn("No hardware found - using SIMCAM") def callback(*args): data = self._fetch_data(timeout=500) timestamp = time.time() if data is not None: self._put(data, timestamp) return 0 else: return -1 self._exposure_callback = SDK3.CALLBACKTYPE(callback)
def Init(self): self.handle = SDK3.Open(self.camNum) self.connectProperties()