From 26a2fb80dc079f1d61d625bd9842e2a39f91b2bc Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 19 Apr 2017 15:01:47 +0200 Subject: [PATCH 1/2] Only update the target bed temperature, without submitting it to the printer. To prevent race conditions. --- .../UM3NetworkPrinting/NetworkPrinterOutputDevice.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 0dd31652ce..9b07b2bf0b 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -294,6 +294,15 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): put_request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") self._manager.put(put_request, data.encode()) + ## Updates the target bed temperature from the printer, and emit a signal if it was changed. + # + # /param temperature The new target temperature of the bed. + def _updateTargetBedTemperature(self, temperature): + if self._target_bed_temperature == temperature: + return + self._target_bed_temperature = temperature + self.targetBedTemperatureChanged.emit() + def _stopCamera(self): self._camera_timer.stop() if self._image_reply: @@ -528,7 +537,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): bed_temperature = self._json_printer_state["bed"]["temperature"]["current"] self._setBedTemperature(bed_temperature) target_bed_temperature = self._json_printer_state["bed"]["temperature"]["target"] - self._setTargetBedTemperature(target_bed_temperature) + self._updateTargetBedTemperature(target_bed_temperature) head_x = self._json_printer_state["heads"][0]["position"]["x"] head_y = self._json_printer_state["heads"][0]["position"]["y"] From 50acaaf91f20b396b4df573b5ca09a69605b2954 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 20 Apr 2017 09:35:48 +0200 Subject: [PATCH 2/2] Some minor changes on review. --- plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 9b07b2bf0b..459de3248d 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -283,10 +283,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): # # /param temperature The new target temperature of the bed. def _setTargetBedTemperature(self, temperature): - if self._target_bed_temperature == temperature: + if not self._updateTargetBedTemperature(temperature): return - self._target_bed_temperature = temperature - self.targetBedTemperatureChanged.emit() url = QUrl("http://" + self._address + self._api_prefix + "printer/bed/temperature/target") data = str(temperature) @@ -297,11 +295,13 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): ## Updates the target bed temperature from the printer, and emit a signal if it was changed. # # /param temperature The new target temperature of the bed. + # /return boolean, True if the temperature was changed, false if the new temperature has the same value as the already stored temperature def _updateTargetBedTemperature(self, temperature): if self._target_bed_temperature == temperature: - return + return False self._target_bed_temperature = temperature self.targetBedTemperatureChanged.emit() + return True def _stopCamera(self): self._camera_timer.stop()