1524 |
1524 |
1525 def HidePLCProgress(self): |
1525 def HidePLCProgress(self): |
1526 # clear previous_plcstate to restore status |
1526 # clear previous_plcstate to restore status |
1527 # in UpdateMethodsFromPLCStatus() |
1527 # in UpdateMethodsFromPLCStatus() |
1528 self.previous_plcstate = "" |
1528 self.previous_plcstate = "" |
1529 self.AppFrame.ProgressStatusBar.Hide() |
1529 if self.AppFrame is not None: |
|
1530 self.AppFrame.ProgressStatusBar.Hide() |
1530 self.UpdateMethodsFromPLCStatus() |
1531 self.UpdateMethodsFromPLCStatus() |
1531 |
1532 |
1532 def PullPLCStatusProc(self, event): |
1533 def PullPLCStatusProc(self, event): |
1533 self.UpdateMethodsFromPLCStatus() |
1534 self.UpdateMethodsFromPLCStatus() |
1534 |
1535 |
1783 |
1784 |
1784 def _Run(self): |
1785 def _Run(self): |
1785 """ |
1786 """ |
1786 Start PLC |
1787 Start PLC |
1787 """ |
1788 """ |
|
1789 success = False |
1788 if self.GetIECProgramsAndVariables(): |
1790 if self.GetIECProgramsAndVariables(): |
1789 self._connector.StartPLC() |
1791 self._connector.StartPLC() |
1790 self.logger.write(_("Starting PLC\n")) |
1792 self.logger.write(_("Starting PLC\n")) |
1791 self._connect_debug() |
1793 self._connect_debug() |
|
1794 success = True |
1792 else: |
1795 else: |
1793 self.logger.write_error(_("Couldn't start PLC !\n")) |
1796 self.logger.write_error(_("Couldn't start PLC !\n")) |
1794 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
1797 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
|
1798 return success |
1795 |
1799 |
1796 def _Stop(self): |
1800 def _Stop(self): |
1797 """ |
1801 """ |
1798 Stop PLC |
1802 Stop PLC |
1799 """ |
1803 """ |
1802 |
1806 |
1803 # debugthread should die on his own |
1807 # debugthread should die on his own |
1804 # self.KillDebugThread() |
1808 # self.KillDebugThread() |
1805 |
1809 |
1806 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
1810 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
|
1811 |
|
1812 def StartLocalRuntime(self): |
|
1813 if self.AppFrame: |
|
1814 return self.AppFrame.StartLocalRuntime() |
1807 |
1815 |
1808 def _SetConnector(self, connector, update_status=True): |
1816 def _SetConnector(self, connector, update_status=True): |
1809 self._connector = connector |
1817 self._connector = connector |
1810 if self.AppFrame is not None: |
1818 if self.AppFrame is not None: |
1811 self.AppFrame.LogViewer.SetLogSource(connector) |
1819 self.AppFrame.LogViewer.SetLogSource(connector) |
1819 self.StatusTimer.Stop() |
1827 self.StatusTimer.Stop() |
1820 if update_status: |
1828 if update_status: |
1821 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
1829 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
1822 |
1830 |
1823 def _Connect(self): |
1831 def _Connect(self): |
|
1832 success = False |
1824 # don't accept re-connetion if already connected |
1833 # don't accept re-connetion if already connected |
1825 if self._connector is not None: |
1834 if self._connector is not None: |
1826 self.logger.write_error( |
1835 self.logger.write_error( |
1827 _("Already connected. Please disconnect\n")) |
1836 _("Already connected. Please disconnect\n")) |
1828 return |
1837 return |
1880 self.logger.write(_("Debugger ready\n")) |
1889 self.logger.write(_("Debugger ready\n")) |
1881 self._connect_debug() |
1890 self._connect_debug() |
1882 else: |
1891 else: |
1883 self.logger.write_warning( |
1892 self.logger.write_warning( |
1884 _("Debug does not match PLC - stop/transfert/start to re-enable\n")) |
1893 _("Debug does not match PLC - stop/transfert/start to re-enable\n")) |
|
1894 success = True |
|
1895 return success |
1885 |
1896 |
1886 def CompareLocalAndRemotePLC(self): |
1897 def CompareLocalAndRemotePLC(self): |
1887 if self._connector is None: |
1898 if self._connector is None: |
1888 return |
1899 return |
1889 builder = self.GetBuilder() |
1900 builder = self.GetBuilder() |
1903 |
1914 |
1904 def _Disconnect(self): |
1915 def _Disconnect(self): |
1905 self._SetConnector(None) |
1916 self._SetConnector(None) |
1906 |
1917 |
1907 def _Transfer(self): |
1918 def _Transfer(self): |
|
1919 success = False |
1908 if self.IsPLCStarted(): |
1920 if self.IsPLCStarted(): |
1909 dialog = wx.MessageDialog( |
1921 dialog = wx.MessageDialog( |
1910 self.AppFrame, |
1922 self.AppFrame, |
1911 _("Cannot transfer while PLC is running. Stop it now?"), |
1923 _("Cannot transfer while PLC is running. Stop it now?"), |
1912 style=wx.YES_NO | wx.CENTRE) |
1924 style=wx.YES_NO | wx.CENTRE) |
1965 |
1977 |
1966 if self._connector.NewPLC(MD5, object_blob, extrafiles): |
1978 if self._connector.NewPLC(MD5, object_blob, extrafiles): |
1967 if self.GetIECProgramsAndVariables(): |
1979 if self.GetIECProgramsAndVariables(): |
1968 self.UnsubscribeAllDebugIECVariable() |
1980 self.UnsubscribeAllDebugIECVariable() |
1969 self.ProgramTransferred() |
1981 self.ProgramTransferred() |
1970 self.AppFrame.CloseObsoleteDebugTabs() |
1982 if self.AppFrame is not None: |
1971 self.AppFrame.RefreshPouInstanceVariablesPanel() |
1983 self.AppFrame.CloseObsoleteDebugTabs() |
1972 self.AppFrame.LogViewer.ResetLogCounters() |
1984 self.AppFrame.RefreshPouInstanceVariablesPanel() |
|
1985 self.AppFrame.LogViewer.ResetLogCounters() |
1973 self.logger.write(_("PLC installed successfully.\n")) |
1986 self.logger.write(_("PLC installed successfully.\n")) |
|
1987 success = True |
1974 else: |
1988 else: |
1975 self.logger.write_error(_("Missing debug data\n")) |
1989 self.logger.write_error(_("Missing debug data\n")) |
1976 else: |
1990 else: |
1977 self.logger.write_error(_("PLC couldn't be installed\n")) |
1991 self.logger.write_error(_("PLC couldn't be installed\n")) |
1978 |
1992 |
1979 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
1993 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
|
1994 return success |
1980 |
1995 |
1981 def _Repair(self): |
1996 def _Repair(self): |
1982 dialog = wx.MessageDialog( |
1997 dialog = wx.MessageDialog( |
1983 self.AppFrame, |
1998 self.AppFrame, |
1984 _('Delete target PLC application?'), |
1999 _('Delete target PLC application?'), |