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: |