欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于open62541在QT编写OPCUA特定的客户端程序(含有源码) + VS2015 C语言搭建OPCUA客户端环境

程序员文章站 2022-03-11 22:58:01
使用open62541编译一个上位机使用的OPCUA客户端,以为需求并不高,获取已知的底层文件即可,这里做一些记录说明,结果还是满意的。比之Qt的搭建,在网上搜索到的VS搭建更加方便,如果是使用C#的话直接就用做好的库就更简单的。本文介绍一下Qt搭建C环境和VS搭建C环境:1.Qt :首先创建 创建一个普通的qt程序,将两个文件拷贝过来,最后可以打包成dll使用。......

     使用open62541编译一个上位机使用的OPCUA客户端, 以为需求并不高,获取已知的底层文件即可,这里做一些记录说明,结果还是满意的。比之Qt的搭建,在网上搜索到的VS搭建更加方便,如果是使用C#的话直接就用做好的库就更简单的。本文介绍一下Qt搭建C环境和VS搭建C环境:

1.Qt :首先创建

    创建一个普通的qt程序,将两个文件拷贝过来,最后可以打包成dll使用。

基于open62541在QT编写OPCUA特定的客户端程序(含有源码) + VS2015 C语言搭建OPCUA客户端环境

2.处理添加后的报错

报错1:

基于open62541在QT编写OPCUA特定的客户端程序(含有源码) + VS2015 C语言搭建OPCUA客户端环境

处理方案:在pro添加如下:

QMAKE_CFLAGS += -std=c99

报错2:

基于open62541在QT编写OPCUA特定的客户端程序(含有源码) + VS2015 C语言搭建OPCUA客户端环境

处理:

LIBS += -lpthread libwsock32 libws2_32

报错3:: error: undefined reference to `gmtime_s'

基于open62541在QT编写OPCUA特定的客户端程序(含有源码) + VS2015 C语言搭建OPCUA客户端环境

处理:

获取系统时间使用的结构出现了未定义的问题。

即以下这行:

   gmtime_s(&ptm, &rawtime);

查看实际使用的是以下的内容,但是不知道怎么没有获取到该函数的定义。改为以下:

    _gmtime32_s(&ptm, &rawtime);

3.编写程序调用接口

问题:error: undefined reference to `_imp__UA_TYPES'

处理:发现是UA_EXPORT宏的问题!

#define UA_EXPORT  __declspec(dllexport) ??

这里我在最后将这个宏注释掉就没有了什么问题。但是实际上是使用源码不被推荐,编译成dll做调用则没有该问题。

大概步骤如下:

1.首先创建一个qtC++的Library项目,将.c .h放进去,生成dll.

2.接着拷贝生成的.c .dll到我的client程序中去,导入外部库,我选择动态库。

3.编译。.a后期可以删除,添加外部库时需要?

4.源码自行下载了解

源码:链接:https://pan.baidu.com/s/1mAVoUZNSC7rrzbVu0TaymQ 密码:vw79

连接:

    client = UA_Client_new(UA_ClientConfig_default);
    UA_StatusCode retval = UA_Client_connect(client,"opc.tcp://192.168.100.1:4840");
    if(retval != UA_STATUSCODE_GOOD)
    {
        UA_Client_delete(client);
        QMessageBox::information(this,"Error","连接失败,请确认下位机服务器是否开启!");
    }
    else
    {
        QMessageBox::information(this,"TIps","连接成功,请尝试!");
    }

 

2.VS C客户端环境

可直接参考https://www.cnblogs.com/eatfishcat/p/9929524.html

导入源码,导入仅仅需要的一个库,直接连接即可:

基于open62541在QT编写OPCUA特定的客户端程序(含有源码) + VS2015 C语言搭建OPCUA客户端环境

 实践可用。拜拜

本文地址:https://blog.csdn.net/qq_37887537/article/details/85855656