RMVL
1.5.0-dev
Robotic Manipulation and Vision Library
|
OPC UA 服务器 更多...
#include <rmvl/opcua/server.hpp>
Public 类型 | |
using | ValueCallbackWrapper = std::pair<ValueCallbackBeforeRead, ValueCallbackAfterWrite> |
using | DataSourceCallbackWrapper = std::pair<DataSourceRead, DataSourceWrite> |
Public 成员函数 | |
Server (uint16_t port, std::string_view name={}, const std::vector< UserConfig > &users={}) | |
创建 OPC UA 服务器 | |
Server (ServerUserConfig on_config, uint16_t port, std::string_view name={}, const std::vector< UserConfig > &users={}) | |
从服务器配置函数指针创建 OPC UA 服务器 | |
Server (const Server &)=delete | |
Server (Server &&srv)=delete | |
operator ServerView () const | |
void | start () |
运行服务器,调用方线程不阻塞 | |
void | stop () |
停止服务器 | |
void | join () |
阻塞 | |
~Server () | |
FindNodeInServer | find (std::string_view browse_name, uint16_t ns=1U) const |
获取路径搜索必要信息 | |
NodeId | addVariableTypeNode (const VariableType &vtype) const |
添加变量类型节点 VariableTypeNode 至 BaseDataVariableType 中 | |
NodeId | addVariableNode (const Variable &val, const NodeId &parent_id=nodeObjectsFolder) const noexcept |
添加变量节点 VariableNode 至指定父节点中,并指定引用类型 | |
bool | addVariableNodeValueCallback (NodeId id, ValueCallbackBeforeRead before_read, ValueCallbackAfterWrite after_write) const noexcept |
为既有的变量节点 VariableNode 添加值回调 | |
NodeId | addDataSourceVariableNode (const Variable &val, DataSourceRead on_read, DataSourceWrite on_write, NodeId parent_id=nodeObjectsFolder) const noexcept |
添加数据源变量节点 VariableNode 至指定父节点中 | |
Variable | read (const NodeId &node) const |
从指定的变量节点读数据 | |
bool | write (const NodeId &node, const Variable &val) const |
给指定的变量节点写数据 | |
NodeId | addMethodNode (const Method &method, const NodeId &parent_id=nodeObjectsFolder) const |
添加方法节点 MethodNode 至指定父节点中 | |
void | setMethodNodeCallBack (const NodeId &id, MethodCallback on_method) const |
为既有的方法节点 MethodNode 设置方法的回调函数 | |
NodeId | addObjectTypeNode (const ObjectType &otype) const |
添加对象类型节点 ObjectTypeNode 至 rm::nodeBaseObjectType 中 | |
NodeId | addObjectNode (const Object &obj, NodeId parent_id=nodeObjectsFolder) const |
添加对象节点 ObjectNode 至指定的父节点中 | |
NodeId | addViewNode (const View &view) const |
添加视图节点 ViewNode 至 rm::nodeViewsFolder 中 | |
NodeId | addEventTypeNode (const EventType &etype) const |
添加事件类型至 BaseEventType 中 | |
bool | triggerEvent (const NodeId &node_id, const Event &event) const |
创建并触发事件 | |
Protected 属性 | |
UA_Server * | _server |
OPC UA 服务器指针 | |
bool | _running {} |
服务器运行状态 | |
std::thread | _run |
服务器运行线程 | |
OPC UA 服务器
using rm::Server::DataSourceCallbackWrapper = std::pair<DataSourceRead, DataSourceWrite> |
using rm::Server::ValueCallbackWrapper = std::pair<ValueCallbackBeforeRead, ValueCallbackAfterWrite> |
rm::Server::Server | ( | uint16_t | port, |
std::string_view | name = {}, | ||
const std::vector< UserConfig > & | users = {} ) |
创建 OPC UA 服务器
[in] | port | OPC UA 服务器端口号,一般设置为 4840U |
[in] | name | OPC UA 服务器名称,为空则采用默认值 open62541-based OPC UA Application |
[in] | users | 用户列表 |
rm::Server::Server | ( | ServerUserConfig | on_config, |
uint16_t | port, | ||
std::string_view | name = {}, | ||
const std::vector< UserConfig > & | users = {} ) |
从服务器配置函数指针创建 OPC UA 服务器
*.xml
文件,并由 nodeset_compiler
生成*.xml
文件的编写,参考 4.2 从 XML 配置 OPC UA[in] | on_config | 服务器配置函数指针 |
[in] | port | OPC UA 服务器端口号,一般设置为 4840U |
[in] | name | OPC UA 服务器名称,为空则采用默认值 open62541-based OPC UA Application |
[in] | users | 用户列表 |
|
delete |
|
delete |
rm::Server::~Server | ( | ) |
|
noexcept |
添加数据源变量节点 VariableNode 至指定父节点中
数据源变量节点不同于变量节点的值回调
[in] | val | rm::Variable 表示的变量,仅取 browse_name 、description 、display_name 、access_level 以及 ns 字段,以及对应的变量类型节点 |
[in] | on_read | 重定向的读取回调函数 |
[in] | on_write | 重定向的写入回调函数 |
[in] | parent_id | 指定父节点的 NodeId ,默认为 rm::nodeObjectsFolder |
NodeId
NodeId rm::Server::addMethodNode | ( | const Method & | method, |
const NodeId & | parent_id = nodeObjectsFolder ) const |
添加方法节点 MethodNode 至指定父节点中
[in] | method | rm::Method 表示的方法 |
[in] | parent_id | 指定父节点的 NodeId ,默认为 rm::nodeObjectsFolder |
NodeId
NodeId rm::Server::addObjectNode | ( | const Object & | obj, |
NodeId | parent_id = nodeObjectsFolder ) const |
添加对象节点 ObjectNode 至指定的父节点中
[in] | obj | rm::Object 表示的对象 |
[in] | parent_id | 指定的父节点 NodeId ,默认为 rm::nodeObjectsFolder |
NodeId
NodeId rm::Server::addObjectTypeNode | ( | const ObjectType & | otype | ) | const |
添加对象类型节点 ObjectTypeNode 至 rm::nodeBaseObjectType
中
[in] | otype | rm::ObjectType 表示的对象类型 |
NodeId
|
noexcept |
添加变量节点 VariableNode 至指定父节点中,并指定引用类型
[in] | val | rm::Variable 表示的变量 |
[in] | parent_id | 指定父节点的 NodeId ,默认为 rm::nodeObjectsFolder |
NodeId
|
noexcept |
为既有的变量节点 VariableNode 添加值回调
值回调表示在对 服务器中的 变量节点进行读写的时候,会在读之前执行 beforeRead
,在写之后执行 afterWrite
[in] | id | 既有的变量节点的 NodeId ,因变量节点可能位于任意一个父节点下,因此可以使用 路径搜索 进行查找 |
[in] | before_read | 可隐式转换为 ValueCallBackBeforeRead 函数指针类型的可调用对象 |
[in] | after_write | 可隐式转换为 ValueCallBackAfterWrite 函数指针类型的可调用对象 |
NodeId rm::Server::addVariableTypeNode | ( | const VariableType & | vtype | ) | const |
添加变量类型节点 VariableTypeNode 至 BaseDataVariableType
中
[in] | vtype | rm::VariableType 表示的变量 |
NodeId
|
inline |
获取路径搜索必要信息
需要配合管道运算符 |
完成路径搜索
[in] | browse_name | 浏览名 |
[in] | ns | 命名空间索引,默认为 1 |
fnis | [_client, browse_name] 元组 |
|
inline |
阻塞
stop()
或意外停止后才继续运行
|
inline |
void rm::Server::setMethodNodeCallBack | ( | const NodeId & | id, |
MethodCallback | on_method ) const |
为既有的方法节点 MethodNode 设置方法的回调函数
[in] | id | 既有的方法节点的 NodeId ,因方法节点可能位于任意一个父节点下,因此可以使用 路径搜索 进行查找 |
[in] | on_method |
void rm::Server::start | ( | ) |
运行服务器,调用方线程不阻塞
|
inline |
停止服务器
|
protected |
服务器运行线程
|
protected |
服务器运行状态
|
protected |
OPC UA 服务器指针