Loading .gitignore +2 −0 Original line number Diff line number Diff line Loading @@ -136,3 +136,5 @@ dmypy.json # Cython debug symbols cython_debug/ test/SimulationOPCUAserver/Camera_opcuaServer.py test/SimulationOPCUAserver/Camera_ServerModel.xml templates/minserver.tmpl +60 −6 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import time from math import sin import sys import random import string from opcua.ua import NodeId, NodeIdType Loading @@ -24,6 +25,13 @@ except ImportError: shell.interact() from opcua import ua, uamethod, Server def get_random_string(length): # choose from all lowercase letter letters = string.ascii_lowercase result_str = ''.join(random.choice(letters) for i in range(length)) return result_str def checkData(var): for v in var: Loading @@ -46,6 +54,9 @@ def checkData(var): if ty==ua.VariantType.UInt32: if v.get_value()==None: v.set_value(0, ua.VariantType.UInt32) if ty==ua.VariantType.Double: if v.get_value()==None: v.set_value(0, ua.VariantType.Double) class SubHandler(object): """ Loading @@ -66,23 +77,66 @@ class VarUpdater(Thread): def stop(self): self._stopev = True def fillDoubleVal(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(random.uniform(-5,5)) v.set_value(val,ua.VariantType.Double) else: v.set_value(random.uniform(-5,5)) def fillBooleanVal(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(bool(random.getrandbits(1))) v.set_value(val) else: v.set_value(bool(random.getrandbits(1))) def fillStringVal(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(get_random_string(6)) v.set_value(val) else: v.set_value(get_random_string(6)) def fillInt32Val(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(random.randint(1,200)) v.set_value(val) else: v.set_value(random.randint(1,200)) def run(self): while not self._stopev: for v in self.var: ty=v.get_data_type_as_variant_type() if ty==ua.VariantType.Double: if v.get_value()!=None: v.set_value(v.get_value()+random.uniform(-5,5)) else: v.set_value(random.uniform(-5,5)) self.fillDoubleVal(v) if ty ==ua.VariantType.Boolean: self.fillBooleanVal(v) if ty==ua.VariantType.String: self.fillStringVal(v) if ty==ua.VariantType.Int16: v.set_value(random.randint(0,8),ua.VariantType.Int16) if ty==ua.VariantType.Int32: v.set_value(random.randint(0,8),ua.VariantType.Int32) self.fillInt32Val(v) time.sleep(2) if __name__ == "__main__": # optional: setup logging logging.basicConfig(level=logging.ERROR) Loading test/makeTestOPCUAServer.py +4 −5 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ if __name__=="__main__": parser.add_option("-o", "--outdir", dest="outdir", default="./SimulationOPCUAserver", help="outputdir will be /SimulationOPCUAserver/ ", metavar="OUTDIR") parser.add_option("-n", "--ns", dest="ns", default=4, help="namespace ", metavar="OUTDIR") help="namespace ", metavar="NAMESPACE") (options, args) = parser.parse_args() if not options.book_file: # if filename is not given parser.error('ICD file not given') Loading @@ -67,8 +67,7 @@ if __name__=="__main__": else: print("Directory " , defdest , " already exists") #gen_dir=os.environ["PYGEN"] ns="" ns=options.ns ns=int(options.ns) print(type(ns),ns) createOPCUModel(options.book_file,os.path.abspath(defdest),ns) test/genServerModel.py +2 −2 File changed.Contains only whitespace changes. Show changes Loading
.gitignore +2 −0 Original line number Diff line number Diff line Loading @@ -136,3 +136,5 @@ dmypy.json # Cython debug symbols cython_debug/ test/SimulationOPCUAserver/Camera_opcuaServer.py test/SimulationOPCUAserver/Camera_ServerModel.xml
templates/minserver.tmpl +60 −6 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import time from math import sin import sys import random import string from opcua.ua import NodeId, NodeIdType Loading @@ -24,6 +25,13 @@ except ImportError: shell.interact() from opcua import ua, uamethod, Server def get_random_string(length): # choose from all lowercase letter letters = string.ascii_lowercase result_str = ''.join(random.choice(letters) for i in range(length)) return result_str def checkData(var): for v in var: Loading @@ -46,6 +54,9 @@ def checkData(var): if ty==ua.VariantType.UInt32: if v.get_value()==None: v.set_value(0, ua.VariantType.UInt32) if ty==ua.VariantType.Double: if v.get_value()==None: v.set_value(0, ua.VariantType.Double) class SubHandler(object): """ Loading @@ -66,23 +77,66 @@ class VarUpdater(Thread): def stop(self): self._stopev = True def fillDoubleVal(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(random.uniform(-5,5)) v.set_value(val,ua.VariantType.Double) else: v.set_value(random.uniform(-5,5)) def fillBooleanVal(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(bool(random.getrandbits(1))) v.set_value(val) else: v.set_value(bool(random.getrandbits(1))) def fillStringVal(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(get_random_string(6)) v.set_value(val) else: v.set_value(get_random_string(6)) def fillInt32Val(self,v): if v.get_value()!=None: if v.get_value_rank()>0: val=[] for i in range(0,v.get_array_dimensions()[0]-1): val.append(random.randint(1,200)) v.set_value(val) else: v.set_value(random.randint(1,200)) def run(self): while not self._stopev: for v in self.var: ty=v.get_data_type_as_variant_type() if ty==ua.VariantType.Double: if v.get_value()!=None: v.set_value(v.get_value()+random.uniform(-5,5)) else: v.set_value(random.uniform(-5,5)) self.fillDoubleVal(v) if ty ==ua.VariantType.Boolean: self.fillBooleanVal(v) if ty==ua.VariantType.String: self.fillStringVal(v) if ty==ua.VariantType.Int16: v.set_value(random.randint(0,8),ua.VariantType.Int16) if ty==ua.VariantType.Int32: v.set_value(random.randint(0,8),ua.VariantType.Int32) self.fillInt32Val(v) time.sleep(2) if __name__ == "__main__": # optional: setup logging logging.basicConfig(level=logging.ERROR) Loading
test/makeTestOPCUAServer.py +4 −5 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ if __name__=="__main__": parser.add_option("-o", "--outdir", dest="outdir", default="./SimulationOPCUAserver", help="outputdir will be /SimulationOPCUAserver/ ", metavar="OUTDIR") parser.add_option("-n", "--ns", dest="ns", default=4, help="namespace ", metavar="OUTDIR") help="namespace ", metavar="NAMESPACE") (options, args) = parser.parse_args() if not options.book_file: # if filename is not given parser.error('ICD file not given') Loading @@ -67,8 +67,7 @@ if __name__=="__main__": else: print("Directory " , defdest , " already exists") #gen_dir=os.environ["PYGEN"] ns="" ns=options.ns ns=int(options.ns) print(type(ns),ns) createOPCUModel(options.book_file,os.path.abspath(defdest),ns)