def queue_patterns(self, patterns: numpy.ndarray) -> None: if self._trigger_type == TriggerType.SOFTWARE: super().queue_patterns(patterns) return self._validate_patterns(patterns) patterns = self._normalize_patterns(patterns) patterns = numpy.atleast_2d(patterns) n_patterns = patterns.shape[0] # type: int ## The Alpao SDK seems to only support the trigger mode start. It ## still has option called nRepeats that we can't really figure ## what is meant to do. When set to 1, the mode is start. What ## we want it is to have trigger mode once which was not ## supported. We have received a modified version where if ## nRepeats is set to same number of patterns, does trigger mode ## once (not documented on Alpao SDK). if self._trigger_mode == TriggerMode.ONCE: n_repeats = n_patterns elif self._trigger_mode == TriggerMode.START: n_repeats = 1 else: raise Exception("trigger type '%s' and trigger mode '%s'" % (self._trigger_type.name, self._trigger_mode.name)) data_pointer = patterns.ctypes.data_as(asdk.Scalar_p) status = asdk.SendPattern(self._dm, data_pointer, n_patterns, n_repeats) self._raise_if_error(status)
def queue_patterns(self, patterns: numpy.ndarray) -> None: if self._trigger_type == microscope.TriggerType.SOFTWARE: super().queue_patterns(patterns) return self._validate_patterns(patterns) patterns = self._normalize_patterns(patterns) patterns = numpy.atleast_2d(patterns) n_patterns: int = patterns.shape[0] # The Alpao SDK seems to only support the trigger mode start. It # still has option called nRepeats that we can't really figure # what is meant to do. When set to 1, the mode is start. What # we want it is to have trigger mode once which was not # supported. We have received a modified version where if # nRepeats is set to same number of patterns, does trigger mode # once (not documented on Alpao SDK). if self._trigger_mode == microscope.TriggerMode.ONCE: n_repeats = n_patterns elif self._trigger_mode == microscope.TriggerMode.START: n_repeats = 1 else: # We should not get here in the first place since # set_trigger filters unsupported modes. raise microscope.UnsupportedFeatureError( "trigger type '%s' and trigger mode '%s' is not supported" % (self._trigger_type.name, self._trigger_mode.name)) data_pointer = patterns.ctypes.data_as(asdk.Scalar_p) # We don't know if the previous queue of pattern ran until the # end, so we need to clear it before sending (see issue #50) status = asdk.Stop(self._dm) self._raise_if_error(status) status = asdk.SendPattern(self._dm, data_pointer, n_patterns, n_repeats) self._raise_if_error(status)