RMVL  2.1.0-dev
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.stop(); }
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 &, InputVariables iargs, OutputVariables oargs) -> bool {
int num1 = iargs[0], num2 = iargs[1];
oargs[0] = num1 + num2;
return true;
};
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);
server.start();
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.join();
return 0;
}
OPC UA 方法
定义 method.hpp:53
std::vector< Argument > iargs
传入参数列表
定义 method.hpp:85
std::string browse_name
浏览名称 BrowseName
定义 method.hpp:70
std::string display_name
展示名称 DisplayName
定义 method.hpp:79
std::vector< Argument > oargs
传出参数列表
定义 method.hpp:88
OPC UA 节点 ID
定义 utilities.hpp:36
OPC UA 服务器视图
定义 server.hpp:33
OPC UA 服务器
定义 server.hpp:126
OPC UA 变量
定义 variable.hpp:111
std::string browse_name
浏览名称 BrowseName
定义 variable.hpp:216
std::string display_name
展示名称 DisplayName
定义 variable.hpp:225
constexpr DataType tpInt32
数据类型:Int32
定义 utilities.hpp:140
const std::vector< Variable > & InputVariables
输入变量列表
定义 variable.hpp:269
std::vector< Variable > & OutputVariables
输出变量列表
定义 variable.hpp:271
定义 datastruct.hpp:20
OPC UA 服务器