runtime/PLCObject.py
changeset 2485 ef327451d067
parent 2463 8742337a9fe3
child 2486 44c2a4e2b84d
--- a/runtime/PLCObject.py	Tue Jan 29 09:14:47 2019 +0100
+++ b/runtime/PLCObject.py	Thu Jan 31 14:10:06 2019 +0100
@@ -99,6 +99,7 @@
         self.TraceThread = None
         self.TraceLock = Lock()
         self.Traces = []
+        self.DebugToken = 0
 
         self._init_blobs()
 
@@ -567,11 +568,13 @@
             pass
         return False
 
+    @RunInMain
     def SetTraceVariablesList(self, idxs):
         """
         Call ctype imported function to append
         these indexes to registred variables in PLC debugger
         """
+        self.DebugToken += 1
         if idxs:
             # suspend but dont disable
             if self._suspendDebug(False) == 0:
@@ -586,8 +589,10 @@
                     self._RegisterDebugVariable(idx, force)
                 self._TracesSwap()
                 self._resumeDebug()
+                return self.DebugToken
         else:
             self._suspendDebug(True)
+        return None
 
     def _TracesSwap(self):
         self.LastSwapTrace = time()
@@ -601,8 +606,11 @@
         return Traces
 
     @RunInMain
-    def GetTraceVariables(self):
-        return self.PLCStatus, self._TracesSwap()
+    def GetTraceVariables(self, DebugToken):
+        if (DebugToken is not None and
+            DebugToken == self.DebugToken):
+            return self.PLCStatus, self._TracesSwap()
+        return PlcStatus.Broken, []
 
     def TraceThreadProc(self):
         """