请选择 进入手机版 | 继续访问电脑版

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

[复制链接]
舞鴐雲腾 发表于 2020-12-31 19:21:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
     使用open62541编译一个上位机使用的OPCUA客户端, 以为需求并不高,获取已知的底层文件即可,这里做一些记载说明,效果照旧满意的。比之Qt的搭建,在网上搜索到的VS搭建更加方便,如果是使用C#的话直接就用做好的库就更简单的。本文先容一下Qt搭建C情况和VS搭建C情况:
1.Qt :首先创建

    创建一个平凡的qt步调,将两个文件拷贝过来,最后可以打包成dll使用。

2.处理惩罚添加后的报错

报错1:

处理惩罚方案:在pro添加如下:
  1. QMAKE_CFLAGS += -std=c99
复制代码
报错2:

处理惩罚:
  1. LIBS += -lpthread libwsock32 libws2_32
复制代码
报错3:: error: undefined reference to `gmtime_s'

处理惩罚:
获取系统时间使用的结构出现了未界说的问题。
即以下这行:
  1.    gmtime_s(&ptm, &rawtime);
复制代码
查看实际使用的是以下的内容,但是不知道怎么没有获取到该函数的界说。改为以下:
  1.     _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
毗连:
  1.     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
导入源码,导入仅仅需要的一个库,直接毗连即可:

 实践可用。拜拜

来源:https://blog.csdn.net/qq_37887537/article/details/85855656
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )