ProjectController.py
changeset 906 de452d65865c
parent 902 ffa8ee5ee2fe
child 911 ffa24427396a
equal deleted inserted replaced
905:eaa1d3a4b52b 906:de452d65865c
   111         self.ProjectPath = None
   111         self.ProjectPath = None
   112         self._setBuildPath(None)
   112         self._setBuildPath(None)
   113         self.DebugThread = None
   113         self.DebugThread = None
   114         self.debug_break = False
   114         self.debug_break = False
   115         self.previous_plcstate = None
   115         self.previous_plcstate = None
       
   116         self.previous_log_count = -1
   116         # copy ConfNodeMethods so that it can be later customized
   117         # copy ConfNodeMethods so that it can be later customized
   117         self.StatusMethods = [dic.copy() for dic in self.StatusMethods]
   118         self.StatusMethods = [dic.copy() for dic in self.StatusMethods]
   118 
   119 
   119     def LoadLibraries(self):
   120     def LoadLibraries(self):
   120         self.Libraries = []
   121         self.Libraries = []
  1076         self._builder = None
  1077         self._builder = None
  1077         self.CompareLocalAndRemotePLC()
  1078         self.CompareLocalAndRemotePLC()
  1078 
  1079 
  1079     ############# Real PLC object access #############
  1080     ############# Real PLC object access #############
  1080     def UpdateMethodsFromPLCStatus(self):
  1081     def UpdateMethodsFromPLCStatus(self):
  1081         # Get PLC state : Running or Stopped
       
  1082         # TODO : use explicit status instead of boolean
       
  1083         status = None
  1082         status = None
  1084         if self._connector is not None:
  1083         if self._connector is not None:
  1085             status = self._connector.GetPLCstatus()
  1084             status, log_count = self._connector.GetPLCstatus()
  1086         if status is None:
  1085         if status is None:
  1087             self._connector = None
  1086             self._connector = None
  1088             status = "Disconnected"
  1087             status = "Disconnected"
  1089         if(self.previous_plcstate != status):
  1088         if(self.previous_plcstate != status):
  1090             for args in {
  1089             for args in {
  1102                                       ("_Disconnect", False)],
  1101                                       ("_Disconnect", False)],
  1103                    }.get(status,[]):
  1102                    }.get(status,[]):
  1104                 self.ShowMethod(*args)
  1103                 self.ShowMethod(*args)
  1105             self.previous_plcstate = status
  1104             self.previous_plcstate = status
  1106             return True
  1105             return True
       
  1106         if(self.previous_log_count != log_count):
       
  1107             self.logger.write("Now log count is %d"%log_count)
       
  1108             self.previous_log_count = log_count
  1107         return False
  1109         return False
  1108     
  1110     
  1109     def PullPLCStatusProc(self, event):
  1111     def PullPLCStatusProc(self, event):
  1110         if self._connector is None:
  1112         if self._connector is None:
  1111             self.StatusTimer.Stop()
  1113             self.StatusTimer.Stop()
  1275         self.debug_break = False
  1277         self.debug_break = False
  1276         debug_getvar_retry = 0
  1278         debug_getvar_retry = 0
  1277         while (not self.debug_break) and (self._connector is not None):
  1279         while (not self.debug_break) and (self._connector is not None):
  1278             Trace = self._connector.GetTraceVariables()
  1280             Trace = self._connector.GetTraceVariables()
  1279             if(Trace):
  1281             if(Trace):
  1280                 plc_status, debug_tick, debug_vars = Trace
  1282                 plc_status, log_count, debug_tick, debug_vars = Trace
  1281             else:
  1283             else:
  1282                 plc_status = None
  1284                 plc_status = None
  1283             debug_getvar_retry += 1
  1285             debug_getvar_retry += 1
  1284             #print debug_tick, debug_vars
  1286             #print debug_tick, debug_vars
  1285             if plc_status == "Started":
  1287             if plc_status == "Started":