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