RMVL  1.1.0
RoboMaster Vision Library
Public 成员函数 | 所有成员列表

OPC UA 服务器 更多...

#include <rmvl/opcua/server.hpp>

rm::Server 的协作图:

Public 成员函数

 Server (uint16_t port, const std::vector< UserConfig > &users={})
 创建 OPC UA 服务器 更多...
 
 Server (const Server &)=delete
 
 Server (Server &&)=delete
 
void start ()
 运行服务器 更多...
 
void stop ()
 停止服务器 更多...
 
void join ()
 阻塞 更多...
 
 ~Server ()
 
FindNodeInServer find (const std::string &browse_name)
 获取路径搜索必要信息 更多...
 
UA_NodeId addVariableTypeNode (const VariableType &vtype)
 添加变量类型节点 VariableTypeNode 至 BaseDataVariableType更多...
 
UA_NodeId addVariableNode (const Variable &val, UA_NodeId parent_id=UA_NODEID_NUMERIC(0, 85))
 添加变量节点 VariableNode 至指定父节点中,并指定引用类型 更多...
 
bool addVariableNodeValueCallBack (UA_NodeId id, ValueCallBackBeforeRead before_read, ValueCallBackAfterWrite after_write)
 为既有的变量节点 VariableNode 添加值回调 更多...
 
UA_NodeId addDataSourceVariableNode (const Variable &val, DataSourceRead on_read, DataSourceWrite on_write, UA_NodeId parent_id=UA_NODEID_NUMERIC(0, 85))
 添加数据源变量节点 VariableNode 至指定父节点中 更多...
 
bool read (const UA_NodeId &node, Variable &val)
 从指定的变量节点读数据 更多...
 
bool write (const UA_NodeId &node, const Variable &val)
 给指定的变量节点写数据 更多...
 
UA_NodeId addMethodNode (const Method &method, const UA_NodeId &parent_id=UA_NODEID_NUMERIC(0, 85))
 添加方法节点 MethodNode 至指定父节点中 更多...
 
UA_NodeId addObjectTypeNode (const ObjectType &otype)
 添加对象类型节点 ObjectTypeNode 至 BaseObjectType更多...
 
UA_NodeId addObjectNode (const Object &obj, UA_NodeId parent_id=UA_NODEID_NUMERIC(0, 85))
 添加对象节点 ObjectNode 至指定的父节点中 更多...
 
UA_NodeId addEventTypeNode (const EventType &etype)
 添加事件类型至 BaseEventType更多...
 
bool triggerEvent (const UA_NodeId &node_id, const Event &event)
 创建并触发事件 更多...
 

详细描述

OPC UA 服务器

构造及析构函数说明

◆ Server() [1/3]

rm::Server::Server ( uint16_t  port,
const std::vector< UserConfig > &  users = {} 
)
explicit

创建 OPC UA 服务器

参数
[in]portOPC UA 服务器端口号,一般设置为 4840U
[in]users用户列表
参见
UserConfig

◆ Server() [2/3]

rm::Server::Server ( const Server )
delete

◆ Server() [3/3]

rm::Server::Server ( Server &&  )
delete

◆ ~Server()

rm::Server::~Server ( )

成员函数说明

◆ addDataSourceVariableNode()

UA_NodeId rm::Server::addDataSourceVariableNode ( const Variable val,
DataSourceRead  on_read,
DataSourceWrite  on_write,
UA_NodeId  parent_id = UA_NODEID_NUMERIC(0, 85) 
)

添加数据源变量节点 VariableNode 至指定父节点中

数据源变量节点不同于变量节点的值回调

  • 值回调是在现有变量节点之上添加读取 和写入 的回调函数,本质上仍然是从服务器中获取数据
  • 数据源变量节点会把每次 IO 都绑定到各自的回调函数中,即可以重定向到一个实际的物理过程中,从而跟服务器本身的数据读写脱离关系
参数
[in]valrm::Variable 表示的变量
[in]on_read重定向的读取回调函数
[in]on_write重定向的写入回调函数
[in]parent_id指定父节点的 UA_NodeId,默认为 ObjectsFolder
返回
添加至服务器后,对应数据源变量节点的唯一标识 UA_NodeId

◆ addEventTypeNode()

UA_NodeId rm::Server::addEventTypeNode ( const EventType etype)

添加事件类型至 BaseEventType

参数
[in]etyperm::EventType 表示的事件类型
返回
添加至服务器后,对应事件类型的唯一标识 UA_NodeId

◆ addMethodNode()

UA_NodeId rm::Server::addMethodNode ( const Method method,
const UA_NodeId &  parent_id = UA_NODEID_NUMERIC(0, 85) 
)

添加方法节点 MethodNode 至指定父节点中

参数
[in]methodrm::Method 表示的方法
[in]parent_id指定父节点的 UA_NodeId,默认为 ObjectsFolder
返回
添加至服务器后,对应方法节点的唯一标识 UA_NodeId

◆ addObjectNode()

UA_NodeId rm::Server::addObjectNode ( const Object obj,
UA_NodeId  parent_id = UA_NODEID_NUMERIC(0, 85) 
)

添加对象节点 ObjectNode 至指定的父节点中

参数
[in]objrm::Object 表示的对象
[in]parent_id指定的父节点 UA_NodeId,默认为 ObjectsFolder
返回
添加至服务器后,对应对象节点的唯一标识 UA_NodeId

◆ addObjectTypeNode()

UA_NodeId rm::Server::addObjectTypeNode ( const ObjectType otype)

添加对象类型节点 ObjectTypeNode 至 BaseObjectType

参数
[in]otyperm::ObjectType 表示的对象类型
返回
添加至服务器后,对应对象类型节点的唯一标识 UA_NodeId

◆ addVariableNode()

UA_NodeId rm::Server::addVariableNode ( const Variable val,
UA_NodeId  parent_id = UA_NODEID_NUMERIC(0, 85) 
)

添加变量节点 VariableNode 至指定父节点中,并指定引用类型

参数
[in]valrm::Variable 表示的变量
[in]parent_id指定父节点的 UA_NodeId,默认为 ObjectsFolder
返回
添加至服务器后,对应变量节点的唯一标识 UA_NodeId

◆ addVariableNodeValueCallBack()

bool rm::Server::addVariableNodeValueCallBack ( UA_NodeId  id,
ValueCallBackBeforeRead  before_read,
ValueCallBackAfterWrite  after_write 
)

为既有的变量节点 VariableNode 添加值回调

值回调表示在对 服务器中的 变量节点进行读写的时候,会在读之前执行 beforeRead,在写之后执行 afterWrite

参数
[in]id既有的变量节点的 UA_NodeId,因变量节点可能位于任意一个父节点下,因此可以使用 路径搜索 进行查找
[in]before_read可隐式转换为 ValueCallBackBeforeRead 函数指针类型的可调用对象
[in]after_write可隐式转换为 ValueCallBackAfterWrite 函数指针类型的可调用对象
返回
是否添加成功

◆ addVariableTypeNode()

UA_NodeId rm::Server::addVariableTypeNode ( const VariableType vtype)

添加变量类型节点 VariableTypeNode 至 BaseDataVariableType

参数
[in]vtyperm::VariableType 表示的变量
返回
添加至服务器后,对应变量类型节点的唯一标识 UA_NodeId

◆ find()

FindNodeInServer rm::Server::find ( const std::string &  browse_name)
inline

获取路径搜索必要信息

需要配合管道运算符 | 完成路径搜索

auto dst_mode = src_node | svr.find("person") | svr.find("name");
参数
[in]browse_name浏览名
返回
目标节点信息
返回值
fnis[_client, browse_name] 元组

◆ join()

void rm::Server::join ( )
inline

阻塞

  • 调用方线程阻塞,直到服务器停止后才继续运行

◆ read()

bool rm::Server::read ( const UA_NodeId &  node,
Variable val 
)

从指定的变量节点读数据

参数
[in]node既存的变量节点的 UA_NodeId
[out]val读出的用 rm::Variable 表示的数据,未成功读取则返回空
返回
是否读取成功

◆ start()

void rm::Server::start ( )

运行服务器

◆ stop()

void rm::Server::stop ( )
inline

停止服务器

◆ triggerEvent()

bool rm::Server::triggerEvent ( const UA_NodeId &  node_id,
const Event event 
)

创建并触发事件

参数
[in]node_id触发事件的节点 UA_NodeId
[in]eventrm::Event 表示的事件
注解
Servernode_idUA_NODEID_NUMERIC(0, UA_NS0ID_SERVER)
返回
是否创建并触发成功?

◆ write()

bool rm::Server::write ( const UA_NodeId &  node,
const Variable val 
)

给指定的变量节点写数据

参数
[in]node既存的变量节点的 UA_NodeId
[in]val待写入的数据
返回
是否写入成功

该类的文档由以下文件生成: