plugger.py
changeset 465 67d32a91d70b
parent 464 46dd4358e8a8
child 466 11263fd24566
--- a/plugger.py	Sun Dec 06 21:43:34 2009 +0100
+++ b/plugger.py	Sun Dec 06 22:52:51 2009 +0100
@@ -1602,6 +1602,9 @@
                 Idxs.sort()
                 self.TracedIECPath = zip(*Idxs)[2]
                 self._connector.SetTraceVariablesList(zip(*zip(*Idxs)[0:2]))
+            else:
+                self.TracedIECPath = []
+                self._connector.SetTraceVariablesList([])
             self.IECdebug_lock.release()
             
             #for IEC_path, IECdebug_data in self.IECdebug_datas.iteritems():
@@ -1727,6 +1730,13 @@
             self.logger.write_warning(_("Debug Thread couldn't be killed"))
         self.DebugThread = None
 
+    def _connect_debug(self): 
+        if self.AppFrame:
+            self.AppFrame.ResetGraphicViewers()
+        self.RegisterDebugVarToConnector()
+        self.DebugThread = Thread(target=self.DebugThreadProc)
+        self.DebugThread.start()
+    
     def _Run(self):
         """
         Start PLC
@@ -1734,11 +1744,7 @@
         if self.GetIECProgramsAndVariables():
             self._connector.StartPLC()
             self.logger.write(_("Starting PLC\n"))
-            if self.AppFrame:
-                self.AppFrame.ResetGraphicViewers()
-            self.RegisterDebugVarToConnector()
-            self.DebugThread = Thread(target=self.DebugThreadProc)
-            self.DebugThread.start()
+            self._connect_debug()
         else:
             self.logger.write_error(_("Couldn't start PLC !\n"))
         self.UpdateMethodsFromPLCStatus()
@@ -1830,6 +1836,13 @@
             
             # Start the status Timer
             self.StatusTimer.Start(milliseconds=500, oneShot=False)
+            
+            if self.previous_plcstate=="Started":
+                if self.DebugAvailable() and self.GetIECProgramsAndVariables():
+                    self.logger.write(_("Debug connect matching running PLC\n"))
+                    self._connect_debug()
+                else:
+                    self.logger.write_warning(_("Debug do not match PLC - stop/transfert/start to re-enable\n"))
 
     def CompareLocalAndRemotePLC(self):
         if self._connector is None:
@@ -1846,6 +1859,8 @@
                 self.logger.write(
                    _("Latest build matches target, no transfer needed.\n"))
                 self.EnableMethod("_Transfer", True)
+                # warns controller that program match
+                self.ProgramTransferred()
                 #self.EnableMethod("_Transfer", False)
         else:
             self.logger.write_warning(