Fix getting temperatures

This commit is contained in:
fieldOfView 2017-11-13 10:44:49 +01:00
parent e0c37cc56e
commit 2d2b943d07

View file

@ -509,6 +509,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
## Listen thread function. ## Listen thread function.
def _listen(self): def _listen(self):
Logger.log("i", "Printer connection listen thread started for %s" % self._serial_port) Logger.log("i", "Printer connection listen thread started for %s" % self._serial_port)
container_stack = Application.getInstance().getGlobalContainerStack()
temperature_request_timeout = time.time() temperature_request_timeout = time.time()
ok_timeout = time.time() ok_timeout = time.time()
while self._connection_state == ConnectionState.connected: while self._connection_state == ConnectionState.connected:
@ -538,12 +539,14 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
self._setErrorState(line[6:]) self._setErrorState(line[6:])
elif b" T:" in line or line.startswith(b"T:"): # Temperature message elif b" T:" in line or line.startswith(b"T:"): # Temperature message
temperature_matches = re.findall(b"T(\d*):s?*([\d\.]+)\s?\/?([\d\.]+)?", line) temperature_matches = re.findall(b"T(\d*): ?([\d\.]+) ?\/?([\d\.]+)?", line)
temperature_set = False temperature_set = False
try: try:
for match in temperature_matches: for match in temperature_matches:
if match[0]: if match[0]:
extruder_nr = int(match[0]) extruder_nr = int(match[0])
if extruder_nr >= container_stack.getProperty("machine_extruder_count", "value"):
continue
if match[1]: if match[1]:
self._setHotendTemperature(extruder_nr, float(match[1])) self._setHotendTemperature(extruder_nr, float(match[1]))
temperature_set = True temperature_set = True
@ -555,18 +558,20 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
if requested_temperatures[1]: if requested_temperatures[1]:
self._setHotendTemperature(self._temperature_requested_extruder_index, float(requested_temperatures[1])) self._setHotendTemperature(self._temperature_requested_extruder_index, float(requested_temperatures[1]))
if requested_temperatures[2]: if requested_temperatures[2]:
self._updateTargetHotendTemperature(self._temperature_requested_extruder_index, float(requested_temperatures[1])) self._updateTargetHotendTemperature(self._temperature_requested_extruder_index, float(requested_temperatures[2]))
except: except:
Logger.log("w", "Could not parse hotend temperatures from response: %s", line) Logger.log("w", "Could not parse hotend temperatures from response: %s", line)
# Check if there's also a bed temperature # Check if there's also a bed temperature
temperature_matches = re.findall(b"B:\s?*([\d\.]+)\s?\/?([\d\.]+)?", line) temperature_matches = re.findall(b"B: ?([\d\.]+) ?\/?([\d\.]+)?", line)
try: if container_stack.getProperty("machine_heated_bed", "value") and len(temperature_matches) > 0:
if match[0]: match = temperature_matches[0]
self._setBedTemperature(float(match[0])) try:
if match[1]: if match[0]:
self._updateTargetBedTemperature(float(match[1])) self._setBedTemperature(float(match[0]))
except: if match[1]:
Logger.log("w", "Could not parse bed temperature from response: %s", line) self._updateTargetBedTemperature(float(match[1]))
except:
Logger.log("w", "Could not parse bed temperature from response: %s", line)
elif b"_min" in line or b"_max" in line: elif b"_min" in line or b"_max" in line:
tag, value = line.split(b":", 1) tag, value = line.split(b":", 1)