网易首页 > 网易号 > 正文 申请入驻

Qt 串口通信接收数据不完整,怎么解决?

0
分享至

【CSDN 编者按】使用Qt编写串口的上位机时,串口通信过程中有时会遇到数据接收不完整的问题,下位机一次发送的数据可能会分为两次甚至多次接收,这样就导致数据接收不完整,该如何解决呢?

作者 | 李肖遥 责编 | 欧阳姝黎

场景

下位机使用串口通信,上位机使用 Qt 开发,上位机从串口每次接收到的数据不完整,例如 下位机 printf("123456789");,串口上位机接收到的数据则是123、45、6789,而不是 123456789

这是我随意接收的数据,想解析数据,但是接收不到完整的数据


找到问题

我们使用的是 Qt 自带的串口模块,在 .pro 模块里可以看到。

QT += serialport

在使用 Qt 自带的串口 QtSerialPort 时,其发送过来的数据需要进行接收,则需要连接一个相应的槽函数:

//连接信号和槽
QObject::connect(&serial, &QSerialPort::readyRead, this, &frmNetTool::serialPort_readyRead);

QSerialPort的readyRead()信号,只要有数据就抛出,执行 serialPort_readyRead 函数,这就导致一条数据分多次抛出。

void serialPort_readyRead()
//从接收缓冲区中读取数据
QByteArray buffer = serial.readAll();
qDebug() << "recv:" << buffer;

这种情况当数据量大的时候会接收不完整,因为串口数据获取函数 readAll()由readyRead()信号触发,但 readyRead()信号在串口读到起始标志时立即发送,并不保证一定是当前所发数据的起始部分。

由于正常的数据没有固定的开头和结尾,而我们可能需要一包完整的数据才能解析,这种情况就会导致无法获取正常的一组数据


解决思路

  • 增加通信协议

串口通信双方在通信前应制定好通信协议(一般增加首尾标志即可),规定好数据的起始和结束标志,串口当读到完整的起始和结束标志之后,才认定读完一条完整的数据。

如果知道包长的话,根据包长度来确认数据接收完。

  • 增加接收延时功能

给出一个超时处理机制,把多次读取的数据保存到缓冲区,延时结束,一次性读取数据,然后根据对应的包的标志来解析数据。

  • 两者结合实现 增加包的头尾、或者标志位,同时增加定时器接收功能来解决这个问题。

由于 QSerialPort 没有提供串口接收延时功能,需自己添加

QTimer *timerSerial;
timerSerial = new QTimer(this);
connect(timerSerial,SIGNAL(timeout()),this,SLOT(TimerUpdate()));

串口信号触发标志处理函数更改如下,启动定时器,定时时间可以根据实际情况更改,接收数据缓存在 buffer 中。

void serialPort_readyRead()
timerSerial->start(100);
buffer.append(serial.readAll());

定时时间到之后,处理数据,TimerUpdate 函数如下,先关闭定时器,然后拿到数据,根据包的特征来解析即可

void TimerUpdate_COM()
timerSerial->stop();
if(buffer.length() !=0)
ui->recvTextEdit->append(buffer);
if(buffer.contains("Package")){
QString string = buffer;
QStringList list = string.split(",");
//qDebug() << "list" << list[2].toFloat()/list[1].toFloat();

buffer.clear();

最终得到的结果还是可以用的

当然这种解决办法还是看自己的实际情况,最好是根据通信协议来解析数据,并且加上校验,才能保证万无一失。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
乌兹别克斯坦夫人给韩国夫人上了一堂出访课,这次遇到了强对手!

乌兹别克斯坦夫人给韩国夫人上了一堂出访课,这次遇到了强对手!

小毅讲历史
2024-06-15 19:11:33
31岁河南禹州市医保局局长任小龙,拟遴选进入省政府办公厅

31岁河南禹州市医保局局长任小龙,拟遴选进入省政府办公厅

澎湃新闻
2024-06-15 21:58:28
马斯克:一面是天才一面是疯子,从小混乱的家庭关系让他无法正常

马斯克:一面是天才一面是疯子,从小混乱的家庭关系让他无法正常

照见古今
2024-01-06 18:43:16
董方卓看瑞士3-1匈牙利有感:我们和现代足球差距何止场上球员

董方卓看瑞士3-1匈牙利有感:我们和现代足球差距何止场上球员

直播吧
2024-06-15 23:40:52
你还买电动车吗?国际能源署警告:到2030年末,全球石油市场将面临严重过剩【附全球石油市场供需现状分析】

你还买电动车吗?国际能源署警告:到2030年末,全球石油市场将面临严重过剩【附全球石油市场供需现状分析】

前瞻网
2024-06-13 17:08:14
梅西双响!443天首次独造3球,连刷6纪录,又创阿根廷队史纪录

梅西双响!443天首次独造3球,连刷6纪录,又创阿根廷队史纪录

奥拜尔
2024-06-15 09:54:43
9.0分!西班牙MVP挥拳咆哮:3分钟造2球,皇马大师惨遭戏耍

9.0分!西班牙MVP挥拳咆哮:3分钟造2球,皇马大师惨遭戏耍

我的护球最独特
2024-06-16 02:31:37
风景壁纸:青山大海

风景壁纸:青山大海

小影的娱乐
2024-06-15 12:12:52
事发上海街头,助动车和汽车突然相撞,交警发声:不公平!上海警方曾多次强调→

事发上海街头,助动车和汽车突然相撞,交警发声:不公平!上海警方曾多次强调→

上观新闻
2024-06-15 22:35:50
枪手超市开业!低价甩卖4大球星 收入有望破亿

枪手超市开业!低价甩卖4大球星 收入有望破亿

球事百科吖
2024-06-15 20:42:16
突发!朝鲜重磅宣布,美国最不愿意看到的一幕发生了!

突发!朝鲜重磅宣布,美国最不愿意看到的一幕发生了!

大嘴说天下
2024-06-15 09:51:24
R.I.P.前阿森纳前锋凯文-坎贝尔去世,享年54岁

R.I.P.前阿森纳前锋凯文-坎贝尔去世,享年54岁

直播吧
2024-06-15 17:36:09
美媒:美西南航空一架波音737 Max 8型客机在高空发生“荷兰滚”现象

美媒:美西南航空一架波音737 Max 8型客机在高空发生“荷兰滚”现象

环球网资讯
2024-06-15 16:10:11
难怪有人对父母感到心寒!看了网友的分享,心酸得想大哭一场

难怪有人对父母感到心寒!看了网友的分享,心酸得想大哭一场

镜头时光
2024-06-11 00:54:32
20-1!欧洲杯大屠杀,德国倒退10年

20-1!欧洲杯大屠杀,德国倒退10年

足球大号
2024-06-15 13:35:30
6月15日俄乌:92国出席瑞士和平峰会,G7有收获,普京提和谈条件

6月15日俄乌:92国出席瑞士和平峰会,G7有收获,普京提和谈条件

山河路口
2024-06-15 14:28:58
上海女子请人上门灭白蚁崩溃:几百元就能解决,对方竟收了9000元!网友:按只收费?

上海女子请人上门灭白蚁崩溃:几百元就能解决,对方竟收了9000元!网友:按只收费?

上海圈
2024-06-15 12:38:41
为什么“父亲节”变得如此低调呢?

为什么“父亲节”变得如此低调呢?

叒女紫121
2024-06-15 17:02:11
“南涝北旱”之下:有河南农户一个人浇地60亩,有广东居民一周没见到太阳

“南涝北旱”之下:有河南农户一个人浇地60亩,有广东居民一周没见到太阳

红星新闻
2024-06-15 17:47:11
9小时票房仅156万,彭于晏新片票房受挫,成本超1.5亿,回本无望

9小时票房仅156万,彭于晏新片票房受挫,成本超1.5亿,回本无望

靠谱电影君
2024-06-15 09:14:46
2024-06-16 02:54:44
CSDN
CSDN
成就一亿技术人
24726文章数 241820关注度
往期回顾 全部

科技要闻

TikTok开始找退路了?

头条要闻

欧洲杯-亚马尔创纪录卡瓦哈尔首球 西班牙3-0克罗地亚

头条要闻

欧洲杯-亚马尔创纪录卡瓦哈尔首球 西班牙3-0克罗地亚

体育要闻

莱夫利,让困难为我让路

娱乐要闻

江宏杰秀儿女刺青,不怕刺激福原爱?

财经要闻

新情况!高层对人民币的态度180°转弯

汽车要闻

东风奕派eπ008售21.66万元 冰箱彩电都配齐

态度原创

游戏
时尚
艺术
本地
军事航空

魂师对决:SP唐昊返场抽取价值分析!真身幻金真是一个都少不了!

艳压四方的刘亦菲,也没能赢她

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

军事要闻

普京提停火和谈条件 美防长迅速回应

无障碍浏览 进入关怀版