1873 |
1873 |
1874 # purge any non-finished transfer |
1874 # purge any non-finished transfer |
1875 # note: this would abord any runing transfer with error |
1875 # note: this would abord any runing transfer with error |
1876 self._connector.PurgeBlobs() |
1876 self._connector.PurgeBlobs() |
1877 |
1877 |
1878 # transfer extra files |
1878 try: |
1879 extrafiles = [] |
1879 # transfer extra files |
1880 for extrafilespath in [self._getExtraFilesPath(), |
1880 extrafiles = [] |
1881 self._getProjectFilesPath()]: |
1881 for extrafilespath in [self._getExtraFilesPath(), |
1882 |
1882 self._getProjectFilesPath()]: |
1883 for name in os.listdir(extrafilespath): |
1883 |
1884 extrafiles.append(( |
1884 for name in os.listdir(extrafilespath): |
1885 name, |
1885 extrafiles.append(( |
1886 self._connector.BlobFromFile( |
1886 name, |
1887 # use file name as a seed to avoid collisions |
1887 self._connector.BlobFromFile( |
1888 # with files having same content |
1888 # use file name as a seed to avoid collisions |
1889 os.path.join(extrafilespath, name), name))) |
1889 # with files having same content |
1890 |
1890 os.path.join(extrafilespath, name), name))) |
1891 # Send PLC on target |
1891 |
1892 object_path = builder.GetBinaryPath() |
1892 # Send PLC on target |
1893 # arbitrarily use MD5 as a seed, could be any string |
1893 object_path = builder.GetBinaryPath() |
1894 object_blob = self._connector.BlobFromFile(object_path, MD5) |
1894 # arbitrarily use MD5 as a seed, could be any string |
1895 |
1895 object_blob = self._connector.BlobFromFile(object_path, MD5) |
1896 self.HidePLCProgress() |
1896 except IOError as e: |
1897 |
1897 self.HidePLCProgress() |
1898 self.logger.write(_("PLC data transfered successfully.\n")) |
1898 self.logger.write_error(repr(e)) |
1899 |
1899 else: |
1900 if self._connector.NewPLC(MD5, object_blob, extrafiles): |
1900 self.HidePLCProgress() |
1901 if self.GetIECProgramsAndVariables(): |
1901 self.logger.write(_("PLC data transfered successfully.\n")) |
1902 self.UnsubscribeAllDebugIECVariable() |
1902 |
1903 self.ProgramTransferred() |
1903 if self._connector.NewPLC(MD5, object_blob, extrafiles): |
1904 self.AppFrame.CloseObsoleteDebugTabs() |
1904 if self.GetIECProgramsAndVariables(): |
1905 self.AppFrame.RefreshPouInstanceVariablesPanel() |
1905 self.UnsubscribeAllDebugIECVariable() |
1906 self.AppFrame.LogViewer.ResetLogCounters() |
1906 self.ProgramTransferred() |
1907 self.logger.write(_("PLC installed successfully.\n")) |
1907 self.AppFrame.CloseObsoleteDebugTabs() |
|
1908 self.AppFrame.RefreshPouInstanceVariablesPanel() |
|
1909 self.AppFrame.LogViewer.ResetLogCounters() |
|
1910 self.logger.write(_("PLC installed successfully.\n")) |
|
1911 else: |
|
1912 self.logger.write_error(_("Missing debug data\n")) |
1908 else: |
1913 else: |
1909 self.logger.write_error(_("Missing debug data\n")) |
1914 self.logger.write_error(_("PLC couldn't be installed\n")) |
1910 else: |
|
1911 self.logger.write_error(_("PLC couldn't be installed\n")) |
|
1912 |
1915 |
1913 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
1916 wx.CallAfter(self.UpdateMethodsFromPLCStatus) |
1914 |
1917 |
1915 def _Repair(self): |
1918 def _Repair(self): |
1916 dialog = wx.MessageDialog( |
1919 dialog = wx.MessageDialog( |