Qt制作基础功能的串口调试助手

本文介绍如何使用Qt5.12创建一个串口调试助手,包括串口设置、打开/关闭串口、接收与发送功能、时间戳显示、指示灯功能、自动下拉显示、定时发送和多行发送等。详细阐述了各项功能的实现逻辑和代码,如端口号自动识别、接收中断处理、复选框状态控制等。同时,还涉及到程序美化,如图标设置和背景颜色调整。

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

 完整工程文件详见uart: Qt制作串口调试助手

使用Qt5.12制作串口调试助手,实现功能如下图展示

相关设计逻辑及代码展示

  • 串口调试助手首先是要对串口进行相关设置
private:
    Ui::Widget *ui;// ui对象指针,用于访问界面元素
    QSerialPort mSerialPort;

    QString mPortName;     // 端口号
    QString mPortBaudrate; // 波特率
    QString mPortParity;   // 校验位
    QString mPortDatabits; // 数据位
    QString mPortStopbits; // 停止位
bool Widget::getSerialPortConfig()
{
    //获取串口配置
    mPortName     = ui->Box_COM->currentText();
    mPortBaudrate = ui->Box_baud->currentText();
    mPortParity   = ui->Box_parity->currentText();
    mPortDatabits = ui->Box_databits->currentText();
    mPortStopbits = ui->Box_stopbits->currentText();

    /*设置串口配置*/
    mSerialPort.setPortName(mPortName);            // 端口号
    mSerialPort.setBaudRate(mPortBaudrate.toInt());// 波特率
    // 校验位
    if("Even"==mPortParity)
    {
      mSerialPort.setParity(QSerialPort::EvenParity);
    }else if("Odd"==mPortParity)
    {
      mSerialPort.setParity(QSerialPort::OddParity);
    }else
    {
      mSerialPort.setParity(QSerialPort::NoParity);
    }
    // 数据位
    if("5"==mPortDatabits)
    {
        mSerialPort.setDataBits(QSerialPort::Data5);
    }else if("6"==mPortDatabits)
    {
        mSerialPort.setDataBits(QSerialPort::Data6);
    }else if("7"==mPortDatabits)
    {
        mSerialPort.setDataBits(QSerialPort::Data7);
    }else
    {
        mSerialPort.setDataBits(QSerialPort::Data8);
    }
    // 停止位
    if("2"==mPortStopbits)
    {
        mSerialPort.setStopBits(QSerialPort::TwoStop);
    }else if("1.5"==mPortStopbits)
    {
        mSerialPort.setStopBits(QSerialPort::OneAndHalfStop);
    }else
    {
        mSerialPort.setStopBits(QSerialPort::OneStop);
    }

    return mSerialPort.open(QSerialPort::ReadWrite);;
}

void Widget::on_Button_uart_clicked()
{
    if(this->ui->Button_uart->text() == "打开串口")
    {
        if(true == getSerialPortConfig())
        {
            qDebug() << "串口打开成功!";
            rec_flag = 1;

            this->ui->Button_uart->setText("关闭串口");
            /*串口开启禁止修改配置*/
            this->ui->Box_COM->setEnabled(false);
            this->ui->Box_baud->setEnabled(false);
            this->ui->Box_parity->setEnabled(false);
            this->ui->Box_databits->setEnabled(false);
            this->ui->Box_stopbits->setEnabled(false);
            /*相关功能使能*/
            this->ui->Button_tranmit->setEnabled(true);
            this->ui->Button_stop->setEnabled(true);
            this->ui->checkBox_timeout->setEnabled(true);// 定时发送复选框使能能
            this->ui->checkBox_lines->setEnabled(true);  // 多行循环发送复选框使能
            this->ui->Button_line1->setEnabled(true);    // 单条数据发送功能使能
            this->ui->Button_line2->setEnabled(true);    // 单条数据发送功能使能
            this->ui->Button_line3->setEnabled(true);    // 单条数据发送功能使能
        }else
        {
            //QMessageBox::critical(NULL, "提示", "串口打开失败");
            QMessageBox::information(this,"提示","串口打开失败,请检查配置");
        }
    }
    else
    {
        mSerialPort.close();
        qDebug() << "串口关闭!";       
        rec_flag = 0;

        this->ui->Button_uar
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值