PLCControler.py
changeset 299 15669fe26e56
parent 297 e837b67cb184
child 307 fd1f6ae26d4f
--- a/PLCControler.py	Fri Jan 09 17:11:09 2009 +0100
+++ b/PLCControler.py	Mon Jan 12 09:41:47 2009 +0100
@@ -966,26 +966,32 @@
                 tree = []
                 for var_name, var_type, var_modifier in blocktype["inputs"] + blocktype["outputs"]:
                     tree.append((var_name, var_type, self.GenerateVarTree(var_type, debug)))
-                return tree
+                return tree, []
             datatype = project.getdataType(typename)
             if datatype is not None:
                 tree = []
                 basetype_content = datatype.baseType.getcontent()
                 if basetype_content["name"] == "derived":
-                    tree = self.GenerateVarTree(basetype_content["value"].getname())
+                    return self.GenerateVarTree(basetype_content["value"].getname())
                 elif basetype_content["name"] == "array":
+                    dimensions = []
                     base_type = basetype_content["value"].baseType.getcontent()
                     if base_type["name"] == "derived":
-                        tree = [self.GenerateVarTree(base_type["value"].getname())]
+                        tree = self.GenerateVarTree(base_type["value"].getname())
+                        if len(tree[1]) == 0:
+                            tree = tree[0]
+                        for dimension in basetype_content["value"].getdimension():
+                            dimensions.append((dimension.getlower(), dimension.getupper()))
+                    return tree, dimensions
                 elif basetype_content["name"] == "struct":
                     for element in basetype_content["value"].getvariable():
                         element_type = element.type.getcontent()
                         if element_type["name"] == "derived":
                             tree.append((element.getname(), element_type["value"].getname(), self.GenerateVarTree(element_type["value"].getname())))
                         else:
-                            tree.append((element.getname(), element_type["name"], []))
-                return tree
-        return {}
+                            tree.append((element.getname(), element_type["name"], ([], [])))
+                    return tree, []
+        return [], []
     
     # Return the interface for the given pou
     def GetPouInterfaceVars(self, pou, debug = False):
@@ -995,7 +1001,7 @@
             # Extract variables from every varLists
             for type, varlist in pou.getvars():
                 for var in varlist.getvariable():
-                    tempvar = {"Name" : var.getname(), "Class" : type, "Tree" : []}
+                    tempvar = {"Name" : var.getname(), "Class" : type, "Tree" : ([], [])}
                     vartype_content = var.gettype().getcontent()
                     if vartype_content["name"] == "derived":
                         tempvar["Type"] = vartype_content["value"].getname()