runtime/PLCObject.py
changeset 1846 14b40afccd69
parent 1832 0f1081928d65
child 1847 6198190bc121
equal deleted inserted replaced
1845:3abde7651c38 1846:14b40afccd69
    89             self.CurrentPLCFilename = open(
    89             self.CurrentPLCFilename = open(
    90                              self._GetMD5FileName(),
    90                              self._GetMD5FileName(),
    91                              "r").read().strip() + lib_ext
    91                              "r").read().strip() + lib_ext
    92             if self.LoadPLC():
    92             if self.LoadPLC():
    93                 self.PLCStatus = "Stopped"
    93                 self.PLCStatus = "Stopped"
    94         except Exception, e:
    94         except Exception:
    95             self.PLCStatus = "Empty"
    95             self.PLCStatus = "Empty"
    96             self.CurrentPLCFilename = None
    96             self.CurrentPLCFilename = None
    97 
    97 
    98     def StatusChange(self):
    98     def StatusChange(self):
    99         if self.statuschange is not None:
    99         if self.statuschange is not None:
   285                 try:
   285                 try:
   286                     t = self.python_runtime_vars["_"+name+"_ctype"]
   286                     t = self.python_runtime_vars["_"+name+"_ctype"]
   287                 except KeyError:
   287                 except KeyError:
   288                     raise KeyError("Try to get unknown shared global variable : %s" % name)
   288                     raise KeyError("Try to get unknown shared global variable : %s" % name)
   289                 v = t()
   289                 v = t()
   290                 r = self.python_runtime_vars["_PySafeGetPLCGlob_"+name](ctypes.byref(v))
   290                 self.python_runtime_vars["_PySafeGetPLCGlob_"+name](ctypes.byref(v))
   291                 return self.python_runtime_vars["_"+name+"_unpack"](v)
   291                 return self.python_runtime_vars["_"+name+"_unpack"](v)
   292 
   292 
   293             def __setattr__(_self, name, value):
   293             def __setattr__(_self, name, value):
   294                 try:
   294                 try:
   295                     t = self.python_runtime_vars["_"+name+"_ctype"]
   295                     t = self.python_runtime_vars["_"+name+"_ctype"]
   361                 self.LogMessage(1, ('PyEval@0x%x(Code="%s") Exception "%s"') % (FBID, cmd, str(e)))
   361                 self.LogMessage(1, ('PyEval@0x%x(Code="%s") Exception "%s"') % (FBID, cmd, str(e)))
   362 
   362 
   363     def StartPLC(self):
   363     def StartPLC(self):
   364         if self.CurrentPLCFilename is not None and self.PLCStatus == "Stopped":
   364         if self.CurrentPLCFilename is not None and self.PLCStatus == "Stopped":
   365             c_argv = ctypes.c_char_p * len(self.argv)
   365             c_argv = ctypes.c_char_p * len(self.argv)
   366             error = None
       
   367             res = self._startPLC(len(self.argv), c_argv(*self.argv))
   366             res = self._startPLC(len(self.argv), c_argv(*self.argv))
   368             if res == 0:
   367             if res == 0:
   369                 self.PLCStatus = "Started"
   368                 self.PLCStatus = "Started"
   370                 self.StatusChange()
   369                 self.StatusChange()
   371                 self.PythonRuntimeCall("start")
   370                 self.PythonRuntimeCall("start")