使用Qt5.12编译qtopcua源码过程以及自带例子运行

本文详细介绍了在Linux环境下安装Qt5.12及使用qtopcua源码的过程,qtopcua是基于OPCUA规范的C语言开源实现,展示了如何在Qt框架下进行二次开发,实现OPCUA客户端和服务端的连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

OPC UA(Unified Architecture,统一架构)是下一代的OPC 标准,通过提供一个完整的,安全和可靠的跨平台的架构,以获取实时和历史数据和时间。

OPC UA基于OPC基金会提供的新一代技术,提供安全,可靠和独立于厂商的,实现原始数据和预处理的信息从制造层级到生产计划或ERP层级的传输。通过OPC UA,所有需要的信息在任何时间,任何地点对每个授权的应用,每个授权的人员都可用。这种功能独立于制造厂商的原始应用,编程语言和操作系统。 OPC UA是目前已经使用的OPC 工业标准的补充,提供重要的一些特性,包括如平台独立性,扩展性,高可靠性和连接互联网的能力。

以上是简要介绍相关背景知识,下面讲解如何在linux上安装Qt5.12以及使用qtopcua源码,qtopcua源码基于 OPC UA 规范的C语言开源实现元源码open62541基础上进行在Qt上的二次开发过程,会针对源码中的实例进行展示。

1. 安装Qt5.12

首先需要熟悉自己linux的版本,然后下载qt-opensource-linux-x64-5.12.0.run文件,链接如下:
https://download.qt.io/archive/qt/5.12/5.12.0

打开文件所在目录,改变执行权限,进行安装:
在这里插入图片描述
出现安装引导界面,点击 Next,设置安装目录 /opt/Qt5.12.0
在这里插入图片描述在这里插入图片描述
继续点击Next 会进行安装,等待安装完成。

安装完成后需要设置环境变量,在终端中执行如下命令:
在这里插入图片描述
在文件最后添加如下内容:
在这里插入图片描述
最后让修改生效:
在这里插入图片描述

  1. 编译源码qtopcua

在终端分别执行如下指令:

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

操作如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
至此,就可以直接使用qtopcua源码部分,使用qtcreator 打开qtopcua目录下的qt项目:
在这里插入图片描述
使用快捷前 Ctrl + R 进行编译。

  1. 运行源码自带项目
    构建子项目opcuaviewer,运行结果如下在这里插入图片描述
    构建子项目simulationserver,运行在这里插入图片描述
    再然后opcuaviewer进行连接,可以看到实现了opcua 客户端和服务端。

构建子项目waterpump-qml,运行(先运行simulationserver)
在这里插入图片描述

### 如何在 Qt 中集成和使用 OPC UA 进行通信 在 Qt 中集成和使用 OPC UA 进行通信,可以借助 Qt 提供的 `qtopcua` 模块。该模块是 Qt 的扩展功能之一,专门用于支持 OPC UA 协议的客户端开发[^4]。以下是实现过程中的关键点: #### 1. 环境准备 为了在 Qt使用 OPC UA 功能,首先需要确保开发环境正确配置: - 安装 Qt 框架(建议版本为 5.12 或更高版本,因为 `qtopcua` 模块从 Qt 5.12 开始引入)。 - 下载并安装 `qtopcua` 插件。如果插件未随 Qt 一起提供,则需要手动编译或下载预编译版本[^4]。 #### 2. 创建 OPC UA 客户端 在 Qt 中,OPC UA 客户端可以通过 `QOpcUaClient` 类进行创建和管理。以下是一个简单的代码示例,展示如何连接到 OPC UA 服务器并读取节点数据: ```cpp #include <QCoreApplication> #include <QOpcUaClient> #include <QOpcUaNode> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // 创建 OPC UA 客户端实例 QOpcUaClient *client = QOpcUaClient::create(); QObject::connect(client, &QOpcUaClient::connected, [&]() { qDebug() << "Connected to OPC UA server"; // 连接到特定节点 QOpcUaNode node = client->node("ns=2;i=2"); QObject::connect(&node, &QOpcUaNode::readAttributeFinished, [&](QOpcUa::NodeAttribute attr, const QOpcUaVariant &value) { qDebug() << "Read attribute" << attr << "with value" << value.toString(); }); // 读取节点值 node.readAttribute(QOpcUa::NodeAttribute::Value); }); QObject::connect(client, &QOpcUaClient::errorOccurred, [&](QOpcUaClient::Error error) { qDebug() << "Error occurred:" << error; }); // 连接到 OPC UA 服务器 client->connectToEndpoint("opc.tcp://localhost:4840"); return app.exec(); } ``` 上述代码展示了如何通过 `QOpcUaClient` 类连接到 OPC UA 服务器,并读取指定节点的数据。 #### 3. 使用 OPC UA 进行数据写入 除了读取数据外,Qt 的 `qtopcua` 模块还支持对 OPC UA 节点进行写操作。以下是一个简单的写入示例: ```cpp QOpcUaNode node = client->node("ns=2;i=2"); QObject::connect(&node, &QOpcUaNode::writeAttributeFinished, [&](QOpcUa::NodeAttribute attr, const QOpcUaWriteResult &result) { if (result.statusCode == QOpcUa::StatusCode::Good) qDebug() << "Write successful"; else qDebug() << "Write failed with status code:" << result.statusCode; }); // 写入节点值 node.writeAttribute(QOpcUa::NodeAttribute::Value, QOpcUaVariant(42)); ``` #### 4. 测试与调试 为了确保 OPC UA 客户端的功能正常,可以使用专门的测试工具,例如 Matrikon OPC UA 测试软件。该工具不仅提供了全面的协议测试功能,还具备直观的用户界面和强大的日志记录功能,有助于开发者快速定位和解决问题[^2]。 #### 5. 扩展与优化 对于更复杂的场景,可以参考开源项目中提供的 OPC UA 服务端和客户端实现[^5]。这些项目通常基于 Qt 和开源库(如 open62541),能够帮助开发者快速构建跨平台兼容的应用程序。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值