各位大神:
你好!本人学习qt有一段时,最近在自学做一个
串口调试工具,遇到一个难题:
难题:我再群里和百度搜索所有qt版本的,切记是qt版本的串口调试工具,都有一个
问题那就是卡死问题,主要是表现在接收大量
数据的时候。卡死的意思就是
界面不能移动,操作界面上的
其他按钮或者其他功能都有,迟钝现象。
http://www.qtcn.org/bbs/read-htm-tid-55587.html 这个是一位网友做的串口调试工具,用的就是append的方式,也就是说会自动换行,不是到
窗口边缘才会自动换行,不是铺满窗口的方式实现(首先对我来说肯定不符合要求的),如果换成平铺的方式我相信也是卡住的(本人做过测试),友善之臂qt版的串口调试,就是用平铺的方式,经过测试很明显的出现卡死问题,大家可以用AccessPort串口调试工具试试,在1ms间隔的情况下发送100字节左右,连续发送给以上介绍友善之臂qt版的串口调试,或者网上下载的qt版本就可以看到我说的结果,
http://www.qtcn.org/bbs/read-htm-tid-55587.html这位网友做的串口调试工具做的事自动换行方式,不符合这次开贴的范围内。
希望:相信做串口的同仁肯定用过AccessPort,AccessPort的实时性,流畅性是毋庸置疑的,主要体现在哪里呢?首先你可以同时打开AccessPort两次,然后用虚拟串口,将两个AccessPort同时建立连接,相互发送数据,切记在工具-配置参数中勾选自动发送,发送周期是1ms,这样就可以自动发送数据,你就可以体验到AccessPort厉害,实现性能表现在,发送端停止发送,接收端立马停止接收。流畅性:在相互发送和接收的同时,操作别的界面和按钮毫无压力,快速移动界面一点卡顿和延迟都
没有,qt版串口调试工具,都无法做到的。
怀疑:
1.由于数据量太大,导致界面刷新慢,导致主ui卡顿。这就有网友说,隔一段时间清除一下数据,我认为这不是好的想法,有时候希望所有的数据都能接收下来,同时
显示出来。
本人做过的尝试:
1.利用多线程的方式,开创一个线程接收数据,也不能解决。
2.利用定时的方式,会失去实时性能,这就有网友说,数据太快,人眼看不到没有意义,其实我觉得对我来说做数据采集实时性是很重要的,AccessPort这都能做出来,所以肯定是有需求的,至少我是喜欢做成AccessPort这样的。
3.用qapplication::processevent方式也不能解决。大概隔1分钟就卡主啦,数据量大和快的情况绝对卡主。
此问题困扰我一段时间啦希望能得到各位大神的帮助,我的qq:501809514.能帮我的请加我,谢谢。