RMVL  2.1.0
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
samples/opcua/opcua_server.cpp

OPC UA 服务器例程

OPC UA 服务器例程

#include <csignal>
using namespace rm;
Server server(4840);
static inline void onHandle(int) { server.shutdown(); }
int main()
{
signal(SIGINT, onHandle);
Variable value_1 = 42;
value_1.display_name = "Value 1";
value_1.browse_name = "value_1";
Variable value_2 = 3.14;
value_2.display_name = "Value 2";
value_2.browse_name = "value_2";
Method add = [](ServerView, const NodeId &, const Variables &iargs) -> std::pair<bool, Variables> {
int num1 = iargs[0], num2 = iargs[1];
Variables oargs = {num1 + num2};
return {true, oargs};
};
add.display_name = "Add";
add.browse_name = "add";
add.iargs = {{"num1", tpInt32}, {"num2", tpInt32}};
add.oargs = {{"result", tpInt32}};
server.addVariableNode(value_1);
server.addVariableNode(value_2);
server.addMethodNode(add);
printf("节点信息:\n");
printf(" ObjectFolders:\n");
printf(" - value_1:\n");
printf(" node: Variable\n");
printf(" value: 42\n");
printf(" type: Int32\n");
printf(" - value_2:\n");
printf(" node: Variable\n");
printf(" value: 3.14\n");
printf(" type: Double\n");
printf(" - add:\n");
printf(" node: Method\n");
printf(" input: num1(Int32), num2(Int32)\n");
printf(" output: result(Int32)\n");
server.spin();
return 0;
}
OPC UA 方法
定义 method.hpp:51
std::vector< Argument > iargs
传入参数列表
定义 method.hpp:84
std::string browse_name
浏览名称 BrowseName
定义 method.hpp:69
std::string display_name
展示名称 DisplayName
定义 method.hpp:78
std::vector< Argument > oargs
传出参数列表
定义 method.hpp:87
OPC UA 节点 ID
定义 utilities.hpp:40
OPC UA 服务器视图
定义 server.hpp:31
OPC UA 服务器
定义 server.hpp:147
OPC UA 变量
定义 variable.hpp:136
std::string browse_name
浏览名称 BrowseName
定义 variable.hpp:262
std::string display_name
展示名称 DisplayName
定义 variable.hpp:271
constexpr DataType tpInt32
数据类型:Int32
定义 utilities.hpp:147
std::vector< Variable > Variables
变量列表
定义 variable.hpp:309
定义 datastruct.hpp:20
OPC UA 服务器