QT串口数据接收上位机

1.界面设计

设计的上位机界面如下图所示,包括显示接收数据的文本框和串口的配置区域,以及向采集系统发送开始采集数据和停止的Button按钮。
上位机界面
其中,端口和波特率使用的是Input Widgets中的Combo Box
在这里插入图片描述
使用时双击,点加号添加元素即可。调用如下函数获取选择的值:

ui->comboBox_2->currentIndex()

文本输入框Line Edit获取输入的函数如下:

ui->lineEdit->text()

如果输入的是数字,可以转换为int方便处理

ui->lineEdit->text().toUInt()

文本显示框textBrowser的显示调用如下函数,buff为Qstring类型

ui->textBrowser->setText(buff);

2.串口配置

首先,在.pro文件中加入串口模块,并在头文件中包含串口头文件

QT       += serialport
#include <QtSerialPort>

然后,定义一个串口global_port,配置串口的端口号、波特率等参数。还需要将串口接收信号与槽函数进行绑定,在槽函数中对接收到的数据进行处理。最后打开串口:

QSerialPort global_port;    //串口
global_port.setPortName("COM1");
global_port.setBaudRate(QSerialPort::Baud9600);
global_port.setParity(QSerialPort::NoParity);
global_port.setDataBits(QSerialPort::Data8);
global_port.setStopBits(QSerialPort::OneStop);

connect(&global_port ,SIGNAL(readyRead()) , this ,SLOT(on_readyRead()));

global_port.open(QSerialPort::ReadWrite);

串口的读写函数如下,读取时要定义一个QByteArray类型的变量来存储串口接收到的数据。

QByteArray array = global_port.readAll();       //测试发现每次最多读512个

global_port.write(buff,3);

关闭串口的函数:

global_port.close();

3.文件读写

首先包含QT文件操作的头文件:

#include <QFile>

定义一个文件变量,并给定文件的路径(这里我是基于当前时间自己生成一个文件名和路径,方法有点笨但能用0_0):

/*利用当前时间命名文件名*/
QDateTime curDateTime=QDateTime::currentDateTime();
QString times = curDateTime.time().toString();
QString tem;
tem = times.left(5);
times = times.left(2)+tem.right(2)+times.right(2);  //文件名不能有: 将其去掉
f_name = "./DATE/" + times + ".txt";
QFile f(f_name);

然后就对文件流进行读写操作:

if(!f.open(QIODevice::WriteOnly | QIODevice::Append))
{
    qDebug() << "Open failed.";
    return -1;
}
QTextStream txtOutput(&f);
txtOutput << buff;

读取文件函数类似读取串口:

QByteArray t = file.readAll();

打开文件的方式:

模式Value描述
QIODevice::NotOpen0x0000不打开
QIODevice::ReadOnly0x0001只读方式
QIODevice::WriteOnly0x0002只写方式,如果文件不存在则会自动创建文件
QIODevice::ReadWrite0x0003读写方式
QIODevice::Append0x0004此模式表明所有数据写入到文件尾
QIODevice::Truncate0x0008打开文件之前,此文件被截断,原来文件的所有数据会丢失
QIODevice::Text0x0010读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为,例如win32的结束位’\r\n’
QIODevice::UnBuffered0x0020不缓存

4.使用QT遇到的一些问题

没有系统的学习过QT这个软件,只是需要用什么功能的时候就找找代码学习一下,所以遇到了些问题,记录一下。
1.构建路径
用别人的project时要修改构建路径,不然会出一些奇怪的问题。
在这里插入图片描述
2.ui里添加了块但是ui->不出来
一个原因可能是没保存ui文件,其他原因暂时不知道是怎么回事,我的解决办法是重新打开project或者在添加一个相同的块,这时可能能够ui->出之前那个,但是新添加的还是没有。希望大佬能解答下这个问题。

5.excle保存数据

excle有导入数据的功能,可以将规整的数据文件直接导入导表格中
在这里插入图片描述
我在数据发送端将数据处理为用逗号隔开的形式并按行发送,上位机接收到数据后便不需要处理直接写入文件中即可。
在这里插入图片描述

6.上位机程序

上位机程序下载链接:

QT_usart_file.rar

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值