精华内容
下载资源
问答
  • open62541提供定时执行任务功能,这个功能很实用,在前面的文章中,有时我们想定时的去修改一些变量节点的值,都是开一个线程去做的,相对来说有点小麻烦。使用open62541自带的定时器就会简单很多。 下面来看下如何...
  • open62541简单的封装类

    2020-10-13 09:12:59
    将常用的open62541的功能进行简单的封装。可以将其进行简单的改造之后用于MFC中。仅供参考使用。
  • open62541.h

    2019-10-10 19:20:57
    open62541开源项目中的.h文件open62541通过CMake编译后产生的集成文件
  • open62541.c

    2019-10-10 19:20:17
    open62541开源项目中的.c文件open62541.c通过CMake编译后产生的集成文件
  • open62541( )是使用C99和C ++ 98语言的通用子集编写的OPC UA(OPC统一体系结构)的开源和免费实现。 该库可与所有主要编译器一起使用,并提供必要的工具以实现专用的OPC UA客户端和服务器,或将基于OPC UA的通信...
  • 基于open62541的服务器和客户端,使用vs2015开发工具,有服务器和客户端代码和执行文件,程序为32位。
  • open62541客户端源代码,用来参考学习。
  • Open62541 Linux静态库

    2018-08-24 13:13:27
    Linux 下编译的OPC UA Open62541 静态库文件,包括server Client
  • open62541-linux32

    2018-06-17 16:05:56
    open62541源码,实例和协议详细pdf说明文档 open62541 (http://open62541.org) is an open source and free implementation of OPC UA (OPC Unified Architecture) written in
  • open62541开发文档

    2018-08-23 17:28:19
    Open62541官方开发文档,其中有编译、SERVER CLIENT 等先关开发说明。
  • Open62541 win32 动态库

    2018-08-24 13:06:45
    windows下编译的open62541,动态库(.dll,.lib,.h)3个文件。
  • open62541-win64

    2018-07-03 11:57:08
    opcua使用,里面有实例库dll h lib 和说明书 (use opc ua have dll lib traditional)
  • open62541.rar

    2021-02-02 13:58:30
    vs2015编译的OPC UA open62541.lib、open62541.dll。配套含open62541.h 、WS2_32.Lib,可直接引用。
  • open62541-V1.1.2版本.zip

    2021-03-28 09:32:15
    OPC_UA c语言库,open62541-V1.1.2版本,可以开发服务器和客户端程序,总共包含9个文件,linux,windows等系统的32和64位库文件以及源代码
  • opcua-esp32:基于open62541项目的ESP32上的嵌入式OPC UA服务器
  • open62541-win32(C)

    2018-06-17 16:04:10
    open62541源码,实例和协议详细pdf说明文档 open62541 (http://open62541.org) is an open source and free implementation of OPC UA (OPC Unified Architecture) written in the common subset of the C99 and C++...
  • open62541.7z

    2020-08-18 17:36:00
    opcua开源协议库open62541.c + open62541.h + libopen62541.a
  • open62541-1.2.pdf

    2021-06-02 13:50:39
    OPC UA开源代码OPEN62541技术文档介绍-英文版
  • sixgitbashOpen62541方式一方式二配置环境配置MinGW环境添加MinGW环境变量使环境变量生效配置CMake环境检查是否安装成功添加CMake环境变量使环境变量生效配置Python环境生成open62541的MakefileCMake基本配置配置...

    文章目录

    简介

    目标

    Qt调用open62541并成功搭建服务器、客户端,完成连接测试。

    阅读基础

    • 了解Qt编程
    • 了解QtCreator的使用。
    • 了解opcua协议
    • 了解open62541。
    • 了解CMake。

    环境说明

    • 操作系统:Windows-10-64bit
    • Qt版本:Qt5.12.6/QtCreator4.10
    • Open62541:V1.2
    • Cmake:V3.21
    • python:V3.9

    软件介绍

    Qt

    Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。

    Qt 还存在 Python、Ruby、Perl 等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。开源社区就是这样,好东西就会被派生扩展,到处使用, 越来越壮大。

    Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。

    Cmake

    CMake是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程。CMake可以运行在Windows和Linux环境下,根据配置的编译器不同,生成符合所在操作系统的Makefile文件,在Windows下可以生成VS的工程文件系统。

    然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    Python

    Python由荷兰数学和计算机科学研究学会的[Guido van Rossum](https://baike.baidu.com/item/Guido van Rossum/3225314) 于1990 年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。

    Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码

    Python-six

    Python 2 和 Python 3 版本的分裂给 Python 开发者们带来了很大的烦恼,为了使代码同时兼容两个版本,往往要增加大量的代码。 于是 Six 出现了。正如它的介绍所说,它是一个专门用来兼容 Python 2 和 Python 3 的库。它解决了诸如 urllib 的部分方法不兼容, str 和 bytes 类型不兼容等“知名”问题。

    Open62541

    open62541是 OPC UA (OPC 统一架构) 的开源和免费实施,根据莫齐拉公共许可证 v2.0 (MPLv2) 获得许可。这使得开放式 62541 库能够合并并作为专有软件的一部分分发。只有对打开的62541库本身的文件的更改在复制和分发时需要根据MPLv2获得许可。

    该库以 C99 和 C++98 语言的普通子集编写,可与所有主要编译器配合使用,并提供必要的工具来实现专用 OPC UA 客户端和服务器,或将基于 OPC UA 的通信集成到现有应用程序中

    新功能:

    • 支持其他 OPC UA 服务(设置触发、传输订阅)
    • 支持更多数据类型:具有可选字段的结构和工会
    • 支持对 OPC UA 数据类型的漂亮打印
    • 支持分析标准定义的人类可读节点、浏览路径等。
    • 支持基于 OpenSL 的加密和证书验证
    • 支持网络插座安全 (wss)
    • 改进对事件和警报条件的支持
    • 改善对酒吧订阅者的支持
    • 通过与外部中断处理和可配置的实时"快速路径"集成,改善了对实时 PubSub 的支持
    • OPC 基金会对最近节点定义的更新

    软件下载安装

    Qt5.12.6

    下载地址:Qt5.12

    选择5.12.6。

    image-20210624174751215

    选择windows环境。

    image-20210624174824043

    安装包。

    BolgImage-20210701193456

    双击安装。

    BolgImage-20210701193535

    填写账号密码。

    BolgImage-20210701193654

    点击next–》下一步。

    BolgImage-20210701193824

    选择安装目录–》下一步。

    BolgImage-20210701194016

    选择需要的选项。

    “Qt 5.12.6”节点下面是 Qt 的功能模块,包括用于不同编译器和平台的模块,这些模块包括内容如下:

    • 用于 windows 平台上的 MSVC 编译器模块,如 msvc2017 32-bit 和 msvc2017 64-bit 等。要安装 MSVC 编译器的模块,需要计算机上已经安装相应版本的 Visual Studio。

    • MinGW 7.3.0 32 bit 编译器模块。MinGW 是 Minimalist GNU for Windows 的缩写,MinGW 是 Windows 平台上使用的 GNU 工具集导入库的集合。

    • 用于 UWP 编译的模块。UWP 是 Windows 10 中 Universal Windows Platform 的简称,有不同编译器类型的 UWP。

    • 用于 Android 平台的模块,如 Android x86 和 Android ARMv7。

    • Sources 是 Qt 的源程序

    • Qt Charts是二维图表模块,用于绘制柱状图、饼图、曲线图等常用二维图表。

    • Qt Data Visualization 是三维数据图表模块,用于数据的三维显示,如散点的三维空间分布、三维曲面等。

    • Qt Purchasing、Qt WebEngine、Qt Network Auth(TP)等其他模块,括号里的 TP 表示技术预览。

    • Qt Scritp(Deprecated)是脚本模块,括号里的“Deprecated”表示这是个已经过时的模块。

    “Tools”节点下面是一些工具软件,包括内容如下:

      • Qt Creator 4.10.1 是用于 Qt 程序开发的 IDE。
      • MinGW 7.3.0 是 MinGW 编译工具链
      • Strawberry Perl 是一个 Perl 语言工具。

    点击同意–》下一步–》下一步–》安装–》。

    Cmake

    下载地址:https://cmake.org/download/

    点击下载。

    image-20210624174709986

    选择Windows 64位。

    image-20210624175322881

    下载完成后,双击进行安装。

    勾选同意协议,然后点next。

    image-20210629164356666

    勾选同意协议,然后点next。

    image-20210629165451769

    按图中红框勾选,然后点next。

    image-20210629171236250

    路径选择,然后点next。

    安装路径根据自己需要自行修改,建议路径名是在英文路径下,不要包含中文和空格。

    image-20210629164428938

    点Install开始安装。

    image-20210629164437802

    安装过程,请耐心等待。

    image-20210629164448733

    安装完成,点Finish。

    image-20210629164457100

    下载并安装

    Python

    安装Python。

    image-20210625155900327

    python-six

    按装完Python后需要使用pip包管理器(Python3中自带)安装python-six。

    打开命令行。

    Image 004

    使用pip包管理器(Python3中自带)安装python-six。

    输入命令pip install six,出现警告忽略。

    警告:你使用的是21.1.1版本的pip;但是,21.1.3版本已经可用。
    你应该考虑通过'c:\users\dell\appdata\local\programs\python\python39\python.exe -m pip install --upgrade pip'命令升级。
    
    

    Image 006

    gitbash

    官网

    Git 是一个免费和开源分布式版本控制系统,旨在以速度和效率处理从小型到非常大型项目的所有问题。

    Git易于学习足迹很小,性能快闪电。它超越了SCM工具,如颠覆,CVS,Perforce,和ClearCase的功能,如便宜的本地分支,方便的中转区,和多个工作流程

    Open62541

    方式一

    git下载,通过tag下载release版本的代码,以1.2为例,命令如下,

    git clone -b v1.2  https://github.com/open62541/open62541.git
    

    Image 007

    方式二

    github获取最新open62541

    Image 013

    点击蓝色的+46release,进入所有release版本下载页面,找到想要的版本。

    一定要选择release版本的,不要使用main分支或其它Branches的代码,因为release版本的是经过测试验证的,而main分支或其它Branches的代码,都是处于修改中,没有正式测试,轻易使用会产生无法预料的后果。

    Image 015

    这种方式有个坏处:下载下来的源码里没有git信息,这样就没有版本号,CMake编译时出现没有版本号的警告。不过也不影响使用。

    配置环境

    配置MinGW环境

    添加MinGW环境变量

    在Path下增加MinGW的路径,查看系统环境变量,确认已经添加则跳过。

    win10下:开始–》设置–》高级系统设置–》环境变量–》系统环境变量–》Path–》新建–》浏览–》确定–》确定–》确定。

    注意:QT配置系统环境变量需要添加两个路径!Qt安装目录下找到mingw32-make或在计算中搜索。

    D:\QtCreator\Qt5.12.6\Tools\mingw730_32\bin
    D:\QtCreator\Qt5.12.6\Tools\mingw730_64\bin
    D:\QtCreator\Qt5.12.6\5.12.6\mingw73_32\bin
    D:\QtCreator\Qt5.12.6\5.12.6\mingw73_64\bin
    

    image-20210628112449726

    使环境变量生效

    打开命令提示符 CMD,运行 set PATH=C:,更改当前窗口任务的环境变量,关闭这个 CMD。

    image-20210628112813735

    再次打开另一个 CMD,运行 echo %PATH%,显示最新的环境变量,会发现刚刚添加的 MinGW 环境变量已经生效。

    image-20210628112912998

    配置CMake环境

    检查是否安装成功

    输入cmake,能够显示cmake的一些信息即为安装成功,如下图:

    image-20210628113607331

    添加CMake环境变量

    在Path下增加CMake的路径,查看系统环境变量,确认已经添加则跳过。

    win10下:开始–》设置–》高级系统设置–》环境变量–》系统环境变量–》Path–》新建–》浏览–》确定–》确定–》确定。

    D:\CMake\bin;
    

    使环境变量生效

    打开命令提示符 CMD,运行 set PATH=C:,更改当前窗口任务的环境变量,关闭这个 CMD。

    再次打开另一个 CMD,运行 echo %PATH%,显示最新的环境变量,会发现刚刚添加的 MinGW 环境变量已经生效。打开cmd黑窗,

    配置Python环境

    Python2.7和Python3不要同时安装

    生成open62541的Makefile

    CMake基本配置

    配置源码路径和编译输出路径

    在源码文件夹中新建一个名为build的文件夹。

    以管理员身份运行,添加源码路径和编译输出路径。

    Image 002

    配置本地编译器

    点击configure–》MinGW Makefiles–》Specify native compilers–》next

    Image 001

    配置编译器路径

    配置编译器路径,这里是mingw,然后finish。

    C: D:/Qt/Qt5.12.6/Tools/mingw730_32/bin/gcc.exe
    C++: D:/Qt/Qt5.12.6/Tools/mingw730_32/bin/g++.exe
    

    Image 003

    Configure配置选项

    配置问题解决

    见CMake生成常见问题。

    配置UA_ENABLE_AMALGAMATION

    cmake的命令行中的UA_ENABLE_AMALGAMATION选项,是open62541的CMakeLists.txt提供的选项,专门用于生成single distribution版本的open62541,即open62541.c 和 open62541.h文件,方便用于集成到其它程序里。

    可以在搜索框搜索快速寻找。

    Image 004

    配置CMAKE_BUILD_TYPE

    根据需求设置构建类型Debug/Release,默认Debug。

    Image 005

    生成Makefile

    生成

    点击Generate–》等待生成完毕。

    Image 006

    cmd命令行编译open62541

    单/多线程编译

    于是我们可以直接使用MinGw编译器生成可执行文件了。

    查询计算机线程

    右击开始–》设备管理器–》处理器。几列就表示计算机支持几线程

    image-20210628144545858

    命令行编译

    打开windows命令行工具。

    image-20210625172200142

    进入build目录。

    cd /d G:\opcua\open62541V1.2\open62541\build
    

    Image 007

    输入mingw32-make -jn编译,由于我的计算机在上面查了是支持6线程所以我的命令是:

    mingw32-make -j6
    

    注意:根据自己的计算机

    Image 008

    编译完毕,没报错。

    Image 009

    opcua62541安装

    安装

    安装命令:mingw32-make install

    Image 010

    安装完成!!!

    Image 012

    在bin目录下生成的是open62541的静态库,可以用于和别的程序进行链接。

    Image 016

    QT搭建客户端、服务器测试

    open62541库的使用方式

    open62541库主要使用可以有三种方式:

    1.用官方源码编译出libopen62541.a + open63541.h, 该库也是x86架构。

    2.用官方源码编译出open62541.c + open63541.h 文件,将文件集成到自己对应程序中,方便使用。

    3.使用官方发布版open62541库,但是该库只支持x86架构。

    opcua62541库连接测试

    创建Qt工程

    创建窗口工程。

    BolgImage-20210701093223

    选择工程存放的位置,下一步。

    BolgImage-20210701093524

    下一步–》下一步–》下一步。

    BolgImage-20210701093822

    下一步–》完成。

    BolgImage-20210701093934

    添加opcua62541库到Qt工程

    在Qt工程目录下创建文件夹opcua62541,把前面编译的libopcua62541.a,opcua62541.h,opcua62541.c文件复制进来如下。

    BolgImage-20210701103836

    方式一

    Qt工程中添加opcua62541.h,opcua62541.c。

    BolgImage-20210701111227

    运行–》报错undifinedxxx–》在.pro文件中添加:LIBS += -lpthread libwsock32 libws2_32

    BolgImage-20210701112318

    再次运行成功!

    BolgImage-20210701112602

    方式二

    Qt工程中添加libopen62541.a、open63541.h。

    BolgImage-20210702181117

    在.pro文件中添加

    CONFIG(debug, debug|release){        LIBS += -L$$PWD/opcua62541/bin/ -llibopen62541}else {        LIBS += -L$$PWD/opcua62541/bin/ -llibopen62541}
    

    运行成功。

    BolgImage-20210702181458

    编写服务器测试代码

    .pro

    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    CONFIG += c++11
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        main.cpp \
        mainwindow.cpp
    
    HEADERS += \
        mainwindow.h
    
    FORMS += \
        mainwindow.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    LIBS += -lpthread libwsock32 libws2_32
    QMAKE_CFLAGS += -std=c99
    include(open62541/open62541.pri)
    
    

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QDebug>
    
    extern "C"{
    #include "open62541/open62541.h"
    }
    
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    
    

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    UA_Boolean running = true;
    
    static void stopHandler(int sign) {
        UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "received ctrl-c");
        running = false;
    }
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        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);
    
        //服务器状态
        retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE;
        qDebug()<<retval;
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    
    

    编写客户端连接测试代码

    .pro

    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    CONFIG += c++11
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    LIBS += -lpthread libwsock32 libws2_32
    QMAKE_CFLAGS += -std=c99
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        main.cpp \
        mainwindow.cpp \
        opcua62541/open62541.c
    
    HEADERS += \
        mainwindow.h \
        opcua62541/open62541.h
    
    FORMS += \
        mainwindow.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QDebug>
    extern "C"{
    #include "opcua62541/open62541.h"
    }
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    
    

    mainwindow.cpp

    #include<QMessageBox>
    
    MainWindow::MainWindow(QWidget *parent)    : QMainWindow(parent)
      , ui(new Ui::MainWindow)
    {    
        ui->setupUi(this);
         
        UA_Client *client = UA_Client_new();
        UA_ClientConfig_setDefault(UA_Client_getConfig(client));
           
        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","连接成功,请尝试!");    
        }
    }
    

    编译并连接服务器成功。

    BolgImage-20210701120622

    open62541相关问题

    Qt编译问题

    编译器语言版本

    'for' loop initial declarations are only allowed in C99 or C11 mode

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

    QMAKE_CFLAGS += -std=c99
    

    error: undefined reference to `gmtime_s’

    处理方案:

    获取系统时间使用的结构出现了未定义的问题。即以下这行:

       gmtime_s(&ptm, &rawtime);
    

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

        _gmtime32_s(&ptm, &rawtime);
    

    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后期可以删除,添加外部库时需要?

    CMake生成常见问题

    编译检查

    • 在编译的过程中,可以在语句的末尾加上“-i”忽略错误,即使用语句:
      • mingw32-make -i
      • mingw32-make install -i
    • 查看CMake的路径是否包含空格,如果包含,卸载重装
    • 查看需要加入的系统路径,是否都添加了
    • 查看CMake的Configure是否选为了MinGW Makefiles
    • 自己定位Qt自带的C、C++编译器的位置:
      • C编译器的位置为——Qt安装路径\Qt5.12.6\Tools\mingw530_32\bin****gcc.exe
      • C++编译器的位置为——Qt安装路径\Qt5.12.6\Tools\mingw530_32\bin****g++.exe
    • 在"二进制目标文件路径/CMake/CMakeOutput.log"、“二进制目标文件路径/CMake/CMakeError.log”内查找问题,从而发现解决方案
    • 不能编译运行,提示找不到编译器,可能是因为在目录下面有中文符号
    • 编译器内不能显示光标,此问题可能是因为使用谷歌输入法造成的,修改内嵌编辑模式
    • 编译可以运行,在debug模式下exe文件无法运行,提示“无法启动此程序,因为程序中丢失qt5cored.dll”,该问题可能是没有设置环境变量,添加环境变量即可

    Python相关配置问题

    missing: PYTHON_EXECUTABLE

    CMake报错

    missing: PYTHON_EXECUTABLE

    image-20210629161340135

    解决方案

    安装Python3

    Mingw相关配置问题

    配置CMAKE_MAKE_PROGRAM

    CMake报错

    点击configure出现报错CMAKE_MAKE_PROGRAM。

    image-20210628094810867

    解决方案

    勾选Advanced,添加QT目录下的mingw32-make.exe 。

    D:\QtCreator\Qt5.12.6\Tools\mingw730_32\bin
    

    image-20210628094937728

    配置libwinpthread-1.dll

    CMake报错

    再次点击configure报错,“由于找不到libwinpthread-1.dll,无法继续执行代码”。

    image-20210625150003782

    解决方案

    可以将C:\Qt\Tools\mingw730_32\bin下的libwinpthread-1.dll添加环境变量或者将C:\Qt\Tools\mingw730_32\bin下的libwinpthread-1.dll复制到

    • 32位系统放入:C:\Windows\System32
    • 64位系统放入:C:\Windows\SysWOW64

    opcua62541 相关配置问题

    子模块下载

    open62541是OPC UA的开源C(C99)实现,license是Mozilla Public License v2.0,可以免费用于个人和商业用途,其网站为https://open62541.org/

    使用git在命令行下载

    当enable某些功能(如自定义namespace)时就需要下载一些子模块,总共2个。

    需要执行如下命令,通过git下载,但是往往速度很慢,有时无法下载。

    git submodule update --init
    

    使用浏览器下载

    首先在open62541源码目录下查看**.gitmodules**文件:

    submodule "deps/mdnsd"]	path = deps/mdnsd	url = https://github.com/Pro/mdnsd.git[submodule "deps/ua-nodeset"]	path = deps/ua-nodeset	url = https://github.com/OPCFoundation/UA-Nodeset	branch = v1.04	
    

    mdnsd

    下载release版本:https://github.com/Pro/mdnsd

    放置位置:open62541源码目录/deps/mdnsd,用于Discovery功能。

    ua-nodeset

    ua-nodeset:https://github.com/OPCFoundation/UA-Nodeset/releases/tag/UA-1.04-2019-05-01,

    放置位置:open62541源码目录/deps/ua-nodeset,用于自定义namespace

    MinGW编译错误

    xxx不是内部或外部命令

    CMake报错

    D:\ProgramFiles不是内部或外部命令

    解决方案

    路径添加如:D:\ProgramFiles\Qt5.9.0Tools\mingw530_32\bin

    注意:QT配置系统环境变量需要添加两个路径,两个路径稍微有些差别,一定要小心哦:D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\binD:\ProgramFiles\Qt5.9.0\5.9\mingw53_32\bin注意:window下的路径后边的斜杠是\,而浏览器的是/C后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin**/**gcc.exeC++后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin**/**g++.exeC后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin\gcc.exeC++后边是——D:\ProgramFiles\Qt5.9.0\Tools\mingw530_32\bin\g++.exe
    

    recipe for target ‘all’ failed

    CMake报错

    如果使用了多线程编译,导致错误,但是错误信息不明确,如:

    Makefile:161: recipe for target ‘all’ failed

    mingw32-make: *** [all] Error 2

    解决方案

    使用单线程编译:

    mingw32-make

    以查看详细的错误提示,再根据具体情况解决。

    其他

    相关资源下载

    opcua62541V1.2MinGW编译.rar-嵌入式文档类资源-CSDN下载

    最近更新

    查看本文最近更新请点击

    欢迎关注本人微信公众号

    weixingognzhonghaoerweima

    展开全文
  • open62541.dll

    2019-10-12 10:09:56
    open62541实现了OPC UA二进制协议栈以及客户端和服务器SDK。它目前支持Micro Embedded Device Server Profile以及一些其他功能。服务器二进制文件的大小可能低于100kb,具体取决于所包含的信息模型。
  • open62541 OPC_UA 库文件,封装好的动态库
  • open62541教程 我在论文中使用的教程打开62541
  • Open62541开源库,可以用来开发OPC UA协议的客户端与用户端,物联网必备工具
  • open62541 python包装器 先决条件 确保您已安装python 3确保已pip install cffi ( pip install cffi )pip install flake8 pytest pip install sphinx_rtd_theme 建造 运行python3 make.py 用法 请参考我们的
  • Qt中集成了Open62541, version 0.3版本,但是需要手动编译相关代码,才能在Qt项目配置中直接使用。在Qt中使用Opcua模块需要手动编译opcua模块。 更多参考:https://blog.basyskom.com/building-qt-opc-ua-with-open

    简介

    Qt中集成了Open62541, version 0.3版本,但是需要手动编译相关代码,才能在Qt项目配置中直接使用。在Qt中使用Opcua模块需要手动编译opcua模块。

    更多参考:https://blog.basyskom.com/building-qt-opc-ua-with-open62541/

    目标

    Qt调用open62541并完成测试。

    阅读基础

    • 了解Qt编程
    • 了解QtCreator的使用。
    • 了解opcua协议
    • 了解open62541。

    环境说明

    • 操作系统:Windows-10-64bit
    • Qt版本:Qt5.12.6/QtCreator4.10
    • Open62541:v0.3

    软件准备

    软件介绍

    Qt

    Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。

    Qt 还存在 Python、Ruby、Perl 等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。开源社区就是这样,好东西就会被派生扩展,到处使用, 越来越壮大。

    Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。

    Perl

    Perl 是一种通用编程语言,最初用于文本操作,现在用于各种任务,包括系统管理、Web 开发、网络编程、GUI 开发等。

    语言旨在实用(易于使用,高效,完整),而不是美丽(小,优雅,最小)。它的主要特点是易于使用,支持程序和面向对象的 (OO) 编程,对文本处理具有强大的内置支持,并拥有世界上最令人印象深刻的第三方模块集合之一。

    佩尔的不同定义在佩尔佩尔法克 1,毫无疑问其他地方给出。从这个我们可以确定Perl是不同的东西,不同的人,但很多人认为它至少值得写。

    Open62541

    open62541是 OPC UA (OPC 统一架构) 的开源和免费实施,根据莫齐拉公共许可证 v2.0 (MPLv2) 获得许可。这使得开放式 62541 库能够合并并作为专有软件的一部分分发。只有对打开的62541库本身的文件的更改在复制和分发时需要根据MPLv2获得许可。

    该库以 C99 和 C++98 语言的普通子集编写,可与所有主要编译器配合使用,并提供必要的工具来实现专用 OPC UA 客户端和服务器,或将基于 OPC UA 的通信集成到现有应用程序中

    软件下载安装

    Qt5.12.6

    下载地址:Qt5.12

    选择5.12.6。

    image-20210624174751215

    选择windows环境。

    image-20210624174824043

    安装包。

    BolgImage-20210701193456

    双击安装。

    BolgImage-20210701193535

    填写账号密码。

    BolgImage-20210701193654

    点击next–》下一步。

    BolgImage-20210701193824

    选择安装目录–》下一步。

    BolgImage-20210701194016

    选择需要的选项。

    “Qt 5.12.6”节点下面是 Qt 的功能模块,包括用于不同编译器和平台的模块,这些模块包括内容如下:

    • 用于 windows 平台上的 MSVC 编译器模块,如 msvc2017 32-bit 和 msvc2017 64-bit 等。要安装 MSVC 编译器的模块,需要计算机上已经安装相应版本的 Visual Studio。

    • MinGW 7.3.0 32 bit 编译器模块。MinGW 是 Minimalist GNU for Windows 的缩写,MinGW 是 Windows 平台上使用的 GNU 工具集导入库的集合。

    • 用于 UWP 编译的模块。UWP 是 Windows 10 中 Universal Windows Platform 的简称,有不同编译器类型的 UWP。

    • 用于 Android 平台的模块,如 Android x86 和 Android ARMv7。

    • Sources 是 Qt 的源程序

    • Qt Charts是二维图表模块,用于绘制柱状图、饼图、曲线图等常用二维图表。

    • Qt Data Visualization 是三维数据图表模块,用于数据的三维显示,如散点的三维空间分布、三维曲面等。

    • Qt Purchasing、Qt WebEngine、Qt Network Auth(TP)等其他模块,括号里的 TP 表示技术预览。

    • Qt Scritp(Deprecated)是脚本模块,括号里的“Deprecated”表示这是个已经过时的模块。

    “Tools”节点下面是一些工具软件,包括内容如下:

      • Qt Creator 4.10.1 是用于 Qt 程序开发的 IDE。
      • MinGW 7.3.0 是 MinGW 编译工具链
      • Strawberry Perl 是一个 Perl 语言工具。

    点击同意–》下一步–》下一步–》安装–》完成。

    Perl

    下载: Perl

    点击download。

    BolgImage-20210701200021

    点击DOWNLOAD STRAWBERRY PERL。

    BolgImage-20210701200432

    我是64位系统。

    BolgImage-20210701200604

    安装包。

    BolgImage-20210701200709

    双击安装。

    BolgImage-20210701200747

    点击next–》勾选I accept…–》点击next–》选择安装目录。

    BolgImage-20210701201527

    点击OK。

    BolgImage-20210701201641

    点击next–》install–》finish–》安装完成。

    BolgImage-20210701201824

    Qt编译opcen62541v0.3

    所有命令

    git clone https://code.qt.io/qt/qtopcua.git
    cd qtopcua
    git checkout 5.12
    mkdir build
    cd build
    qmake ..
    mingw32-make
    mingw32-make install
    

    cmd编译opcen62541v0.3

    打开命令行。

    Image 004

    下载qtopcua:git clone https://code.qt.io/qt/qtopcua.git。

    BolgImage-20210701202634

    进入qtopcua文件夹:cd qtopcua

    BolgImage-20210701202724

    切换分支:git checkout 5.12

    BolgImage-20210701202912

    创建build文件夹:mkdir build

    BolgImage-20210701203013

    进入build文件夹:cd build

    BolgImage-20210701203121

    生成Makefile:qmake ..

    BolgImage-20210701203212

    编译:mingw32-make

    BolgImage-20210701203327

    安装:mingw32-make install

    BolgImage-20210701203423

    安装完成。

    BolgImage-20210701202134

    两个动态库。

    BolgImage-20210701202247

    Qt工程测试

    创建Qt工程

    创建窗口工程。

    BolgImage-20210701093223

    选择工程存放的位置,下一步。

    BolgImage-20210701093524

    下一步–》下一步–》下一步。

    BolgImage-20210701093822

    下一步–》完成。

    BolgImage-20210701195222

    Qt工程运行

    在.pro文件中添加:QT += opcua,添加opcua模块。

    BolgImage-20210701203952

    运行成功!

    BolgImage-20210701203859

    最近更新

    查看本文最近更新请点击

    展开全文
  • QUaServer:适用于open62541服务器堆栈的Qt C ++包装器
  • 这些时间一直在进行OPCUA服务器代码的学习,一开始最麻烦的是进行在gethub上下载下来open62541的开源项目进行.c和.h的生成,由于本人在window下生成的.c和.h文件在项目移植到ubuntu下后出现了下图所示错误。...

    这些时间一直在进行OPCUA服务器代码的学习,一开始最麻烦的是进行在gethub上下载下来open62541的开源项目进行.c和.h的生成,由于本人在window下生成的.c和.h文件在项目移植到ubuntu下后出现了下图所示错误。
    ubuntu下编译错误
    最后定位错误为在gethub网站下载的代码缺少部分代码和使能,导致.h中的函数无法定位到.c文件中的函数引发的错误。最后还是在ubuntu下编译工程文件后使用其.c和.h文件才使得代码顺利生成.o文件
    ubuntu下编译成功

    一、下载和安装CMake-gui

    sudo apt-get install cmake-qt-gui

    二、获取Open62541源码

    使用以下命令去下载源码(在终端中输入,文件下载在运行终端的目录下)
    git clone https://github.com/open62541/open62541.git

    open62541还有一些子模块,当enable一些特殊功能时就需要他们了,例如namespace等,这个需要使用以下命令去下载(在上面下载源码后的源码根目录下操作)
    git submodule update --init

    三、编译

    cd到源码根目录下,创建build目录,然后cd到build目录下,输入以下命令去调用cmake,
    cmake .. -DUA_ENABLE_AMALGAMATION=ON
    接着再运行make,生成以下文件,
    编译1
    这里解释下cmake的命令行中的UA_ENABLE_AMALGAMATION选项,这是open62541的CMakeLists.txt提供的选项,专门用于生成single distribution版本的open62541,即open62541.c 和 open62541.h文件,方便用于集成到其它程序里。

    在bin目录下生成的是open62541的静态库,可以用于和别的程序进行链接。
    编译2
    也就是说open62541的CMakeLists.txt提供了2种调用方式:

    1. libopen62541.a + open62541.h
    2. open62541.c + open62541.h

    四、运行自己的demo

    • 第一种方法(使用libopen62541.a和open62541.h)

      我们在别的地方建立一个目录runDemoOpen62541,然后把libopen62541.a 和open62541.h拷贝进来,然后在这个目录下创建bin和build目录,创建server.c(也可以是自己写的demo),client.c(也可以是自己写的demo)和CMakeLists.txt,整体结构如下,
      编译3
      CMakeLists.txt的内容如下:

    cmake_minimum_required(VERSION 3.5)
    
    project(demoOpen62541)
    
    set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
    
    add_definitions(-std=c99)
    
    link_directories (${PROJECT_SOURCE_DIR})
    
    add_executable(server server.c)
    target_link_libraries(server libopen62541.a)
    
    add_executable(client client.c)
    target_link_libraries(client libopen62541.a)
    

    然后cd到build目录下,运行cmake .. && make,就会在bin目录下生成server和client这2个bin,

    编译4

    • 第二种方法(使用open62541.c和open62541.h)

    我们在别的地方建立一个目录runDemoOpen62541,然后把open62541.c 和open62541.h拷贝进来,然后在这个目录下创建bin和build目录,创建server.c(也可以是自己写的demo),client.c(也可以是自己写的demo)和CMakeLists.txt,整体结构如下,
    编译5
    CMakeLists.txt与第一种有所不同,内容如下,

    cmake_minimum_required(VERSION 3.5)
    
    project(demoOpen62541)
    
    set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
    
    add_compile_options(-std=c99)
    
    add_executable(server server.c open62541.c)
    
    add_executable(client client.c open62541.c)
    

    然后cd到build目录下,运行cmake .. && make,就会在bin目录下生成server和client这2个bin,
    编译4

    五、总结

    open62541在windows下使用CMake编译生成open62541.h和open62541.c文件会缺少一些函数导致工程无法编译,可以在linux下编译.c和.h文件后拷贝到windows下使用。

    展开全文
  • open62541 (R 1.1.2)中文文档第二篇 ,open ua开发提供便利
  • OPC UA服务器(open62541) 专为基于Raspberry Pi 3B架构的设备和兼容产品而制造 Docker储存库 容器特征 下方提供的映像部署了一个容器,该容器具有已安装的Debian,node.js,Python,OPC UA库(带有/不带有加密...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,160
精华内容 464
关键字:

open62541