chiark / gitweb /
Improve serial communication.
authordaid <daid303@gmail.com>
Mon, 3 Feb 2014 14:22:59 +0000 (15:22 +0100)
committerdaid <daid303@gmail.com>
Mon, 3 Feb 2014 14:22:59 +0000 (15:22 +0100)
Cura/gui/printWindow2.py
Cura/serialCommunication.py
Cura/util/printerConnection/serialConnection.py

index 8ce23b00cc7f5f8e3ee8ec4513a2f483c6819118..d421a1bbd396290c9ba3271184aa98743956318f 100644 (file)
@@ -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)
index 27ae9fc53e0bd8227d794b4e0c9b8ace99c3357d..4a90d2582c6f717fdddc146836b2b8d34ea99609 100644 (file)
@@ -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':
index 83cce9c41c6eb77be01d5f37999b7ef55a6007eb..45360d3d165fe849af94fbd1f18d23329086f13e 100644 (file)
@@ -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])