PLCControler.py
changeset 864 bf4f7f0801b9
parent 863 b1ead41fbd3b
child 883 235a9ec83b95
equal deleted inserted replaced
863:b1ead41fbd3b 864:bf4f7f0801b9
  1208         elif vartype_content["name"] == "array":
  1208         elif vartype_content["name"] == "array":
  1209             dimensions = []
  1209             dimensions = []
  1210             for dimension in vartype_content["value"].getdimension():
  1210             for dimension in vartype_content["value"].getdimension():
  1211                 dimensions.append((dimension.getlower(), dimension.getupper()))
  1211                 dimensions.append((dimension.getlower(), dimension.getupper()))
  1212             base_type = vartype_content["value"].baseType.getcontent()
  1212             base_type = vartype_content["value"].baseType.getcontent()
  1213             if base_type["value"] is None:
  1213             if base_type["value"] is None or base_type["name"] in ["string", "wstring"]:
  1214                 base_type_name = base_type["name"]
  1214                 base_type_name = base_type["name"].upper()
  1215             else:
  1215             else:
  1216                 base_type_name = base_type["value"].getname()
  1216                 base_type_name = base_type["value"].getname()
  1217             tempvar["Type"] = ("array", base_type_name, dimensions)
  1217             tempvar["Type"] = ("array", base_type_name, dimensions)
  1218         elif vartype_content["name"] in ["string", "wstring"]:
  1218         elif vartype_content["name"] in ["string", "wstring"]:
  1219             tempvar["Type"] = vartype_content["name"].upper()
  1219             tempvar["Type"] = vartype_content["name"].upper()
  1761                         element_infos = {}
  1761                         element_infos = {}
  1762                         element_infos["Name"] = element.getname()
  1762                         element_infos["Name"] = element.getname()
  1763                         element_type = element.type.getcontent()
  1763                         element_type = element.type.getcontent()
  1764                         if element_type["value"] is None or element_type["name"] in ["string", "wstring"]:
  1764                         if element_type["value"] is None or element_type["name"] in ["string", "wstring"]:
  1765                             element_infos["Type"] = element_type["name"].upper()
  1765                             element_infos["Type"] = element_type["name"].upper()
       
  1766                         elif element_type["name"] == "array":
       
  1767                             dimensions = []
       
  1768                             for dimension in element_type["value"].getdimension():
       
  1769                                 dimensions.append((dimension.getlower(), dimension.getupper()))
       
  1770                             base_type = element_type["value"].baseType.getcontent()
       
  1771                             if base_type["value"] is None or base_type["name"] in ["string", "wstring"]:
       
  1772                                 base_type_name = base_type["name"].upper()
       
  1773                             else:
       
  1774                                 base_type_name = base_type["value"].getname()
       
  1775                             element_infos["Type"] = ("array", base_type_name, dimensions)
  1766                         else:
  1776                         else:
  1767                             element_infos["Type"] = element_type["value"].getname()
  1777                             element_infos["Type"] = element_type["value"].getname()
  1768                         if element.initialValue is not None:
  1778                         if element.initialValue is not None:
  1769                             element_infos["Initial Value"] = str(element.initialValue.getvalue())
  1779                             element_infos["Initial Value"] = str(element.initialValue.getvalue())
  1770                         else:
  1780                         else:
  1844             elif infos["type"] == "Structure":
  1854             elif infos["type"] == "Structure":
  1845                 struct = plcopen.varListPlain()
  1855                 struct = plcopen.varListPlain()
  1846                 for i, element_infos in enumerate(infos["elements"]):
  1856                 for i, element_infos in enumerate(infos["elements"]):
  1847                     element = plcopen.varListPlain_variable()
  1857                     element = plcopen.varListPlain_variable()
  1848                     element.setname(element_infos["Name"])
  1858                     element.setname(element_infos["Name"])
  1849                     if element_infos["Type"] in self.GetBaseTypes():
  1859                     if isinstance(element_infos["Type"], TupleType):
       
  1860                         if element_infos["Type"][0] == "array":
       
  1861                             array_type, base_type_name, dimensions = element_infos["Type"]
       
  1862                             array = plcopen.derivedTypes_array()
       
  1863                             for j, dimension in enumerate(dimensions):
       
  1864                                 dimension_range = plcopen.rangeSigned()
       
  1865                                 dimension_range.setlower(dimension[0])
       
  1866                                 dimension_range.setupper(dimension[1])
       
  1867                                 if j == 0:
       
  1868                                     array.setdimension([dimension_range])
       
  1869                                 else:
       
  1870                                     array.appenddimension(dimension_range)
       
  1871                             if base_type_name in self.GetBaseTypes():
       
  1872                                 if base_type_name == "STRING":
       
  1873                                     array.baseType.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
       
  1874                                 elif base_type_name == "WSTRING":
       
  1875                                     array.baseType.setcontent({"name" : "wstring", "value" : plcopen.wstring()})
       
  1876                                 else:
       
  1877                                     array.baseType.setcontent({"name" : base_type_name, "value" : None})
       
  1878                             else:
       
  1879                                 derived_datatype = plcopen.derivedTypes_derived()
       
  1880                                 derived_datatype.setname(base_type_name)
       
  1881                                 array.baseType.setcontent({"name" : "derived", "value" : derived_datatype})
       
  1882                             element.type.setcontent({"name" : "array", "value" : array})
       
  1883                     elif element_infos["Type"] in self.GetBaseTypes():
  1850                         if element_infos["Type"] == "STRING":
  1884                         if element_infos["Type"] == "STRING":
  1851                             element.type.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
  1885                             element.type.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
  1852                         elif element_infos["Type"] == "WSTRING":
  1886                         elif element_infos["Type"] == "WSTRING":
  1853                             element.type.setcontent({"name" : "wstring", "value" : plcopen.wstring()})
  1887                             element.type.setcontent({"name" : "wstring", "value" : plcopen.wstring()})
  1854                         else:
  1888                         else: