QOPCUA简易操作指南

本文是QOPCUA在Qt环境下的操作指南,包括QOPCUA源码在Windows上使用MinGW32和MSVC 2017的编译步骤,以及C++调用QOPCUA的函数示例,如生成QOpcUaClient、连接服务器、读写操作等。文中提到QOPCUA没有单独的读写函数,而是通过Node的属性进行操作,并提供了部分代码示例。
摘要由CSDN通过智能技术生成

QOPCUA简易操作指南

QOPCUA源码编译

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

编译的前提是,需要安装Perl相关,下载地址为 https://www.perl.org/get.html。选择适合自己的版本安装,安装完成后编译相关Qt OPCUA代码。编译过程代码可以参考博客Building Qt OPC UA with open62541](https://blog.basyskom.com/building-qt-opc-ua-with-open62541/),下面摘选出windows下的编译过程:

Compiling on Windows
MinGW32

在 “Qt 5.12.0 for Desktop (MinGW 5.3.0 32 bit)” shell执行以下命令:

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
MSVC 2017

在“Qt 5.12.0 64-bit for Desktop (MSVC 2017)” shell执行以下命令:

"c:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
git clone https://code.qt.io/qt/qtopcua.git
cd qtopcua
git checkout 5.12
mkdir build
cd build
qmake ..
nmake
nmake install

注意:根据自己电脑路径和名称不同,这个路径会有相应的的改变;我的电脑“WDExpress”这个路径不同,修改为社区版本。

"c:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Auxiliary\Build\vcvarsx86_amd64.bat"

如有兴趣可以参考博客编译linux,ios, android环境下的QOPCUA。

编译完成后,会在qt的plugins下面opcua模块,并且在qt的include目录下 多出QtOpcUa,具体参考下图:

在这里插入图片描述

在这里插入图片描述

在项目中使用OPCUA时,添加QOPCUA模块并把相对应的库和头文件添加进去,就可以实现QOPCUA的使用。

QOPCUA函数的调用

这里主要是使用C++调用QOPCUA,使用C#从网上的代码来看更为方便。这里参考网上的C#和qt的demo。参考博客为:C#读写OPCUA服务器, qt的demo在编译路径下有相关的程序代码.网上公开的的额一个服务器地址为: opc.tcp://118.24.36.220:62547/DataAccessServer .可以用作后续的验证.

生成QOpcUaClient操作

这里没有找到登陆验证,只是进行匿名登陆,在C#的版本有

 opcUaClient.UserIdentity = new Opc.Ua.UserIdentity("admin", "123456");

以下是qopcuaClient.h的全部代码:

class QOpcUaClientPrivate;
class QOpcUaClientImpl;

class Q_OPCUA_EXPORT QOpcUaClient : public QObject
{
    Q_OBJECT
    Q_PROPERTY(ClientState state READ state NOTIFY stateChanged)
    Q_PROPERTY(ClientError error READ error NOTIFY errorChanged)
    Q_DECLARE_PRIVATE(QOpcUaClient)

public:
    enum ClientState {
        Disconnected,
        Connecting,
        Connected,
        Closing
    };
    Q_ENUM(ClientState)

    enum ClientError {
        NoError,
        InvalidUrl,
        AccessDenied,
        ConnectionError,
        UnknownError
    };
    Q_ENUM(ClientError)

    explicit QOpcUaClient(QOpcUaClientImpl *impl, QObject *parent = nullptr);
    ~QOpcUaClient();

    Q_INVOKABLE void connectToEndpoint(const QUrl &url);
    Q_INVOKABLE void disconnectFromEndpoint();
    QOpcUaNode *node(const QStrin
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值