123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- from ua_nodeset import *
- class testing:
- def __init__(self):
- self.ns = NodeSet("testing")
- logger.debug("Phase 1: Reading XML file nodessets")
- self.ns.parseXML("Opc.Ua.NodeSet2.xml")
- #self.ns.parseXML("Opc.Ua.NodeSet2.Part4.xml")
- #self.ns.parseXML("Opc.Ua.NodeSet2.Part5.xml")
- #self.ns.parseXML("Opc.Ua.SimulationNodeSet2.xml")
- logger.debug("Phase 2: Linking address space references and datatypes")
- self.ns.linkOpenPointers()
- self.ns.sanitize()
- logger.debug("Phase 3: Comprehending DataType encoding rules")
- self.ns.buildEncodingRules()
- logger.debug("Phase 4: Allocating variable value data")
- self.ns.allocateVariables()
- bin = self.ns.buildBinary()
- f = open("binary.base64","w+")
- f.write(bin.encode("base64"))
- f.close()
- allnodes = self.ns.nodes;
- ns = [self.ns.getRoot()]
- i = 0
- #print "Starting depth search on " + str(len(allnodes)) + " nodes starting with from " + str(ns)
- while (len(ns) < len(allnodes)):
- i = i + 1;
- tmp = [];
- print("Iteration: " + str(i))
- for n in ns:
- tmp.append(n)
- for r in n.getReferences():
- if (not r.target() in tmp):
- tmp.append(r.target())
- print("...tmp, " + str(len(tmp)) + " nodes discovered")
- ns = []
- for n in tmp:
- ns.append(n)
- print("...done, " + str(len(ns)) + " nodes discovered")
- class testing_open62541_header:
- def __init__(self):
- self.ns = opcua_ns("testing")
- logger.debug("Phase 1: Reading XML file nodessets")
- self.ns.parseXML("Opc.Ua.NodeSet2.xml")
- #self.ns.parseXML("Opc.Ua.NodeSet2.Part4.xml")
- #self.ns.parseXML("Opc.Ua.NodeSet2.Part5.xml")
- #self.ns.parseXML("Opc.Ua.SimulationNodeSet2.xml")
- logger.debug("Phase 2: Linking address space references and datatypes")
- self.ns.linkOpenPointers()
- self.ns.sanitize()
- logger.debug("Phase 3: Calling C Printers")
- code = self.ns.printOpen62541Header()
- codeout = open("./open62541_nodeset.c", "w+")
- for line in code:
- codeout.write(line + "\n")
- codeout.close()
- return
- # Call testing routine if invoked standalone.
- # For better debugging, it is advised to import this file using an interactive
- # python shell and instantiating a nodeset.
- #
- # import ua_types.py as ua; ns=ua.testing().nodeset
- if __name__ == '__main__':
- tst = testing_open62541_header()
|