<QT障碍之路>qt中使用串口类接收数据不完整
问题:当用QT中的serial->readAll()的时候,不会把全部的数据一次性都读取出来,而是阶段性的。原因是因为当串口有信号时候,readyRead()信号就会被抛出,那么一帧完整的数据帧就可能被分多次接收进来,会影响一些后续的操作。
解决方法:
1.通讯双方提前定义好帧头和帧尾,方便进行校验。当检测到到帧头和帧尾,才认定一帧数据时完整的。
2.在readyRead()信号抛出后,再readAll()函数前使用延时函数,等待一帧数据完全发送完成。
/* 以下只是部分代码 */
#include <QTimer> int main()
{
QTimer *timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(timerStop()));
} void Dialog::timerStop(void)
{
g_RecBuf.prepend(0xBB);
timer->stop();
{
qDebug()<<g_RecBuf;
Dialog::saveDataToFile(g_RecBuf);
}
g_RecBuf.clear();
} void Dialog::readParam()
{
timer->start();
g_RecBuf.append(serial->readAll());
}
<QT障碍之路>qt中使用串口类接收数据不完整的更多相关文章
- Qt串口通信接收数据不完整的解决方法(传输图片)
在使用串口接收数据时,当数据量大的时候会出现数据接收不完整的情况.因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即发送,并不 ...
- Qt串口通信接收数据不完整的解决方法
在使用串口接收数据时,当数据量大的时候会出现数据接收不完整的情况.因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即发送,并不 ...
- Qt 学习之路 2(14):对话框数据传递
Home / Qt 学习之路 2 / Qt 学习之路 2(14):对话框数据传递 Qt 学习之路 2(14):对话框数据传递 豆子 2012年9月15日 Qt 学习之路 2 53条评论 对话框 ...
- 【转】QT 串口QSerialPort + 解决接收数据不完整问题
类:QSerialPort 例程:Examples\Qt-5.9.1\serialport\terminal,该例子完美展示了qt串口收发过程,直接在这上面修改就可以得到自己的串口软件.核心方法 // ...
- arcgis python 使用光标和内存中的要素类将数据加载到要素集 学习:http://zhihu.esrichina.com.cn/article/634
学习:http://zhihu.esrichina.com.cn/article/634使用光标和内存中的要素类将数据加载到要素集 import arcpy arcpy.env.overwriteOu ...
- QT学习之路-QT服务器-mysql数据库相关问题集锦(1)
时间:2017-04-07 异常信息: Error - RtlWerpReportException failed with status code :-1073741823. Will try to ...
- C# 解决串口接收数据不完整
方法1: 使 用缓存机制完成.首先通过定义一个成员变量List<byte> buffer = new List<byte> (4096);用来存放所有的数据,在接收函数里,通过 ...
- Linux/windows com串口 java 接收数据 并解析 web程序
1.首先应公司要求再 com 口本来使用 .net 由于 .net 适用 linux 太麻烦 改为java 准备工作 准备 RXTXconmm.jar(版本很重要) 因为版本问题我搞了一天. 主要讲述 ...
- Winform串口编程---接收数据demo(VSPD虚拟串口)
参考地址:https://blog.csdn.net/memgxingfeixiang/article/details/52513970 https://blog.csdn.net/kevin_io ...
随机推荐
- hadoop-08-关闭THP服务
hadoop-08-关闭THP服务 #查看THP服务cat /sys/kernel/mm/redhat_transparent_hugepage/enabledcat /sys/kernel/mm/r ...
- wsimport 使用方法具体解释
wsimport 使用方法 本文主要介绍wsimport的简单使用方法.帮助大家在webserviceclient开发过程中生成接口代码: 打开java JDK文件夹我们会看到wsimport工具,这 ...
- Android configChanges使用方法
1. 在manifest文件里使用activity的默认属性.横屏竖屏时,惠重复调用onDestory和onCreate 造成不必要的开销.Android默认如此应该是为了适配不同的xml布局 ...
- angularjs 标签指令
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- vim 插件之NERD tree
NERD tree 这个插件可以用来快速浏览目录结构,打开文件 地址 http://www.vim.org/scripts/script.php?script_id=1658 https://gith ...
- ConfigurationSection
https://msdn.microsoft.com/en-us/library/system.configuration.configurationsection(v=vs.110).aspx Re ...
- zzulioj--1776--和尚特烦恼2——第几个素数(技巧模拟)
1776: 和尚特烦恼2--第几个素数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 267 Solved: 100 SubmitStatusWeb ...
- Mysql常见更改密码方法
ERROR (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) ch ...
- jquery重新渲染的问题
今天动态加载了一个a标记,使他被渲染为linkbutton 在拼该a标记串时,将class属性设置为:class='easyui-linkbutton' ,然而却没有看到linkbutton的效果,原 ...
- vue中指令写了一个demo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...