def test_process_should_adjust_laser_power(self): self.laser_control = LaserControl(0.5) self.laser_control.set_laser_on() sample_data_chunk = numpy.array([(0, 0)]) micro_disseminator = MicroDisseminator(self.laser_control, self.mock_comm, 8000) micro_disseminator.process(sample_data_chunk) self.mock_comm.send.assert_called_with(MoveMessage(0, 0, 127))
def test_process_should_call_com_each_element_in_list(self): self.laser_control.set_laser_on() sample_data_chunk = numpy.array([(0.0, 1.0), (0.5, 0.0), (1.0, 0.5)]) micro_disseminator = MicroDisseminator(self.laser_control, self.mock_comm, 8000) micro_disseminator.process(sample_data_chunk) self.mock_comm.send.assert_has_calls([ call(MoveMessage(0, self.max_value, 255)), call(MoveMessage(self.max_value / 2, 0, 255)), call(MoveMessage(self.max_value, self.max_value / 2, 255)), ])
def _get_digital_disseminator(self, dry_run): return MicroDisseminator(self.laser_control, self._get_communicator(dry_run), self._configuration.circut.data_rate)
def __init__(self, configuration_manager): logger.info("Calibartion API Startup") self._configuration_manager = configuration_manager self._configuration = self._configuration_manager.load() self._point_generator = SinglePointGenerator() self._blink_generator = BlinkGenerator() self._orientaiton_generator = OrientationGenerator() self._alignment_generator = CalibrationLineGenerator() self._scale_generator = ScaleGenerator(speed=2.0, radius=1.0) self._test_patterns = { 'Hilbert Space Filling Curve': HilbertGenerator(), 'Square': SquareGenerator(), 'Circle': CircleGenerator(), 'Spiral': SpiralGenerator(), 'Memory Hourglass': MemoryHourglassGenerator(), 'Damping Test': DampingTestGenerator(), 'NESW': NESWGenerator(), 'Twitch': TwitchGenerator(), } self._current_generator = self._point_generator self._laser_control = LaserControl(self._configuration.cure_rate.override_laser_power_amount) transformer = TuningTransformer(scale=self._configuration.calibration.max_deflection) self._controller = None logger.debug("Setting up audiowriter") self._current_generator = self._point_generator self._state = MachineState() self._status = MachineStatus() self._communicator = UsbPacketCommunicator(self._configuration.circut.calibration_queue_length) self._communicator.start() self._disseminator = MicroDisseminator( self._laser_control, self._communicator, self._configuration.circut.data_rate ) self._path_to_points = PathToPoints( self._disseminator.samples_per_second, transformer, self._configuration.options.laser_thickness_mm ) post_fire_delay_speed = None slew_delay_speed = None if self._configuration.options.post_fire_delay: post_fire_delay_speed = self._configuration.options.laser_thickness_mm / (float(self._configuration.options.post_fire_delay) / 1000.0) if self._configuration.options.slew_delay: slew_delay_speed = self._configuration.options.laser_thickness_mm / (float(self._configuration.options.slew_delay) / 1000.0) self._writer = LayerWriter( self._disseminator, self._path_to_points, self._laser_control, self._state, post_fire_delay_speed=post_fire_delay_speed, slew_delay_speed=slew_delay_speed ) self._layer_processing = LayerProcessing( self._writer, self._state, self._status, ) self._controller = Controller( self._writer, self._layer_processing, self._current_generator, self._status, abort_on_error=False, ) self.make_pattern_fit() self._controller.start()
def test_close_calls_close_on_communicator(self): micro_disseminator = MicroDisseminator(self.laser_control, self.mock_comm, 8000) micro_disseminator.close() self.mock_comm.close.assert_called_with()
def test_process_should_handle_empty_lists(self): self.laser_control.set_laser_on() sample_data_chunk = numpy.array([]) micro_disseminator = MicroDisseminator(self.laser_control, self.mock_comm, 8000) micro_disseminator.process(sample_data_chunk) self.assertEqual(0, self.mock_comm.send.call_count)
def test_process_should_call_com_with_correct_posisitions(self): self.laser_control.set_laser_on() sample_data_chunk = numpy.array([(1, 1)]) micro_disseminator = MicroDisseminator(self.laser_control, self.mock_comm, 8000) micro_disseminator.process(sample_data_chunk) self.mock_comm.send.assert_called_with(MoveMessage(self.max_value, self.max_value, 255))
def test_process_should_call_com_with_move_when_laser_on(self): self.laser_control.set_laser_on() sample_data_chunk = numpy.array([(0, 0)]) micro_disseminator = MicroDisseminator(self.laser_control, self.mock_comm, 8000) micro_disseminator.process(sample_data_chunk) self.mock_comm.send.assert_called_with(MoveMessage(0, 0, 255))
def test_next_layer_does_nothing(self): micro_disseminator = MicroDisseminator(LaserControl(), MagicMock(), 8000) micro_disseminator.next_layer(7.7)
def test_samples_per_second_is_data_rate(self): expected_samples_per_second = 8000 micro_disseminator = MicroDisseminator(LaserControl(), MagicMock(), expected_samples_per_second) self.assertEquals(expected_samples_per_second, micro_disseminator.samples_per_second)