ua_nodeset_testing.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from ua_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 with from " + str(ns)
  25. while (len(ns) < len(allnodes)):
  26. i = i + 1;
  27. tmp = [];
  28. print("Iteration: " + str(i))
  29. for n in ns:
  30. tmp.append(n)
  31. for r in n.getReferences():
  32. if (not r.target() in tmp):
  33. tmp.append(r.target())
  34. print("...tmp, " + str(len(tmp)) + " nodes discovered")
  35. ns = []
  36. for n in tmp:
  37. ns.append(n)
  38. print("...done, " + str(len(ns)) + " nodes discovered")
  39. class testing_open62541_header:
  40. def __init__(self):
  41. self.ns = opcua_ns("testing")
  42. logger.debug("Phase 1: Reading XML file nodessets")
  43. self.ns.parseXML("Opc.Ua.NodeSet2.xml")
  44. #self.ns.parseXML("Opc.Ua.NodeSet2.Part4.xml")
  45. #self.ns.parseXML("Opc.Ua.NodeSet2.Part5.xml")
  46. #self.ns.parseXML("Opc.Ua.SimulationNodeSet2.xml")
  47. logger.debug("Phase 2: Linking address space references and datatypes")
  48. self.ns.linkOpenPointers()
  49. self.ns.sanitize()
  50. logger.debug("Phase 3: Calling C Printers")
  51. code = self.ns.printOpen62541Header()
  52. codeout = open("./open62541_nodeset.c", "w+")
  53. for line in code:
  54. codeout.write(line + "\n")
  55. codeout.close()
  56. return
  57. # Call testing routine if invoked standalone.
  58. # For better debugging, it is advised to import this file using an interactive
  59. # python shell and instantiating a nodeset.
  60. #
  61. # import ua_types.py as ua; ns=ua.testing().nodeset
  62. if __name__ == '__main__':
  63. tst = testing_open62541_header()