runtime/PLCObject.py
changeset 1868 616c3f4bcbcb
parent 1850 614396cbffbf
child 1878 fb73a6b6622d
equal deleted inserted replaced
1867:418777c1fbc7 1868:616c3f4bcbcb
   275 
   275 
   276     def PythonRuntimeInit(self):
   276     def PythonRuntimeInit(self):
   277         MethodNames = ["init", "start", "stop", "cleanup"]
   277         MethodNames = ["init", "start", "stop", "cleanup"]
   278         self.python_runtime_vars = globals().copy()
   278         self.python_runtime_vars = globals().copy()
   279         self.python_runtime_vars.update(self.pyruntimevars)
   279         self.python_runtime_vars.update(self.pyruntimevars)
       
   280         parent = self
   280 
   281 
   281         class PLCSafeGlobals(object):
   282         class PLCSafeGlobals(object):
   282             def __getattr__(_self, name):
   283             def __getattr__(self, name):
   283                 try:
   284                 try:
   284                     t = self.python_runtime_vars["_"+name+"_ctype"]
   285                     t = parent.python_runtime_vars["_"+name+"_ctype"]
   285                 except KeyError:
   286                 except KeyError:
   286                     raise KeyError("Try to get unknown shared global variable : %s" % name)
   287                     raise KeyError("Try to get unknown shared global variable : %s" % name)
   287                 v = t()
   288                 v = t()
   288                 self.python_runtime_vars["_PySafeGetPLCGlob_"+name](ctypes.byref(v))
   289                 parent.python_runtime_vars["_PySafeGetPLCGlob_"+name](ctypes.byref(v))
   289                 return self.python_runtime_vars["_"+name+"_unpack"](v)
   290                 return parent.python_runtime_vars["_"+name+"_unpack"](v)
   290 
   291 
   291             def __setattr__(_self, name, value):
   292             def __setattr__(self, name, value):
   292                 try:
   293                 try:
   293                     t = self.python_runtime_vars["_"+name+"_ctype"]
   294                     t = parent.python_runtime_vars["_"+name+"_ctype"]
   294                 except KeyError:
   295                 except KeyError:
   295                     raise KeyError("Try to set unknown shared global variable : %s" % name)
   296                     raise KeyError("Try to set unknown shared global variable : %s" % name)
   296                 v = self.python_runtime_vars["_"+name+"_pack"](t, value)
   297                 v = parent.python_runtime_vars["_"+name+"_pack"](t, value)
   297                 self.python_runtime_vars["_PySafeSetPLCGlob_"+name](ctypes.byref(v))
   298                 parent.python_runtime_vars["_PySafeSetPLCGlob_"+name](ctypes.byref(v))
   298 
   299 
   299         self.python_runtime_vars.update({
   300         self.python_runtime_vars.update({
   300             "PLCGlobals":     PLCSafeGlobals(),
   301             "PLCGlobals":     PLCSafeGlobals(),
   301             "WorkingDir":     self.workingdir,
   302             "WorkingDir":     self.workingdir,
   302             "PLCObject":      self,
   303             "PLCObject":      self,