--- a/PLCControler.py Tue Feb 22 17:05:07 2011 +0100
+++ b/PLCControler.py Wed Mar 30 15:49:09 2011 +0200
@@ -898,9 +898,33 @@
# Create variable and change its properties
tempvar = plcopen.varListPlain_variable()
tempvar.setname(var["Name"])
-
+
var_type = plcopen.dataType()
- if var["Type"] in self.GetBaseTypes():
+ if isinstance(var["Type"], TupleType):
+ if var["Type"][0] == "array":
+ array_type, base_type_name, dimensions = var["Type"]
+ array = plcopen.derivedTypes_array()
+ for i, dimension in enumerate(dimensions):
+ dimension_range = plcopen.rangeSigned()
+ dimension_range.setlower(dimension[0])
+ dimension_range.setupper(dimension[1])
+ if i == 0:
+ array.setdimension([dimension_range])
+ else:
+ array.appenddimension(dimension_range)
+ if base_type_name in self.GetBaseTypes():
+ if base_type_name == "STRING":
+ array.baseType.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
+ elif base_type_name == "WSTRING":
+ array.baseType.setcontent({"name" : "wstring", "value" : plcopen.wstring()})
+ else:
+ array.baseType.setcontent({"name" : base_type_name, "value" : None})
+ else:
+ derived_datatype = plcopen.derivedTypes_derived()
+ derived_datatype.setname(base_type_name)
+ array.baseType.setcontent({"name" : "derived", "value" : derived_datatype})
+ var_type.setcontent({"name" : "array", "value" : array})
+ elif var["Type"] in self.GetBaseTypes():
if var["Type"] == "STRING":
var_type.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
elif var["Type"] == "WSTRING":
@@ -941,6 +965,16 @@
vartype_content = var.gettype().getcontent()
if vartype_content["name"] == "derived":
tempvar["Type"] = vartype_content["value"].getname()
+ elif vartype_content["name"] == "array":
+ dimensions = []
+ for dimension in vartype_content["value"].getdimension():
+ dimensions.append((dimension.getlower(), dimension.getupper()))
+ base_type = vartype_content["value"].baseType.getcontent()
+ if base_type["value"] is None:
+ base_type_name = base_type["name"]
+ else:
+ base_type_name = base_type["value"].getname()
+ tempvar["Type"] = ("array", base_type_name, dimensions)
elif vartype_content["name"] in ["string", "wstring"]:
tempvar["Type"] = vartype_content["name"].upper()
else: