--- a/PLCControler.py Thu Sep 05 10:36:33 2013 +0200
+++ b/PLCControler.py Thu Sep 05 10:41:52 2013 +0200
@@ -24,7 +24,6 @@
from xml.dom import minidom
from types import StringType, UnicodeType, TupleType
from copy import deepcopy
@@ -1177,8 +1176,10 @@
if var["Type"][0] == "array":
array_type, base_type_name, dimensions = var["Type"]
array = PLCOpenParser.CreateElement("array", "dataType")
+ baseType = PLCOpenParser.CreateElement("baseType", "array") + array.setbaseType(baseType) for i, dimension in enumerate(dimensions):
- dimension_range = PLCOpenParser.CreateElement("range", "dimension")
+ dimension_range = PLCOpenParser.CreateElement("dimension", "array") array.setdimension([dimension_range])
@@ -1186,14 +1187,14 @@
dimension_range.setlower(dimension[0])
dimension_range.setupper(dimension[1])
if base_type_name in self.GetBaseTypes():
- array.baseType.setcontent(PLCOpenParser.CreateElement(
+ baseType.setcontent(PLCOpenParser.CreateElement( if base_type_name in ["STRING", "WSTRING"]
else base_type_name, "dataType"))
derived_datatype = PLCOpenParser.CreateElement("derived", "dataType")
derived_datatype.setname(base_type_name)
- array.baseType.setcontent(derived_datatype)
+ baseType.setcontent(derived_datatype) var_type.setcontent(array)
elif var["Type"] in self.GetBaseTypes():
var_type.setcontent(PLCOpenParser.CreateElement(
@@ -1770,6 +1771,8 @@
def IsEnumeratedType(self, typename, debug = False):
+ if isinstance(typename, TupleType): datatype = self.GetDataType(typename, debug)
basetype_content = datatype.baseType.getcontent()
@@ -1782,6 +1785,8 @@
def IsSubrangeType(self, typename, exclude=None, debug = False):
+ if isinstance(typename, TupleType): datatype = self.GetDataType(typename, debug)
basetype_content = datatype.baseType.getcontent()