nodeset_testing.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from nodeset import *
  2. class testing:
  3. def __init__(self):
  4. self.ns = NodeSet("testing")
  5. logger.debug("Phase 1: Reading XML file nodessets")
  6. self.ns.parseXML("Opc.Ua.NodeSet2.xml")
  7. #self.ns.parseXML("Opc.Ua.NodeSet2.Part4.xml")
  8. #self.ns.parseXML("Opc.Ua.NodeSet2.Part5.xml")
  9. #self.ns.parseXML("Opc.Ua.SimulationNodeSet2.xml")
  10. logger.debug("Phase 2: Linking address space references and datatypes")
  11. self.ns.linkOpenPointers()
  12. self.ns.sanitize()
  13. logger.debug("Phase 3: Comprehending DataType encoding rules")
  14. self.ns.buildEncodingRules()
  15. logger.debug("Phase 4: Allocating variable value data")
  16. self.ns.allocateVariables()
  17. bin = self.ns.buildBinary()
  18. f = open("binary.base64","w+")
  19. f.write(bin.encode("base64"))
  20. f.close()
  21. allnodes = self.ns.nodes;
  22. ns = [self.ns.getRoot()]
  23. i = 0
  24. #print "Starting depth search on " + str(len(allnodes)) + " nodes starting
  25. #with from " + str(ns)
  26. while (len(ns) < len(allnodes)):
  27. i = i + 1;
  28. tmp = [];
  29. print("Iteration: " + str(i))
  30. for n in ns:
  31. tmp.append(n)
  32. for r in n.getReferences():
  33. if (not r.target() in tmp):
  34. tmp.append(r.target())
  35. print("...tmp, " + str(len(tmp)) + " nodes discovered")
  36. ns = []
  37. for n in tmp:
  38. ns.append(n)
  39. print("...done, " + str(len(ns)) + " nodes discovered")
  40. class testing_open62541_header:
  41. def __init__(self):
  42. self.ns = opcua_ns("testing")
  43. logger.debug("Phase 1: Reading XML file nodessets")
  44. self.ns.parseXML("Opc.Ua.NodeSet2.xml")
  45. #self.ns.parseXML("Opc.Ua.NodeSet2.Part4.xml")
  46. #self.ns.parseXML("Opc.Ua.NodeSet2.Part5.xml")
  47. #self.ns.parseXML("Opc.Ua.SimulationNodeSet2.xml")
  48. logger.debug("Phase 2: Linking address space references and datatypes")
  49. self.ns.linkOpenPointers()
  50. self.ns.sanitize()
  51. logger.debug("Phase 3: Calling C Printers")
  52. code = self.ns.printOpen62541Header()
  53. codeout = open("./open62541_nodeset.c", "w+")
  54. for line in code:
  55. codeout.write(line + "\n")
  56. codeout.close()
  57. return
  58. if __name__ == '__main__':
  59. tst = testing_open62541_header()