【QT】编写一个简易的串口软件

这篇博客介绍如何使用QT编写一个简单的串口通信软件,包括新建Qt项目、设置串口库、创建UI、选择串口、打开与关闭串口、发送与接收数据的实现步骤。博主通过实例演示了如何配置串口参数、监听串口数据并实时显示在界面上,同时指出程序存在的不足,如只在启动时加载COM口,需要改进的地方。
摘要由CSDN通过智能技术生成

简述

QT学了一点发现学不进去,索性看看能不能直接撸个程序,于是就有了这个简易的串口软件…


分析需求

这是XCOM串口收发软件,以此为例

在这里插入图片描述

目的很明确:

  1. 串口列表要能显示所有已经接上PC上的COM
  2. 以我们的配置115200-8-1-N打开串口
  3. 能收、发

新建一个Qt项目

既然用到串口,那么我们就要在.pro里增加串口的库

QT       += serialport  # 串口库

以及mainwindow.h里添加头文件

#include "qDebug.h"						  // 调试输出用
#include <QtSerialPort/QSerialPort>         // 提供访问串口的功能
#include <QtSerialPort/QSerialPortInfo>     // 提供系统中存在的串口的信息

先拖控件把ui整出来

在这里插入图片描述

要注意的是,除了Label,其他的控件都记得命名呀,当然你用默认的也行…

打开串口功能

1. 选择串口功能

我们要打开的串口,并不希望他是临时变量,我们用到的地方多呢!所以就在头文件先定义一个私有成员变量

QSerialPort *serial;

我们希望他在打开的时候就能加载所有的COM,所以我们在MainWindow里做这一步,创建窗口的时候就初始化COM列表,顺带着我们为serial开辟空间

	// 我们在 ui->setupUi(this); 后面加入这些代码即可
	
    // 添加所有串口到comboBox里(串口号的名字叫comboBox_COMx)
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
   
        ui->comboBox_COMx->addItem(info.portName()); //+':'+info.description()
    }
    serial = new QSerialPort(this);

我们用info去引用一个个的从串口的列表里取出COM的信息,如果有,我们就把他加入到【串口选择】的下拉栏里

这个时候如果我们运行,就会发现【串口选择】里已有了PC上已插入的COM设备。

2. 打开串口

首先为按钮【打开串口】添加槽,然后在槽函数里编写我们的代码:
打开了 总不能就一直开吧,所以我们做了一个开关,通过按钮上的字来判断是开还是关

 // 点击打开串口
    if(ui->pushButton_OpenSerial->text()==tr("打开串口"))
    {
   
        ui->pushButton_OpenSerial->setText(tr("关闭串口"));
    }
    else
    {
   
        ui->pushButton_OpenSerial->setText(tr("打开串口"));
        
    }

这个时候我们运行,会发现打开串口的按钮已经可以正常工作了,点击打开,会显示关闭按钮。点击关闭,会显示打开按钮。

按钮做完了,接着就要做功能了,如果要关闭,我们就可以调用serial->close();来关闭串口,如果要打开,我们就去打开,不过不知道能不能打开(可能别的程序正在使用),所以加个if判断一下。

    // 点击打开串口
    if(ui->pushButton_OpenSerial->text()==tr("打开串口"))
    {
   
        ui->pushButton_OpenSerial->setText(tr("关闭串口"));
        // 设置串口号(以当前显示的COM号为要打开的串口)
        serial->setPortName
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值