【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
### 回答1: 好的,为了编写基于 QT 软件串口通信上位机程序,需要按照以下步骤进行: 1. 首先,确保你已经安装了 QT 开发环境。 2. 在 QT 中新建一个项目,选择“应用程序”模板。 3. 在新建的项目中,添加一个名为“serialport”的类,用于管理串口通信。这个类应该包含打开、关闭串口、发送数据和读取数据的函数。 4. 在主窗口中,添加一些控件(如文本框、按钮等),用于输入数据和显示结果。 5. 在主窗口中,添加一个“serialport”对象,用于管理串口通信。 6. 在主窗口的相应事件(如按钮点击事件)中,调用“serialport”对象的相应函数,进行串口通信。 这就是编写基于 QT 软件串口通信上位机程序的基本流程。希望这对你有帮助。 ### 回答2: 基于QT软件串口通信上位机程序是用来连接和控制外部设备的软件。它允许用户通过串口与外部设备进行通信,并发送和接收数据。 首先,我们需要在QT中创建一个新的项目。选择一个空的窗体应用程序作为基本模板。 接下来,我们需要添加串口通信的功能。在QT中,我们可以使用QSerialPort类来实现串口通信。在代码中包含QSerialPort头文件,并实例化一个QSerialPort对象。 然后,我们可以使用QSerialPort的一些函数来配置和打开串口连接。例如,使用setPortName函数设置串口的名称,使用setBaudRate函数设置波特率,并使用open函数打开串口连接。 一旦串口连接成功打开,我们可以使用QSerialPort的write函数发送数据到外部设备。例如,使用write函数发送一个字符串。 另外,我们还可以使用QSerialPort的readyRead信号来接收从外部设备发送过来的数据。通过连接readyRead信号到一个槽函数,我们可以在收到数据时执行特定的操作。在槽函数中,我们可以使用readAll函数读取所有接收到的数据,并进行处理。 最后,我们需要在QT界面中添加一些控件来与用户交互,例如按钮或文本框。通过连接这些控件的信号和槽函数,用户可以通过点击按钮来发送数据,或者在文本框中显示从外部设备接收到的数据。 总结来说,编写基于QT软件串口通信上位机程序需要使用QSerialPort类来实现串口通信功能,并结合QT界面中的控件来实现用户交互。这样,用户就可以与外部设备进行通信并发送接收数据。 ### 回答3: 基于QT软件串口通信上位机程序包括以下步骤: 1. 首先,在QT中创建一个新的工程。选择Qt Widgets Application模板,命名为SerialCommunication。 2. 在工程目录下创建一个MainWindow类,用于构建上位机的主窗口。在主窗口中,可以添加串口通信相关的控件,如串口选择下拉列表、波特率下拉列表、打开/关闭串口按钮等。 3. 在MainWindow类中添加私有变量,用于存储串口对象、接收和发送数据的缓冲区等信息。 4. 在窗口的构造函数中初始化串口相关的参数,并连接相应的信号和槽函数。 5. 实现串口的打开和关闭功能。当用户点击打开/关闭串口按钮时,相应的槽函数会被调用,根据按钮的状态进行相应的操作,如打开串口、关闭串口并更新按钮的文本。 6. 实现接收串口数据的功能。当串口接收到数据时,会发出一个readyRead()信号,相应的槽函数会被调用。在槽函数中,可以调用串口对象的readAll()函数读取接收到的数据,并将数据显示在界面上的一个文本框中。 7. 实现发送串口数据的功能。用户可以在界面上的一个文本框中输入要发送的数据,并点击发送按钮。发送按钮的槽函数中,可以调用串口对象的write()函数将数据发送出去。 8. 最后,编译和运行程序,在上位机界面上选择合适的串口号和波特率,点击打开串口按钮,即可实现串口通信,并实时显示接收和发送的数据。 总的来说,上位机程序主要包括串口的打开和关闭、数据的接收和发送等功能。可以通过QT串口类和相关函数来实现这些功能。通过以上步骤,可以搭建一个基于QT软件串口通信上位机程序。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值