Qt创建连接注意事项

Qt创建连接注意事项:

一、最好跟上Qt::UniqueConnection这个参数,作用是连接唯一,不会创建多余的连接,由其是在频繁创建连接时,会导致N个相同的连接都在起作用,进而导致逻辑性的内存泄漏。

如下代码:就使用了Qt::UniqueConnection来避免产生N个相同连接

cpp 复制代码
//创建串口
void SerialUpgradeModule::createSerialSlot()
{
    if (serial->isOpen()) {
        serial->close();
    }
    //移远模块优先连接,因为速度快。
    // 配置串口参数
    serial->clear();
    serial->setPortName("/dev/ttyACM2"); // 设置串口号,例如 "COM1" 或 "/dev/ttyACM2"
    serial->setBaudRate(QSerialPort::Baud115200); // 设置波特率
    serial->setDataBits(QSerialPort::Data8); // 设置数据位
    serial->setParity(QSerialPort::NoParity); // 设置校验位
    serial->setStopBits(QSerialPort::OneStop); // 设置停止位
    serial->setFlowControl(QSerialPort::NoFlowControl); // 设置流控

    if (serial->open(QIODevice::ReadWrite)) {
        qDebug() << "Serial port '/dev/ttyACM2' "<< "opened successfully.";

        // 成功打开后立即清空一次缓冲区,防止残留杂数据影响逻辑
        serial->clear();

        // 连接信号和槽,注意:接收文件包不能使用异步处理,只能使用同步处理
        connect(serial, &QSerialPort::readyRead, this, &SerialUpgradeModule::receiveAndHandleSerialDatagrams,Qt::UniqueConnection);
        connect(serial, QOverload<QSerialPort::SerialPortError>::of(&QSerialPort::errorOccurred), this, &SerialUpgradeModule::handleSerialError,Qt::UniqueConnection);
        connect(this, &SerialUpgradeModule::signal_processSerialData, this, &SerialUpgradeModule::slot_processSerialData,Qt::UniqueConnection);
        connect(this, &SerialUpgradeModule::signal_processSerialOnePieceProtocol, this, &SerialUpgradeModule::slot_processSerialOnePieceProtocol,Qt::UniqueConnection);
    } else {

        // 如果失败,开启重连定时器
        if (reconnectTimer && !reconnectTimer->isActive()) {
           reconnectTimer->start();
        }
        qDebug() << "Failed to open serial port '/dev/ttyACM2' "<< ":" << serial->errorString();
    }
}

秋风写于淄博,业务联系与技术交流:Q375172665

相关推荐
张洛闻Eren2 小时前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible
扶尔魔ocy3 小时前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行并进行态势标绘(四)
qt·opengl·osg
郝亚军3 小时前
RK3562 中有 mosquitto、nginx 了,还需要 http,ftp,tftp 等协议吗?
运维·nginx·http
深圳市益普科技有限公司3 小时前
中小封装厂上 MES,为什么十个项目九个坑?
大数据·数据库·人工智能
云边云科技_云网融合3 小时前
从 POS 机到访客 Wi-Fi:零售门店安全建设的完整解法
服务器·网络·数据库
天行健,君子而铎3 小时前
知形-数据库风险监测系统:非侵入式、可溯源、差异化的数据库安全方案
网络·数据库·安全
这个DBA有点耶3 小时前
分布式事务深度:TCC空回滚、悬挂与Saga补偿风暴的根因与解法
数据库·mysql·代码规范
执笔为剑3 小时前
2.1.2-2、V8R3迁移到V8R6-迁移介绍
数据库
hiahiahia1233 小时前
Message 和对话
服务器·前端·数据库
又尔D.4 小时前
MySQL下载安装
数据库·mysql