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 self.previous_log_count = None |
117 # copy ConfNodeMethods so that it can be later customized |
117 # copy ConfNodeMethods so that it can be later customized |
118 self.StatusMethods = [dic.copy() for dic in self.StatusMethods] |
118 self.StatusMethods = [dic.copy() for dic in self.StatusMethods] |
119 |
119 |
120 def LoadLibraries(self): |
120 def LoadLibraries(self): |
121 self.Libraries = [] |
121 self.Libraries = [] |
1075 self.EnableMethod("_Clean", False) |
1075 self.EnableMethod("_Clean", False) |
1076 # kill the builder |
1076 # kill the builder |
1077 self._builder = None |
1077 self._builder = None |
1078 self.CompareLocalAndRemotePLC() |
1078 self.CompareLocalAndRemotePLC() |
1079 |
1079 |
1080 ############# Real PLC object access ############# |
1080 def UpdatePLCLog(self, log_count): |
|
1081 if log_count and self.previous_log_count != log_count: |
|
1082 #self.logger.write("Now log count is "+repr(log_count)+"\n") |
|
1083 to_console = [''] |
|
1084 for msgidx in xrange(log_count-1, self.previous_log_count - 1 if self.previous_log_count is not None else 0,-1): |
|
1085 msg = self._connector.GetLogMessage(msgidx) |
|
1086 if msg is not None : |
|
1087 to_console.insert(0, '#' + repr(msgidx) + ": " + msg) |
|
1088 else: |
|
1089 #self.logger.write(repr(msgidx) + " : GetLogMessage returned None\n") |
|
1090 to_console.insert(0, 'No log before #'+repr(msgidx)) |
|
1091 break; |
|
1092 self.logger.write("\n".join(to_console)) |
|
1093 self.previous_log_count = log_count |
|
1094 |
1081 def UpdateMethodsFromPLCStatus(self): |
1095 def UpdateMethodsFromPLCStatus(self): |
1082 status = None |
1096 status = None |
1083 if self._connector is not None: |
1097 if self._connector is not None: |
1084 status, log_count = self._connector.GetPLCstatus() |
1098 status, log_count = self._connector.GetPLCstatus() |
|
1099 self.UpdatePLCLog(log_count) |
1085 if status is None: |
1100 if status is None: |
1086 self._connector = None |
1101 self._connector = None |
1087 status = "Disconnected" |
1102 status = "Disconnected" |
1088 if(self.previous_plcstate != status): |
1103 if(self.previous_plcstate != status): |
1089 for args in { |
1104 for args in { |
1101 ("_Disconnect", False)], |
1116 ("_Disconnect", False)], |
1102 }.get(status,[]): |
1117 }.get(status,[]): |
1103 self.ShowMethod(*args) |
1118 self.ShowMethod(*args) |
1104 self.previous_plcstate = status |
1119 self.previous_plcstate = status |
1105 return True |
1120 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 |
|
1109 return False |
1121 return False |
1110 |
1122 |
1111 def PullPLCStatusProc(self, event): |
1123 def PullPLCStatusProc(self, event): |
1112 if self._connector is None: |
1124 if self._connector is None: |
1113 self.StatusTimer.Stop() |
1125 self.StatusTimer.Stop() |