44 """Boston MicroMachines (BMC) deformable mirror.
46 BMC deformable mirrors only support software trigger.
49 def __init__(self, serial_number: str, **kwargs) ->
None:
50 super().__init__(**kwargs)
54 BMC.ConfigureLog(os.devnull.encode(), BMC.LOG_ALL)
56 BMC.ConfigureLog(os.devnull.encode(), BMC.LOG_OFF)
58 status = BMC.Open(self.
_dm, serial_number.encode())
63 def n_actuators(self) -> int:
64 return self.
_dm.ActCount
66 def _do_apply_pattern(self, pattern: numpy.ndarray) ->
None:
67 data_pointer = pattern.ctypes.data_as(ctypes.POINTER(ctypes.c_double))
68 status = BMC.SetArray(self.
_dm, data_pointer,
None)
73 status = BMC.Close(self.
_dm)
75 warnings.warn(BMC.ErrorString(status), RuntimeWarning)