From: daid Date: Mon, 3 Feb 2014 14:22:59 +0000 (+0100) Subject: Improve serial communication. X-Git-Tag: 14.02-RC1~40 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=0535d5896d65aaeed145d9d09968da953d863738;p=cura.git Improve serial communication. --- diff --git a/Cura/gui/printWindow2.py b/Cura/gui/printWindow2.py index 8ce23b00..d421a1bb 100644 --- a/Cura/gui/printWindow2.py +++ b/Cura/gui/printWindow2.py @@ -259,10 +259,13 @@ class printWindow(wx.Frame): def __doPrinterConnectionUpdate(self, connection, extraInfo): t = time.time() - if self.lastUpdateTime + 0.5 > t: + if self.lastUpdateTime + 0.5 > t and extraInfo is None: return self.lastUpdateTime = t + if extraInfo is not None: + self._addTermLog(extraInfo) + self.UpdateButtonStates() if connection.isPrinting(): self.progress.SetValue(connection.getPrintProgress() * 1000) diff --git a/Cura/serialCommunication.py b/Cura/serialCommunication.py index 27ae9fc5..4a90d258 100644 --- a/Cura/serialCommunication.py +++ b/Cura/serialCommunication.py @@ -6,6 +6,7 @@ __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AG import sys import time import os +import json from Cura.util import machineCom @@ -20,7 +21,7 @@ class serialComm(object): sys.stdout.write('log:%s\n' % (message)) def mcTempUpdate(self, temp, bedTemp, targetTemp, bedTargetTemp): - sys.stdout.write('temp:%s\n' % str(temp)) + sys.stdout.write('temp:%s\n' % json.dumps(temp)) def mcStateChange(self, state): if self._comm is None: @@ -43,7 +44,7 @@ class serialComm(object): line = line.split(':', 1) if line[0] == 'STOP': self._comm.cancelPrint() - self._gcodeList = [] + self._gcodeList = ['M110'] elif line[0] == 'G': self._gcodeList.append(line[1]) elif line[0] == 'START': diff --git a/Cura/util/printerConnection/serialConnection.py b/Cura/util/printerConnection/serialConnection.py index 83cce9c4..45360d3d 100644 --- a/Cura/util/printerConnection/serialConnection.py +++ b/Cura/util/printerConnection/serialConnection.py @@ -6,6 +6,7 @@ import platform import os import sys import subprocess +import json from Cura.util import machineCom from Cura.util.printerConnection import printerConnectionBase @@ -22,7 +23,7 @@ class serialConnectionGroup(printerConnectionBase.printerConnectionGroup): self._connectionMap[port] = serialConnection(port) for key in self._connectionMap.keys(): if key not in serialList and not self._connectionMap[key].isActiveConnectionOpen(): - self._connectionMap[key] = None + self._connectionMap.pop(key) return self._connectionMap.values() def getIconID(self): @@ -39,6 +40,8 @@ class serialConnection(printerConnectionBase.printerConnectionBase): self._process = None self._thread = None + self._temperature = [] + self._lineCount = 0 self._commState = None self._commStateString = None @@ -115,6 +118,11 @@ class serialConnection(printerConnectionBase.printerConnectionBase): return False return self._commState == machineCom.MachineCom.STATE_OPERATIONAL or self._commState == machineCom.MachineCom.STATE_PRINTING or self._commState == machineCom.MachineCom.STATE_PAUSED + def getTemperature(self, extruder): + if extruder >= len(self._temperature): + return None + return self._temperature[extruder] + def _serialCommunicationThread(self): if platform.system() == "Darwin" and hasattr(sys, 'frozen'): cmdList = [os.path.join(os.path.dirname(sys.executable), 'Cura')] @@ -132,7 +140,11 @@ class serialConnection(printerConnectionBase.printerConnectionBase): if line[0] == 'log': pass elif line[0] == 'temp': - pass + line = line[1].split(':', 1) + self._temperature = json.loads(line[0]) + self._doCallback() + elif line[0] == 'message': + self._doCallback(line[1]) elif line[0] == 'state': line = line[1].split(':', 1) self._commState = int(line[0])