Commit 88d467cc authored by olivier R-D's avatar olivier R-D

helper methods to set and array_dimensiosn and value rank

parent c7ac1666
......@@ -92,6 +92,35 @@ class Node(object):
"""
return self.get_attribute(ua.AttributeIds.Value)
def set_array_dimensions(self, value):
"""
Set attribute ArrayDimensions of node
make sure it has the correct data type
"""
v = ua.Variant(value, ua.VariantType.UInt32)
self.set_attribute(ua.AttributeIds.ArrayDimensions, ua.DataValue(v))
def get_array_dimensions(self):
"""
Read and return ArrayDimensions attribute of node
"""
res = self.get_attribute(ua.AttributeIds.ArrayDimensions)
return res.Value.Value
def set_value_rank(self, value):
"""
Set attribute ArrayDimensions of node
"""
v = ua.Variant(value, ua.VariantType.Int32)
self.set_attribute(ua.AttributeIds.ValueRank, ua.DataValue(v))
def get_value_rank(self):
"""
Read and return ArrayDimensions attribute of node
"""
res = self.get_attribute(ua.AttributeIds.ValueRank)
return res.Value.Value
def set_value(self, value, varianttype=None):
"""
Set value of a node. Only variables(properties) have values.
......@@ -135,6 +164,8 @@ class Node(object):
def set_attribute(self, attributeid, datavalue):
"""
Set an attribute of a node
attributeid is a member of ua.AttributeIds
datavalue is a ua.DataValue object
"""
attr = ua.WriteValue()
attr.NodeId = self.nodeid
......
......@@ -118,6 +118,8 @@ class CommonTests(object):
'''
# jyst to avoid editor warnings
opc = None
assertEqual = lambda x, y: True
assertIn = lambda x, y: True
def test_find_servers(self):
servers = self.opc.find_servers()
......@@ -322,11 +324,19 @@ class CommonTests(object):
tid = v1.get_value()
self.assertEqual(now, tid)
def test_variant_array_dim(self):
objects = self.opc.get_objects_node()
l = [[[1.0, 1.0, 1.0, 1.0], [2.0, 2.0, 2.0, 2.0], [3.0, 3.0, 3.0, 3.0]],[[5.0, 5.0, 5.0, 5.0], [7.0, 8.0, 9.0, 01.0], [1.0, 1.0, 1.0, 1.0]]]
v = objects.add_variable(3, 'variableWithDims', l)
v.set_array_dimensions([0, 0, 0])
dim = v.get_array_dimensions()
self.assertEqual(dim, [0, 0, 0])
v.set_value_rank(0)
rank = v.get_value_rank()
self.assertEqual(rank, 0)
v2 = v.get_value()
self.assertEqual(v2, l)
dv = v.get_data_value()
......@@ -340,9 +350,6 @@ class CommonTests(object):
dv = v.get_data_value()
self.assertEqual(dv.Value.Dimensions, [2,3,0])
def test_add_numeric_variable(self):
objects = self.opc.get_objects_node()
v = objects.add_variable('ns=3;i=888;', '3:numericnodefromstring', 99)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment