plus4的klipper版本

This commit is contained in:
whb0514
2024-09-02 13:37:34 +08:00
parent 653d7a8f6e
commit b90736975b
1006 changed files with 1195894 additions and 11114 deletions

View File

@@ -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")