示例#1
0
 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))
示例#2
0
 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)),
         ])
示例#3
0
    def _get_digital_disseminator(self, dry_run):

        return MicroDisseminator(self.laser_control,
                                 self._get_communicator(dry_run),
                                 self._configuration.circut.data_rate)
示例#4
0
    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()
示例#5
0
 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()
示例#6
0
 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)
示例#7
0
 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))
示例#8
0
 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))
示例#9
0
 def test_next_layer_does_nothing(self):
     micro_disseminator = MicroDisseminator(LaserControl(), MagicMock(), 8000)
     micro_disseminator.next_layer(7.7)
示例#10
0
 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)