mirror of
https://github.com/QIDITECH/klipper.git
synced 2026-02-04 01:48:43 +03:00
plus4的klipper版本
This commit is contained in:
@@ -11,12 +11,16 @@ class ExtruderStepper:
|
||||
self.printer = config.get_printer()
|
||||
self.name = config.get_name().split()[-1]
|
||||
self.pressure_advance = self.pressure_advance_smooth_time = 0.
|
||||
self.config_pa = config.getfloat('pressure_advance', 0., minval=0.)
|
||||
self.config_smooth_time = config.getfloat(
|
||||
'pressure_advance_smooth_time', 0.040, above=0., maxval=.200)
|
||||
# Setup stepper
|
||||
self.stepper = stepper.PrinterStepper(config)
|
||||
ffi_main, ffi_lib = chelper.get_ffi()
|
||||
self.sk_extruder = ffi_main.gc(ffi_lib.extruder_stepper_alloc(),
|
||||
ffi_lib.free)
|
||||
self.stepper.set_stepper_kinematics(self.sk_extruder)
|
||||
self.motion_queue = None
|
||||
# Register commands
|
||||
self.printer.register_event_handler("klippy:connect",
|
||||
self._handle_connect)
|
||||
@@ -43,9 +47,11 @@ class ExtruderStepper:
|
||||
def _handle_connect(self):
|
||||
toolhead = self.printer.lookup_object('toolhead')
|
||||
toolhead.register_step_generator(self.stepper.generate_steps)
|
||||
self._set_pressure_advance(self.config_pa, self.config_smooth_time)
|
||||
def get_status(self, eventtime):
|
||||
return {'pressure_advance': self.pressure_advance,
|
||||
'smooth_time': self.pressure_advance_smooth_time}
|
||||
'smooth_time': self.pressure_advance_smooth_time,
|
||||
'motion_queue': self.motion_queue}
|
||||
def find_past_position(self, print_time):
|
||||
mcu_pos = self.stepper.get_past_mcu_position(print_time)
|
||||
return self.stepper.mcu_to_commanded_position(mcu_pos)
|
||||
@@ -54,6 +60,7 @@ class ExtruderStepper:
|
||||
toolhead.flush_step_generation()
|
||||
if not extruder_name:
|
||||
self.stepper.set_trapq(None)
|
||||
self.motion_queue = None
|
||||
return
|
||||
extruder = self.printer.lookup_object(extruder_name, None)
|
||||
if extruder is None or not isinstance(extruder, PrinterExtruder):
|
||||
@@ -61,6 +68,7 @@ class ExtruderStepper:
|
||||
% (extruder_name,))
|
||||
self.stepper.set_position([extruder.last_position, 0., 0.])
|
||||
self.stepper.set_trapq(extruder.get_trapq())
|
||||
self.motion_queue = extruder_name
|
||||
def _set_pressure_advance(self, pressure_advance, smooth_time):
|
||||
old_smooth_time = self.pressure_advance_smooth_time
|
||||
if not self.pressure_advance:
|
||||
@@ -123,7 +131,8 @@ class ExtruderStepper:
|
||||
def cmd_SYNC_EXTRUDER_MOTION(self, gcmd):
|
||||
ename = gcmd.get('MOTION_QUEUE')
|
||||
self.sync_to_extruder(ename)
|
||||
gcmd.respond_info("Extruder stepper now syncing with '%s'" % (ename,))
|
||||
gcmd.respond_info("Extruder '%s' now syncing with '%s'"
|
||||
% (self.name, ename))
|
||||
cmd_SET_E_STEP_DISTANCE_help = "Set extruder step distance"
|
||||
def cmd_SET_E_STEP_DISTANCE(self, gcmd):
|
||||
step_dist = gcmd.get_float('DISTANCE', None, above=0.)
|
||||
@@ -140,7 +149,8 @@ class ExtruderStepper:
|
||||
def cmd_SYNC_STEPPER_TO_EXTRUDER(self, gcmd):
|
||||
ename = gcmd.get('EXTRUDER')
|
||||
self.sync_to_extruder(ename)
|
||||
gcmd.respond_info("Extruder stepper now syncing with '%s'" % (ename,))
|
||||
gcmd.respond_info("Extruder '%s' now syncing with '%s'"
|
||||
% (self.name, ename))
|
||||
|
||||
# Tracking for hotend heater, extrusion motion queue, and extruder stepper
|
||||
class PrinterExtruder:
|
||||
@@ -192,10 +202,6 @@ class PrinterExtruder:
|
||||
or config.get('rotation_distance', None) is not None):
|
||||
self.extruder_stepper = ExtruderStepper(config)
|
||||
self.extruder_stepper.stepper.set_trapq(self.trapq)
|
||||
pa = config.getfloat('pressure_advance', 0., minval=0.)
|
||||
smooth_time = config.getfloat('pressure_advance_smooth_time',
|
||||
0.040, above=0., maxval=.200)
|
||||
self.extruder_stepper._set_pressure_advance(pa, smooth_time)
|
||||
# Register commands
|
||||
gcode = self.printer.lookup_object('gcode')
|
||||
if self.name == 'extruder':
|
||||
@@ -205,8 +211,8 @@ class PrinterExtruder:
|
||||
gcode.register_mux_command("ACTIVATE_EXTRUDER", "EXTRUDER",
|
||||
self.name, self.cmd_ACTIVATE_EXTRUDER,
|
||||
desc=self.cmd_ACTIVATE_EXTRUDER_help)
|
||||
def update_move_time(self, flush_time):
|
||||
self.trapq_finalize_moves(self.trapq, flush_time)
|
||||
def update_move_time(self, flush_time, clear_history_time):
|
||||
self.trapq_finalize_moves(self.trapq, flush_time, clear_history_time)
|
||||
def get_status(self, eventtime):
|
||||
sts = self.heater.get_status(eventtime)
|
||||
sts['can_extrude'] = self.heater.can_extrude
|
||||
@@ -307,7 +313,7 @@ class PrinterExtruder:
|
||||
class DummyExtruder:
|
||||
def __init__(self, printer):
|
||||
self.printer = printer
|
||||
def update_move_time(self, flush_time):
|
||||
def update_move_time(self, flush_time, clear_history_time):
|
||||
pass
|
||||
def check_move(self, move):
|
||||
raise move.move_error("Extrude when no extruder present")
|
||||
|
||||
Reference in New Issue
Block a user