示例#1
0
async def test_functional_basic(srv):
    basic_struct_name = 'basic_structure'
    basic_struct = await srv.dict_builder.create_data_type(basic_struct_name)
    basic_struct.add_field('ID', ua.VariantType.Int32)
    basic_struct.add_field('Gender', ua.VariantType.Boolean)
    basic_struct.add_field('Comments', ua.VariantType.String)

    await srv.dict_builder.set_dict_byte_string()
    await srv.srv.load_type_definitions()

    basic_var = await srv.srv.nodes.objects.add_variable(
        ua.NodeId(namespaceidx=srv.idx),
        'BasicStruct',
        ua.Variant(None, ua.VariantType.Null),
        datatype=basic_struct.data_type)

    basic_msg = get_ua_class(basic_struct_name)()
    basic_msg.ID = 3
    basic_msg.Gender = True
    basic_msg.Comments = 'Test string'
    await basic_var.write_value(basic_msg)

    basic_result = await basic_var.read_value()
    assert basic_result == basic_msg
    await srv.srv.delete_nodes([basic_var])
示例#2
0
async def test_functional_advance(srv):
    basic_struct_name = 'basic_structure'
    basic_struct = await srv.dict_builder.create_data_type(basic_struct_name)
    basic_struct.add_field('ID', ua.VariantType.Int32)
    basic_struct.add_field('Gender', ua.VariantType.Boolean)
    basic_struct.add_field('Comments', ua.VariantType.String)

    nested_struct_name = 'nested_structure'
    nested_struct = await srv.dict_builder.create_data_type(nested_struct_name)
    nested_struct.add_field('Name', ua.VariantType.String)
    nested_struct.add_field('Surname', ua.VariantType.String)
    nested_struct.add_field('Stuff', basic_struct)

    await srv.dict_builder.set_dict_byte_string()
    await srv.srv.load_type_definitions()

    basic_var = await srv.srv.nodes.objects.add_variable(
        ua.NodeId(namespaceidx=srv.idx),
        'BasicStruct',
        ua.Variant(None, ua.VariantType.Null),
        datatype=basic_struct.data_type)

    basic_msg = get_ua_class(basic_struct_name)()
    basic_msg.ID = 3
    basic_msg.Gender = True
    basic_msg.Comments = 'Test string'
    await basic_var.set_value(basic_msg)

    nested_var = await srv.srv.nodes.objects.add_variable(
        ua.NodeId(namespaceidx=srv.idx),
        'NestedStruct',
        ua.Variant(None, ua.VariantType.Null),
        datatype=nested_struct.data_type)

    nested_msg = get_ua_class(nested_struct_name)()
    nested_msg.Stuff = basic_msg
    nested_msg.Name = 'Max'
    nested_msg.Surname = 'Karl'
    await nested_var.set_value(nested_msg)

    basic_result = await basic_var.get_value()
    assert basic_result == basic_msg
    nested_result = await nested_var.get_value()
    assert nested_result == nested_msg
示例#3
0
async def test_get_ua_class_2(srv):
    struct_name = '*c*u_stom-ized&Stru#ct'
    struct_node = await srv.dict_builder.create_data_type(struct_name)
    struct_node.add_field('id', ua.VariantType.Int32)
    await srv.dict_builder.set_dict_byte_string()
    await srv.srv.load_type_definitions()
    try:
        assert get_ua_class(struct_name) is not None
    except AttributeError:
        pass
示例#4
0
async def test_struct_node_add_field(srv):
    struct_name = 'CustomizedStruct'
    struct_node = await srv.dict_builder.create_data_type(struct_name)
    struct_node.add_field('id', ua.VariantType.Int32)
    await srv.dict_builder.set_dict_byte_string()
    await srv.srv.load_type_definitions()
    struct = get_ua_class(struct_name)
    assert struct.ua_types[0][0] == 'id'
    assert struct.ua_types[0][1] == 'Int32'
    struct_instance = struct()
    assert struct_instance.id == 0
async def test_data_type_dict_add_field_2(srv):
    struct_name = 'AnotherCustomizedStruct'
    await srv.dict_builder.create_data_type(struct_name)
    srv.dict_builder.add_field(ua.VariantType.Int32, 'id', struct_name, is_array=True)
    await srv.dict_builder.set_dict_byte_string()
    await srv.srv.load_type_definitions()
    struct = get_ua_class(struct_name)
    assert struct.ua_types[0][0] == 'id'
    assert struct.ua_types[0][1] == 'ListOfInt32'
    struct_instance = struct()
    assert isinstance(struct_instance.id, list)
示例#6
0
        # this operation will write the OPC dict string to our new data type dictionary
        # namely the 'MyDictionary'
        ua_server.complete_creation()

        # get the working classes
        ua_server.server.load_type_definitions()

        # Create one test structure
        basic_var = ua_server.server.nodes.objects.add_variable(
            ua.NodeId(namespaceidx=ua_server.idx),
            'BasicStruct',
            ua.Variant(None, ua.VariantType.Null),
            datatype=basic_struct.data_type)

        basic_var.set_writable()
        basic_msg = get_ua_class(basic_struct_name)()
        basic_msg.ID = 3
        basic_msg.Gender = True
        basic_msg.Comments = 'Test string'
        basic_var.set_value(basic_msg)

        # Create one advance test structure
        nested_var = ua_server.server.nodes.objects.add_variable(
            ua.NodeId(namespaceidx=ua_server.idx),
            'NestedStruct',
            ua.Variant(None, ua.VariantType.Null),
            datatype=nested_struct.data_type)

        nested_var.set_writable()
        nested_msg = get_ua_class(nested_struct_name)()
        nested_msg.Stuff = basic_msg