本文整理汇总了Python中infrastructure.controller.Controller.start方法的典型用法代码示例。如果您正苦于以下问题:Python Controller.start方法的具体用法?Python Controller.start怎么用?Python Controller.start使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类infrastructure.controller.Controller
的用法示例。
在下文中一共展示了Controller.start方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CalibrationAPI
# 需要导入模块: from infrastructure.controller import Controller [as 别名]
# 或者: from infrastructure.controller.Controller import start [as 别名]
class CalibrationAPI(object):
def __init__(self, configuration_manager, printer):
logging.info("Calibartion API Startup")
self._configuration_manager = configuration_manager
self._printer = printer
self._configuration = self._configuration_manager.load(self._printer)
self._point_generator = SinglePointGenerator()
self._alignment_generator = CalibrationLineGenerator()
self._test_patterns = {
'Hilbert Space Filling Curve' : HilbertGenerator(),
'Square' : SquareGenerator(),
'Circle' : CircleGenerator(),
'Spiral' : SpiralGenerator(),
}
self._current_generator = self._point_generator
self._laser_control = AudioModulationLaserControl(
self._configuration['output_sample_frequency'],
self._configuration['on_modulation_frequency'],
self._configuration['off_modulation_frequency']
)
transformer = TuningTransformer(scale = self._configuration["max_deflection"])
self._path_to_audio= PathToAudio(
self._laser_control.actual_samples_per_second,
transformer,
self._configuration["laser_thickness_mm"]
)
self._audio_writer = None
self._controller = None
logging.debug("Setting up audiowriter")
self._audio_writer = AudioWriter(
self._configuration['output_sample_frequency'],
self._configuration['output_bit_depth'],
)
self._current_generator = self._point_generator
self._controller = Controller(
self._laser_control,
self._path_to_audio,
self._audio_writer,
self._current_generator,
)
self.make_pattern_fit()
self._controller.start()
'''Used to show a single point with no calibration applied'''
def show_point(self,xyz = [0.5,0.5,0.5]):
x,y,z = xyz
self._point_generator.xy = [x,y]
if (self._current_generator != self._point_generator):
self._unapply_calibration()
self._update_generator(self._point_generator)
'''Used to show a single line on one axis used to line up calibration grid'''
def show_line(self):
self._unapply_calibration()
self._update_generator(self._alignment_generator)
def get_max_deflection(self):
return self._configuration['max_deflection']
def set_max_deflection(self, deflection):
self._configuration['max_deflection'] = deflection
self._unapply_calibration()
self._configuration_manager.save(self._configuration)
'''Used to show a test pattern with calibration applied'''
def show_test_pattern(self,pattern):
if pattern in self._test_patterns.keys():
self._apply_calibration()
self._update_generator(self._test_patterns[pattern])
else:
logging.error('Pattern: %s does not exist' % pattern)
raise Exception('Pattern: %s does not exist' % pattern)
'''Shows the scale square'''
def show_scale(self):
self._unapply_calibration()
self._update_generator(self._test_patterns['Square'])
'''returns a list of test patterns'''
def get_test_patterns(self):
return self._test_patterns.keys()
'''Returns the current calibration for the printer'''
def current_calibration(self):
return self._configuration['calibration_data']
'''Saves the suppliled calibration'''
def save(self, calibration):
if not self.validate(calibration):
raise Exception('Bad Calibration %s ' % calibration)
self._configuration['calibration_data'] = calibration
logging.debug("Saving calibration: %s" % calibration)
self._configuration_manager.save(self._configuration)
self.make_pattern_fit() #TODO make this better.
#deprecated
def make_pattern_fit(self):
#.........这里部分代码省略.........
示例2: PrintAPI
# 需要导入模块: from infrastructure.controller import Controller [as 别名]
# 或者: from infrastructure.controller.Controller import start [as 别名]
class PrintAPI(object):
def __init__(self, configuration, status_call_back = None):
logging.info("Print API Startup")
self._configuration = configuration
self._controller = None
self._status_call_back = status_call_back
def print_gcode(self, file_like_object, print_sub_layers = True, dry_run = False):
gcode_reader = GCodeReader(file_like_object)
gcode_layer_generator = gcode_reader.get_layers()
if print_sub_layers:
layer_generator = SubLayerGenerator(gcode_layer_generator, self._configuration.options.sublayer_height_mm)
else:
layer_generator = gcode_layer_generator
self.print_layers(layer_generator, dry_run)
def _get_zaxis(self):
if self._configuration.dripper.dripper_type == 'audio':
return AudioDripZAxis(
self._configuration.dripper.drips_per_mm,
self._configuration.audio.input.sample_rate,
self._configuration.audio.input.bit_depth,
self._commander,
self._configuration.serial.on_command,
self._configuration.serial.off_command
)
elif self._configuration.dripper.dripper_type == 'emulated':
return TimedDripZAxis(
self._configuration.dripper.drips_per_mm,
drips_per_second = self._configuration.dripper.emulated_drips_per_second
)
def print_layers(self, layer_generator, dry_run = False):
if self._configuration.serial.on:
self._commander = SerialCommander( self._configuration.serial.port )
else:
self._commander = NullCommander()
laser_control = AudioModulationLaserControl(
self._configuration.audio.output.sample_rate,
self._configuration.audio.output.modulation_on_frequency,
self._configuration.audio.output.modulation_off_frequency,
self._configuration.options.laser_offset
)
transformer = HomogenousTransformer(
self._configuration.calibration.max_deflection,
self._configuration.calibration.height,
self._configuration.calibration.lower_points,
self._configuration.calibration.upper_points,
)
path_to_audio = PathToAudio(
laser_control.actual_samples_per_second,
transformer,
self._configuration.options.laser_thickness_mm
)
if dry_run:
audio_writer = None
self.zaxis = None
zaxis_control = None
abort_on_error = False
else:
audio_writer = AudioWriter(
self._configuration.audio.output.sample_rate,
self._configuration.audio.output.bit_depth,
)
self.zaxis = self._get_zaxis()
abort_on_error = True
self._controller = Controller(
laser_control,
path_to_audio,
audio_writer,
layer_generator,
zaxis = self.zaxis,
status_call_back = self._status_call_back,
max_lead_distance = self._configuration.dripper.max_lead_distance_mm,
abort_on_error = abort_on_error
)
self._controller.start()
def get_status(self):
return self._controller.get_status()
def can_set_drips_per_second(self):
if getattr(self.zaxis, 'set_drips_per_second', False):
return True
else:
return False
def set_drips_per_second(self, drips_per_second):
if getattr(self.zaxis, 'set_drips_per_second', False):
self.zaxis.set_drips_per_second(drips_per_second)
else:
logging.error('Cannot change drips per second on %s' % type(self.zaxis))
raise Exception('Cannot change drips per second on %s' % type(self.zaxis))
def get_drips_per_second(self):
if getattr(self.zaxis, 'get_drips_per_second'):
return self.zaxis.get_drips_per_second()
else:
#.........这里部分代码省略.........
示例3: ControllerTests
# 需要导入模块: from infrastructure.controller import Controller [as 别名]
# 或者: from infrastructure.controller.Controller import start [as 别名]
class ControllerTests(unittest.TestCase):
controller = None
def wait_for_controller(self):
while self.controller.starting or self.controller.running:
time.sleep(0.01)
def tearDown(self):
if self.controller and self.controller.is_alive():
self.controller.stop()
def test_should_turn_on_laser_for_draw_commands(self, mock_LayerGenerator,mock_AudioWriter,mock_PathToAudio,mock_ZAxis,mock_LaserControl):
mock_laser_control = mock_LaserControl.return_value
mock_path_to_audio = mock_PathToAudio.return_value
mock_audio_writer = mock_AudioWriter.return_value
test_layer = Layer(0.0,[ LateralDraw([0.0,0.0],[2.0,2.0],100.0) ])
stub_layer_generator = StubLayerGenerator([test_layer])
mock_path_to_audio.process.return_value = "SomeAudio"
mock_laser_control.modulate.return_value = "SomeModulatedAudio"
self.controller = Controller(mock_laser_control,mock_path_to_audio,mock_audio_writer,stub_layer_generator)
self.controller.start()
self.wait_for_controller()
self.assertEqual(1,mock_laser_control.set_laser_on.call_count)
def test_should_work_with_no_writer(self, mock_LayerGenerator,mock_AudioWriter,mock_PathToAudio,mock_ZAxis,mock_LaserControl):
mock_laser_control = mock_LaserControl.return_value
mock_path_to_audio = mock_PathToAudio.return_value
test_layer = Layer(0.0,[ LateralDraw([0.0,0.0],[2.0,2.0],100.0) ])
stub_layer_generator = StubLayerGenerator([test_layer])
mock_path_to_audio.process.return_value = "SomeAudio"
mock_laser_control.modulate.return_value = "SomeModulatedAudio"
self.controller = Controller(mock_laser_control,mock_path_to_audio,None,stub_layer_generator)
self.controller.start()
self.wait_for_controller()
def test_should_turn_off_laser_for_move_commands(self, mock_LayerGenerator,mock_AudioWriter,mock_PathToAudio,mock_ZAxis,mock_LaserControl):
mock_laser_control = mock_LaserControl.return_value
mock_path_to_audio = mock_PathToAudio.return_value
mock_audio_writer = mock_AudioWriter.return_value
test_layer = Layer(0.0,[ LateralMove([0.0,0.0],[2.0,2.0],100.0) ])
stub_layer_generator = StubLayerGenerator([test_layer])
mock_path_to_audio.process.return_value = "SomeAudio"
mock_laser_control.modulate.return_value = "SomeModulatedAudio"
self.controller = Controller(mock_laser_control,mock_path_to_audio,mock_audio_writer,stub_layer_generator)
self.controller.start()
self.wait_for_controller()
self.assertEqual(1,mock_laser_control.set_laser_off.call_count)
self.assertEqual(0,mock_laser_control.set_laser_on.call_count)
def test_should_output_modulate_audio_for_movement_commands(self, mock_LayerGenerator,mock_AudioWriter,mock_PathToAudio,mock_ZAxis,mock_LaserControl):
mock_laser_control = mock_LaserControl.return_value
mock_path_to_audio = mock_PathToAudio.return_value
mock_audio_writer = mock_AudioWriter.return_value
test_layer = Layer(0.0,[ LateralDraw([0.0,0.0],[2.0,2.0],2.0) ])
stub_layer_generator = StubLayerGenerator([test_layer])
mock_path_to_audio.process.return_value = "SomeAudio"
mock_laser_control.modulate.return_value = "SomeModulatedAudio"
self.controller = Controller(mock_laser_control,mock_path_to_audio,mock_audio_writer,stub_layer_generator)
self.controller.start()
self.wait_for_controller()
mock_laser_control.modulate.assert_called_with("SomeAudio")
mock_audio_writer.write_chunk.assert_called_with("SomeModulatedAudio")
def test_should_call_path_to_audio_with_xyz(self, mock_LayerGenerator,mock_AudioWriter,mock_PathToAudio,mock_ZAxis,mock_LaserControl):
mock_laser_control = mock_LaserControl.return_value
mock_path_to_audio = mock_PathToAudio.return_value
mock_audio_writer = mock_AudioWriter.return_value
test_layer = Layer(0.0,[ LateralDraw([0.0,0.0],[2.0,2.0],2.0) ])
stub_layer_generator = StubLayerGenerator([test_layer])
mock_path_to_audio.process.return_value = "SomeAudio"
mock_laser_control.modulate.return_value = "SomeModulatedAudio"
self.controller = Controller(mock_laser_control,mock_path_to_audio,mock_audio_writer,stub_layer_generator)
self.controller.start()
self.wait_for_controller()
mock_path_to_audio.process.assert_called_with([0.0,0.0,0.0],[2.0,2.0,0.0],2.0)
def test_should_remember_current_posisition(self, mock_LayerGenerator,mock_AudioWriter,mock_PathToAudio,mock_ZAxis,mock_LaserControl):
mock_laser_control = mock_LaserControl.return_value
mock_path_to_audio = mock_PathToAudio.return_value
mock_audio_writer = mock_AudioWriter.return_value
test_layer = Layer(0.0,[ LateralDraw([0.0,0.0],[2.0,2.0],2.0), LateralDraw([2.0,2.0],[-1.0,-1.0],2.0) ])
stub_layer_generator = StubLayerGenerator([test_layer])
mock_path_to_audio.process.return_value = "SomeAudio"
mock_laser_control.modulate.return_value = "SomeModulatedAudio"
#.........这里部分代码省略.........
示例4: PrintAPI
# 需要导入模块: from infrastructure.controller import Controller [as 别名]
# 或者: from infrastructure.controller.Controller import start [as 别名]
class PrintAPI(object):
def __init__(self, configuration, status_call_back = None):
logging.info("Print API Startup")
self._configuration = configuration
self._controller = None
self._status_call_back = status_call_back
def print_gcode(self, file_like_object, print_sub_layers = True, dry_run = False):
gcode_reader = GCodeReader(file_like_object)
gcode_layer_generator = gcode_reader.get_layers()
if print_sub_layers:
layer_generator = SubLayerGenerator(gcode_layer_generator, self._configuration['sublayer_height_mm'])
else:
layer_generator = gcode_layer_generator
self.print_layers(layer_generator, dry_run)
def print_layers(self, layer_generator, dry_run = False):
laser_control = AudioModulationLaserControl(
self._configuration['output_sample_frequency'],
self._configuration['on_modulation_frequency'],
self._configuration['off_modulation_frequency']
)
transformer = HomogenousTransformer(self._configuration['calibration_data'], scale = self._configuration["max_deflection"])
path_to_audio = PathToAudio(
laser_control.actual_samples_per_second,
transformer,
self._configuration['laser_thickness_mm']
)
if dry_run:
audio_writer = None
zaxis = None
zaxis_control = None
abort_on_error = False
else:
audio_writer = AudioWriter(
self._configuration['output_sample_frequency'],
self._configuration['output_bit_depth'],
)
zaxis = DripBasedZAxis(
drips_per_mm = self._configuration['drips_per_mm'],
initial_height = 0.0,
sample_rate = self._configuration['input_sample_frequency'],
bit_depth = self._configuration['input_bit_depth'],
)
if self._configuration['use_serial_zaxis']:
zaxis_control = SerialZAxisControl(
self._configuration['serial_port'],
on_command = self._configuration['serial_on'],
off_command = self._configuration['serial_off']
)
else:
zaxis_control = None
abort_on_error = True
self._controller = Controller(
laser_control,
path_to_audio,
audio_writer,
layer_generator,
zaxis = zaxis,
zaxis_control = zaxis_control,
status_call_back = self._status_call_back,
max_lead_distance = self._configuration['max_lead_distance_mm'],
abort_on_error = abort_on_error
)
self._controller.start()
def get_status(self):
return self._controller.get_status()
def verify_gcode(self, g_code_file_like_object):
self.print_gcode(g_code_file_like_object, dry_run = True)
def stop(self):
if self._controller:
self._controller.stop()
else:
logging.warning('Stopped before printing')