ProjectController.py
changeset 911 ffa24427396a
parent 906 de452d65865c
child 914 94436558f0ce
--- a/ProjectController.py	Thu Jan 24 17:44:44 2013 +1100
+++ b/ProjectController.py	Tue Jan 29 16:21:01 2013 +1100
@@ -113,7 +113,7 @@
         self.DebugThread = None
         self.debug_break = False
         self.previous_plcstate = None
-        self.previous_log_count = -1
+        self.previous_log_count = None
         # copy ConfNodeMethods so that it can be later customized
         self.StatusMethods = [dic.copy() for dic in self.StatusMethods]
 
@@ -1077,11 +1077,26 @@
         self._builder = None
         self.CompareLocalAndRemotePLC()
 
-    ############# Real PLC object access #############
+    def UpdatePLCLog(self, log_count):
+        if log_count and self.previous_log_count != log_count:
+            #self.logger.write("Now log count is "+repr(log_count)+"\n")
+            to_console = ['']
+            for msgidx in xrange(log_count-1, self.previous_log_count - 1 if self.previous_log_count is not None else 0,-1): 
+                msg = self._connector.GetLogMessage(msgidx)
+                if msg is not None :
+                    to_console.insert(0, '#' + repr(msgidx) + ": " + msg)
+                else:
+                    #self.logger.write(repr(msgidx) + " : GetLogMessage returned None\n")
+                    to_console.insert(0, 'No log before #'+repr(msgidx))
+                    break;
+            self.logger.write("\n".join(to_console))
+            self.previous_log_count = log_count
+
     def UpdateMethodsFromPLCStatus(self):
         status = None
         if self._connector is not None:
             status, log_count = self._connector.GetPLCstatus()
+            self.UpdatePLCLog(log_count)
         if status is None:
             self._connector = None
             status = "Disconnected"
@@ -1103,9 +1118,6 @@
                 self.ShowMethod(*args)
             self.previous_plcstate = status
             return True
-        if(self.previous_log_count != log_count):
-            self.logger.write("Now log count is %d"%log_count)
-            self.previous_log_count = log_count
         return False
     
     def PullPLCStatusProc(self, event):