plcopen/plcopen.py
changeset 435 893d04aff708
parent 427 22d16c457d87
child 461 649a8465148d
equal deleted inserted replaced
434:8a0dfd22c408 435:893d04aff708
   922         self.interface.setcontent([])
   922         self.interface.setcontent([])
   923         for vartype, varlist in vars:
   923         for vartype, varlist in vars:
   924             self.interface.appendcontent({"name" : VarTypes[vartype], "value" : varlist})
   924             self.interface.appendcontent({"name" : VarTypes[vartype], "value" : varlist})
   925     setattr(cls, "setvars", setvars)
   925     setattr(cls, "setvars", setvars)
   926     
   926     
   927     def addpouVar(self, type, name):
   927     def addpouVar(self, type, name, location="", description=""):
   928         if self.interface is None:
   928         if self.interface is None:
   929             self.interface = PLCOpenClasses["pou_interface"]()
   929             self.interface = PLCOpenClasses["pou_interface"]()
   930         content = self.interface.getcontent()
   930         content = self.interface.getcontent()
   931         if len(content) == 0 or content[-1]["name"] != "localVars":
   931         if len(content) == 0 or content[-1]["name"] != "localVars":
   932             content.append({"name" : "localVars", "value" : PLCOpenClasses["interface_localVars"]()})
   932             content.append({"name" : "localVars", "value" : PLCOpenClasses["interface_localVars"]()})
   936             if varlist.getconstant() or varlist.getretain() or len(variables) > 0 and variables[0].getaddress():
   936             if varlist.getconstant() or varlist.getretain() or len(variables) > 0 and variables[0].getaddress():
   937                 content.append({"name" : "localVars", "value" : PLCOpenClasses["interface_localVars"]()})
   937                 content.append({"name" : "localVars", "value" : PLCOpenClasses["interface_localVars"]()})
   938         var = PLCOpenClasses["varListPlain_variable"]()
   938         var = PLCOpenClasses["varListPlain_variable"]()
   939         var.setname(name)
   939         var.setname(name)
   940         var_type = PLCOpenClasses["dataType"]()
   940         var_type = PLCOpenClasses["dataType"]()
   941         derived_type = PLCOpenClasses["derivedTypes_derived"]()
   941         if type in [x for x,y in TypeHierarchy_list if not x.startswith("ANY")]:
   942         derived_type.setname(type)
   942             if type == "STRING":
   943         var_type.setcontent({"name" : "derived", "value" : derived_type})
   943                 var_type.setcontent({"name" : "string", "value" : PLCOpenClasses["elementaryTypes_string"]()})
       
   944             elif type == "WSTRING":
       
   945                 var_type.setcontent({"name" : "wstring", "value" : PLCOpenClasses["elementaryTypes_wstring"]()})
       
   946             else:
       
   947                 var_type.setcontent({"name" : type, "value" : None})
       
   948         else:
       
   949             derived_type = PLCOpenClasses["derivedTypes_derived"]()
       
   950             derived_type.setname(type)
       
   951             var_type.setcontent({"name" : "derived", "value" : derived_type})
   944         var.settype(var_type)
   952         var.settype(var_type)
       
   953         if location != "":
       
   954             var.setaddress(location)
       
   955         if description != "":
       
   956             ft = PLCOpenClasses["formattedText"]()
       
   957             ft.settext(description)
       
   958             var.setdocumentation(ft)
       
   959         
   945         content[-1]["value"].appendvariable(var)
   960         content[-1]["value"].appendvariable(var)
   946     setattr(cls, "addpouVar", addpouVar)
   961     setattr(cls, "addpouVar", addpouVar)
   947     
   962     
   948     def changepouVar(self, old_type, old_name, new_type, new_name):
   963     def changepouVar(self, old_type, old_name, new_type, new_name):
   949         if self.interface is not None:
   964         if self.interface is not None: