OPC UA Java 开发笔记(三):open62541建立基础服务器

前两天一直在搞open62541,因为milo库的server sdk没有办法根据xml生成结点文件,于是准备用open62541来搭建服务器,milo结合Spring Boot来构件客户端。

网络上大多是建立一个open62541.h的头文件,还有就是open62541.c的执行文件,但是新版好像并不是这样的。
然后很多教程都是讲的linux,但是初学者用linux的还是比较少,所我写了这一篇帮助大家配置。

但是open62541的构件相当的麻烦,我试了一下午都没搞明白,今天上午算是终于有点懂了。接下来,我一步一步来讲。

为什么用open62541?

  1. 和商业库一样,可以根据uamodeler生成的xml文件直接生成相应的代码,步骤简单。
  2. 有完备的tutorial,适合新手,一步一步上手。
    3.国内有许多关于open62541的博客可供参考

了解了理由,我们就需要来实操,首先是最难的一步,也就是安装

1.首先是下载

在这里插入图片描述
我们进入open62541的github官网open62541,选择release版本。
这里我用的是win64的版本。

下好解压完成后得到如下文件,这个myserver.c是一会儿要建立的文件
在这里插入图片描述

2.建立工程

在VS2019中新建一个C++的 空工程
在这里插入图片描述
打开工程,并打开工程所在的文件夹 E:\Code_Library\TeachingOPC\TeachingOPC,注意是sln里面的那个文件夹。复制我们下载的release文件夹中的这几个文件到工程文件夹中。
在这里插入图片描述
位置如下
在这里插入图片描述
在这里插入图片描述
一个是open62541的x64库文件,一个是open62541的头文件
在VS中打开工程,然后对所有文件选择 包括在项目中
在这里插入图片描述
这是包括完后
在这里插入图片描述
然后最玄学的地方来了,我到现在还是没搞明白为什么的东西。这个时候我们需要VS2015,对又要打开2015
在这里插入图片描述
然后在附加包含目录里面加上这一句,$(ProjectDir),然后就可以了。

关于这点我也有疑问,这个操作我再VS2019上做就不行,然后在2015上做就可以,我猜测可能是因为原来的文件是用的2015编译的,但是这样操作后2019上面也可以使用,就很奇怪。

接下来我们新建一个c或者cpp文件,输入以下代码,这个是源码:

#include <open62541/plugin/log_stdout.h>
#include <open62541/server.h>
#include <open62541/server_config_default.h>
#include <signal.h>
#include <stdlib.h>

static volatile UA_Boolean running = true;

static void stopHandler(int sig) {
	UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "received ctrl-c");
	running = false; 
}
int main(void) {
	signal(SIGINT, stopHandler);
	signal(SIGTERM, stopHandler);
	UA_Server *server = UA_Server_new();
	UA_ServerConfig_setDefault(UA_Server_getConfig(server));
	UA_StatusCode retval = UA_Server_run(server, &running);
	UA_Server_delete(server);
	return retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE;
}

运行成功
在这里插入图片描述

PS:

  1. 如果Console里面出现异常报错的话,可能是端口被占用了,参见解决端口占用
  2. 如果提示少了个dll文件的话,去网上搜这个文件,有教程怎么下,具体什么名字我忘了,很好解决的问题

这个就是windows端,建立opc server的方法

发布了6 篇原创文章 · 获赞 2 · 访问量 292

猜你喜欢

转载自blog.csdn.net/qq_41989109/article/details/104514147