runtime/PLCObject.py
changeset 2459 21164625b393
parent 2429 15f18dc8b56a
parent 2443 75a274023970
child 2463 8742337a9fe3
equal deleted inserted replaced
2458:2a70d5240300 2459:21164625b393
    28 import os
    28 import os
    29 import sys
    29 import sys
    30 import traceback
    30 import traceback
    31 from time import time
    31 from time import time
    32 import _ctypes  # pylint: disable=wrong-import-order
    32 import _ctypes  # pylint: disable=wrong-import-order
       
    33 from past.builtins import execfile
       
    34 import Pyro.core as pyro
       
    35 import six
       
    36 from six.moves import _thread, xrange
    33 
    37 
    34 from runtime.typemapping import TypeTranslator
    38 from runtime.typemapping import TypeTranslator
    35 from runtime.loglevels import LogLevelsDefault, LogLevelsCount
    39 from runtime.loglevels import LogLevelsDefault, LogLevelsCount
    36 from runtime.Stunnel import getPSKID
    40 from runtime.Stunnel import getPSKID
    37 from runtime import PlcStatus
    41 from runtime import PlcStatus
    93         try:
    97         try:
    94             self.CurrentPLCFilename = open(
    98             self.CurrentPLCFilename = open(
    95                 self._GetMD5FileName(),
    99                 self._GetMD5FileName(),
    96                 "r").read().strip() + lib_ext
   100                 "r").read().strip() + lib_ext
    97             if self.LoadPLC():
   101             if self.LoadPLC():
    98                 self.PLCStatus = "Stopped"
   102                 self.PLCStatus = PlcStatus.Stopped
    99                 if autostart:
   103                 if autostart:
   100                     self.StartPLC()
   104                     self.StartPLC()
   101                     return
   105                     return
   102         except Exception:
   106         except Exception:
   103             self.PLCStatus = "Empty"
   107             self.PLCStatus = PlcStatus.Empty
   104             self.CurrentPLCFilename = None
   108             self.CurrentPLCFilename = None
   105 
   109 
   106         self.StatusChange()
   110         self.StatusChange()
   107 
   111 
   108     def StatusChange(self):
   112     def StatusChange(self):
   464             self.PLCStatus = PlcStatus.Empty
   468             self.PLCStatus = PlcStatus.Empty
   465 
   469 
   466             try:
   470             try:
   467                 if replace_PLC_shared_object:
   471                 if replace_PLC_shared_object:
   468                     os.remove(old_PLC_filename)
   472                     os.remove(old_PLC_filename)
   469                 for filename in file(extra_files_log, "r").readlines() + [extra_files_log]:
   473                 for filename in open(extra_files_log, "rt").readlines() + [extra_files_log]:
   470                     try:
   474                     try:
   471                         os.remove(os.path.join(self.workingdir, filename.strip()))
   475                         os.remove(os.path.join(self.workingdir, filename.strip()))
   472                     except Exception:
   476                     except Exception:
   473                         pass
   477                         pass
   474             except Exception:
   478             except Exception:
   481 
   485 
   482                 # Store new PLC filename based on md5 key
   486                 # Store new PLC filename based on md5 key
   483                 open(self._GetMD5FileName(), "w").write(md5sum)
   487                 open(self._GetMD5FileName(), "w").write(md5sum)
   484 
   488 
   485                 # Then write the files
   489                 # Then write the files
   486                 log = file(extra_files_log, "w")
   490                 log = open(extra_files_log, "w")
   487                 for fname, fdata in extrafiles:
   491                 for fname, fdata in extrafiles:
   488                     fpath = os.path.join(self.workingdir, fname)
   492                     fpath = os.path.join(self.workingdir, fname)
   489                     open(fpath, "wb").write(fdata)
   493                     open(fpath, "wb").write(fdata)
   490                     log.write(fname+'\n')
   494                     log.write(fname+'\n')
   491 
   495