1492 for IECPath,value in zip(self.TracedIECPath, debug_vars): |
1492 for IECPath,value in zip(self.TracedIECPath, debug_vars): |
1493 if value is not None: |
1493 if value is not None: |
1494 data_tuple = self.IECdebug_datas.get(IECPath, None) |
1494 data_tuple = self.IECdebug_datas.get(IECPath, None) |
1495 if data_tuple is not None: |
1495 if data_tuple is not None: |
1496 WeakCallableDict, data_log, status = data_tuple |
1496 WeakCallableDict, data_log, status = data_tuple |
1497 data_log.append((debug_tick, value)) |
1497 #data_log.append((debug_tick, value)) |
1498 for weakcallable,(args,kwargs) in WeakCallableDict.iteritems(): |
1498 for weakcallable,(args,kwargs) in WeakCallableDict.iteritems(): |
1499 # delegate call to wx event loop |
1499 # delegate call to wx event loop |
1500 #print weakcallable, value, args, kwargs |
1500 #print weakcallable, value, args, kwargs |
1501 if getattr(weakcallable, "SetValue", None) is not None: |
1501 if getattr(weakcallable, "SetValue", None) is not None: |
1502 wx.CallAfter(weakcallable.SetValue, value, *args, **kwargs) |
1502 wx.CallAfter(weakcallable.SetValue, value, *args, **kwargs) |
1529 Start PLC (Debug Mode) |
1529 Start PLC (Debug Mode) |
1530 """ |
1530 """ |
1531 if self.GetIECProgramsAndVariables() and \ |
1531 if self.GetIECProgramsAndVariables() and \ |
1532 self._connector.StartPLC(debug=True): |
1532 self._connector.StartPLC(debug=True): |
1533 self.logger.write("Starting PLC (debug mode)\n") |
1533 self.logger.write("Starting PLC (debug mode)\n") |
1534 self.TracedIECPath = [] |
|
1535 if self.PLCDebug is None: |
1534 if self.PLCDebug is None: |
1536 self.RefreshPluginsBlockLists() |
1535 self.RefreshPluginsBlockLists() |
1537 def _onclose(): |
1536 def _onclose(): |
1538 self.PLCDebug = None |
1537 self.PLCDebug = None |
1539 self.PLCDebug = PLCOpenEditor(self.AppFrame, self, debug=True) |
1538 self.PLCDebug = PLCOpenEditor(self.AppFrame, self, debug=True) |
1540 self.PLCDebug._onclose = _onclose |
1539 self.PLCDebug._onclose = _onclose |
1541 self.PLCDebug.Show() |
1540 self.PLCDebug.Show() |
|
1541 else: |
|
1542 self.PLCDebug.ResetGraphicViewers() |
1542 self.DebugThread = Thread(target=self.DebugThreadProc) |
1543 self.DebugThread = Thread(target=self.DebugThreadProc) |
1543 self.DebugThread.start() |
1544 self.DebugThread.start() |
1544 else: |
1545 else: |
1545 self.logger.write_error("Couldn't start PLC debug !\n") |
1546 self.logger.write_error("Couldn't start PLC debug !\n") |
1546 self.UpdateMethodsFromPLCStatus() |
1547 self.UpdateMethodsFromPLCStatus() |
1676 builder = self.GetBuilder() |
1677 builder = self.GetBuilder() |
1677 if builder is not None: |
1678 if builder is not None: |
1678 data = builder.GetBinaryCode() |
1679 data = builder.GetBinaryCode() |
1679 if data is not None : |
1680 if data is not None : |
1680 if self._connector.NewPLC(MD5, data, extrafiles): |
1681 if self._connector.NewPLC(MD5, data, extrafiles): |
|
1682 if self.PLCDebug is not None: |
|
1683 self.PLCDebug.Close() |
|
1684 self.TracedIECPath = [] |
|
1685 self.PLCDebug = None |
1681 self.ProgramTransferred() |
1686 self.ProgramTransferred() |
1682 self.logger.write("Transfer completed successfully.\n") |
1687 self.logger.write("Transfer completed successfully.\n") |
1683 else: |
1688 else: |
1684 self.logger.write_error("Transfer failed\n") |
1689 self.logger.write_error("Transfer failed\n") |
1685 else: |
1690 else: |