def __init__(self, serial_number, *args, **kwargs): """ Parameters ---------- serial_number: string The serial number of the deformable mirror, something like "BIL103". """ super(AlpaoDeformableMirror, self).__init__(*args, **kwargs) ## We need to constantly check for errors and need a buffer to ## have the message written to. To avoid creating a new buffer ## each time, have a buffer per instance. self._err_msg = ctypes.create_string_buffer(self._err_msg_len) self._dm = asdk.Init(six.b(serial_number)) if not self._dm: raise Exception("Failed to initialise connection: don't know why") ## In theory, asdkInit should return a NULL pointer in case of ## failure and that should be enough to check. However, at least ## in the case of a missing configuration file it still returns a ## DM pointer so we still need to check for errors on the stack. self._raise_if_error(asdk.FAILURE) value = asdk.Scalar_p(asdk.Scalar()) status = asdk.Get(self._dm, six.b("NbOfActuator"), value) self._raise_if_error(status) self._n_actuators = int(value.contents.value) self._trigger_type = TriggerType.SOFTWARE self._trigger_mode = TriggerMode.ONCE
def __init__(self, serial_number: str, **kwargs) -> None: super().__init__(**kwargs) self._dm = asdk.Init(serial_number.encode()) if not self._dm: raise microscope.InitialiseError( "Failed to initialise connection: don't know why") # In theory, asdkInit should return a NULL pointer in case of # failure and that should be enough to check. However, at least # in the case of a missing configuration file it still returns a # DM pointer so we still need to check for errors on the stack. self._raise_if_error(asdk.FAILURE) value = asdk.Scalar_p(asdk.Scalar()) status = asdk.Get(self._dm, b"NbOfActuator", value) self._raise_if_error(status) self._n_actuators = int(value.contents.value) self._trigger_type = microscope.TriggerType.SOFTWARE self._trigger_mode = microscope.TriggerMode.ONCE
def __init__(self, serial_number: str, **kwargs) -> None: """ Parameters ---------- serial_number: string The serial number of the deformable mirror, something like "BIL103". """ super().__init__(**kwargs) self._dm = asdk.Init(serial_number.encode()) if not self._dm: raise Exception("Failed to initialise connection: don't know why") ## In theory, asdkInit should return a NULL pointer in case of ## failure and that should be enough to check. However, at least ## in the case of a missing configuration file it still returns a ## DM pointer so we still need to check for errors on the stack. self._raise_if_error(asdk.FAILURE) value = asdk.Scalar_p(asdk.Scalar()) status = asdk.Get(self._dm, b'NbOfActuator', value) self._raise_if_error(status) self._n_actuators = int(value.contents.value) self._trigger_type = TriggerType.SOFTWARE self._trigger_mode = TriggerMode.ONCE