Commit ec5a85f7 authored by gino's avatar gino
Browse files

update test opcua server simulator

parent c35655bb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -136,3 +136,5 @@ dmypy.json

# Cython debug symbols
cython_debug/
test/SimulationOPCUAserver/Camera_opcuaServer.py
test/SimulationOPCUAserver/Camera_ServerModel.xml
+60 −6
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ import time
from math import sin
import sys
import random
import string

from opcua.ua import NodeId, NodeIdType

@@ -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:
@@ -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):
    """
@@ -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)
+4 −5
Original line number Diff line number Diff line
@@ -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')
@@ -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)
	
+2 −2

File changed.

Contains only whitespace changes.