QT modbus 通信教程,把modbus封装到线程单例中,在线程内完成数据收发,解析。把重要数据以信号方式通知到qml层展示,解决UI卡顿

qt 实现modbus, 整个操作全在线程内,运行效果如下

运行图片如下:

步骤如下:

一、先使用虚拟串口工具,配置一对虚拟串口

二、使用modbus Slave 虚拟出来一个modbus从机。并设置调试的寄存器个数,这里需要调试的寄存器个数为8个,连接串口2,配置波特率为9600,如下图

三、代码内配置modbus 主站 参数如下图, 同时设置 发送和读取modbus寄存器的定时器, 定时写入和读取数据

创建modbus线程代码如下:

线程管理代码头文件

cpp 复制代码
#ifndef SERIALPORTSERVICESINGLETON_H
#define SERIALPORTSERVICESINGLETON_H

#include <QObject>

#include <QMutex>
#include <QMutexLocker>
#include <QDebug>

#include "serialportservice.h"

class Q_DECL_EXPORT SerialPortServiceSingleton : public QObject
{
    Q_OBJECT
private:
    explicit SerialPortServiceSingleton(QObject *parent = nullptr);

public:
    Q_INVOKABLE void initSerialPortService();
    Q_INVOKABLE void destorySerialPortService();

public:
    static SerialPortServiceSingleton* getInstance();
    static void delInstance();
    ~SerialPortServiceSingleton();

signals:
    void notifySerialThreadStatus(int sta);

private slots:
    void threadFinished();
    void serialDestory();

private:
    static SerialPortServiceSingleton* mInstance;
    SerialPortService *serialPortService;
    QThread *serialThread;
};

#endif // SERIALPORTSERVICESINGLETON_H
相关推荐
sycmancia3 小时前
Qt——文本打印与光标定位
开发语言·qt
qq_401700418 小时前
Qt 多线程编程
开发语言·qt
Hua-Jay9 小时前
OpenCV联合C++/Qt 学习笔记(二十五)----加载深度神经网络模型及深度神经网络模型的使用
c++·笔记·qt·opencv·学习·计算机视觉·dnn
小牛蛋9 小时前
vcpkg 管理 PCL + VTK + Qt 开发三维点云可视化软件
开发语言·qt
小许同学记录成长10 小时前
Qt 自研测控软件-配置测试项
开发语言·qt
郝学胜-神的一滴11 小时前
CMake 011:跨平台动态库编译
开发语言·c++·嵌入式硬件·qt·程序人生·cmake·liunx
ai安歌11 小时前
鸿蒙PC:Qt适配OpenHarmony实战【昼刻】:用 Qt Quick 做一个可运行的鸿蒙时钟应用
qt·华为·harmonyos
小短腿的代码世界1 天前
Qt国际化深度解析:从源码到企业级多语言实践
java·数据库·qt
宠..1 天前
QComboBox 方法大全
开发语言·qt
啊哈哈哈11 天前
Modbus 协议官方规范资料包:中文翻译版 / 英文原版 / 中英对照版
串口通信·modbus·嵌入式开发·工业通信·plc通信·上位机开发·协议规范