mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-10 16:27:55 -06:00
heater: take a gcode_id when setting up a heater (#1028)
Allow an arbitrary gcode_id to be supplied during heater setup. This allows future extras to register additional IDs beyond B, and T#. Signed-off-by: John Jardine <john@gprime.net>
This commit is contained in:
parent
f4d323adbc
commit
f6c9150349
4 changed files with 35 additions and 27 deletions
|
@ -52,7 +52,7 @@ class GCodeParser:
|
|||
# G-Code state
|
||||
self.need_ack = False
|
||||
self.toolhead = self.fan = self.extruder = None
|
||||
self.heaters = []
|
||||
self.heater = None
|
||||
self.speed = 25.0
|
||||
self.axis2pos = {'X': 0, 'Y': 1, 'Z': 2, 'E': 3}
|
||||
def register_command(self, cmd, func, when_not_ready=False, desc=None):
|
||||
|
@ -130,6 +130,7 @@ class GCodeParser:
|
|||
self.is_printer_ready = True
|
||||
self.gcode_handlers = self.ready_gcode_handlers
|
||||
# Lookup printer components
|
||||
self.heater = self.printer.lookup_object('heater')
|
||||
self.toolhead = self.printer.lookup_object('toolhead')
|
||||
if self.move_transform is None:
|
||||
self.move_with_transform = self.toolhead.move
|
||||
|
@ -138,8 +139,6 @@ class GCodeParser:
|
|||
if extruders:
|
||||
self.extruder = extruders[0]
|
||||
self.toolhead.set_extruder(self.extruder)
|
||||
self.heaters = [ e.get_heater() for e in extruders ]
|
||||
self.heaters.append(self.printer.lookup_object('heater_bed', None))
|
||||
self.fan = self.printer.lookup_object('fan', None)
|
||||
if self.is_fileinput and self.fd_handle is None:
|
||||
self.fd_handle = self.reactor.register_fd(self.fd, self.process_data)
|
||||
|
@ -367,13 +366,11 @@ class GCodeParser:
|
|||
def get_temp(self, eventtime):
|
||||
# Tn:XXX /YYY B:XXX /YYY
|
||||
out = []
|
||||
for i, heater in enumerate(self.heaters):
|
||||
if heater is not None:
|
||||
cur, target = heater.get_temp(eventtime)
|
||||
name = "B"
|
||||
if i < len(self.heaters) - 1:
|
||||
name = "T%d" % (i,)
|
||||
out.append("%s:%.1f /%.1f" % (name, cur, target))
|
||||
if self.heater is not None:
|
||||
for heater in self.heater.get_all_heaters():
|
||||
if heater is not None:
|
||||
cur, target = heater.get_temp(eventtime)
|
||||
out.append("%s:%.1f /%.1f" % (heater.gcode_id, cur, target))
|
||||
if not out:
|
||||
return "T:0"
|
||||
return " ".join(out)
|
||||
|
@ -389,13 +386,12 @@ class GCodeParser:
|
|||
temp = self.get_float('S', params, 0.)
|
||||
heater = None
|
||||
if is_bed:
|
||||
heater = self.heaters[-1]
|
||||
heater = self.heater.get_heater_by_gcode_id('B')
|
||||
elif 'T' in params:
|
||||
index = self.get_int(
|
||||
'T', params, minval=0, maxval=len(self.heaters)-2)
|
||||
heater = self.heaters[index]
|
||||
elif self.extruder is not None:
|
||||
heater = self.extruder.get_heater()
|
||||
index = self.get_int('T', params, minval=0)
|
||||
heater = self.heater.get_heater_by_gcode_id('T%d' % (index,))
|
||||
else:
|
||||
heater = self.heater.get_heater_by_gcode_id('T0')
|
||||
if heater is None:
|
||||
if temp > 0.:
|
||||
self.respond_error("Heater not configured")
|
||||
|
@ -672,9 +668,10 @@ class GCodeParser:
|
|||
if self.is_printer_ready:
|
||||
self.toolhead.motor_off()
|
||||
print_time = self.toolhead.get_last_move_time()
|
||||
for heater in self.heaters:
|
||||
if heater is not None:
|
||||
heater.set_temp(print_time, 0.)
|
||||
if self.heater is not None:
|
||||
for heater in self.heater.get_all_heaters():
|
||||
if heater is not None:
|
||||
heater.set_temp(print_time, 0.)
|
||||
if self.fan is not None:
|
||||
self.fan.set_speed(print_time, 0.)
|
||||
self.toolhead.dwell(0.500)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue