• 6985阅读
  • 8回复

串口调试工具遇到的问题-大神请进 [复制链接]

上一主题 下一主题
离线蛋蛋
 

只看楼主 倒序阅读 楼主  发表于: 2014-09-20
各位大神:
       你好!本人学习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.能帮我的请加我,谢谢。

离线liudianwu

只看该作者 1楼 发表于: 2014-09-21
AccessPort直接从驱动层控制数据收发,绝对比任何高级语言写的都要快!QT的串口对于毫秒级大数据的收发处理不是很好,在windows下面是这样,估计在linux下会更好些!
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线蛋蛋

只看该作者 2楼 发表于: 2014-09-21
@liudianwun其实不是qt串口接收不过来,而是显示不过来,按照AccessPort方式接收(不自动换行)
离线qsrong

只看该作者 3楼 发表于: 2014-09-28
如果数据要求比较高, 建议用MOXA公司的PComm Lite,windows下免费可用,MOXA基本就是靠串口吃饭的,他们提供的API非常好用,我们公司很早做VB开始就用这个库了,,现在QT也是,
http://www.moxa.com/product/Console_Terminal_Software.htm
下载后看帮助手册和例程,
1条评分金钱+1
蛋蛋 金钱 +1 - 2014-09-28
离线蛋蛋

只看该作者 4楼 发表于: 2014-09-28
谢谢哦,我先试试,如果有问题再找你哦
离线libing_

只看该作者 5楼 发表于: 2014-10-07
回 liudianwu 的帖子
liudianwu:AccessPort直接从驱动层控制数据收发,绝对比任何高级语言写的都要快!QT的串口对于毫秒级大数据的收发处理不是很好,在windows下面是这样,估计在linux下会更好些! (2014-09-21 13:20) 

武哥  你写的那个串口通讯的代码,用的那个自带类QSerisPort();能实现吗,
离线蛋蛋

只看该作者 6楼 发表于: 2014-10-09
我觉得跟用哪个串口类没有关系,问题不是在串口那,是在显示那。大家都可以做测试,不间断的给文本显示控件传递数据,看看就知道。
离线宫玖

只看该作者 7楼 发表于: 2014-11-06
回 libing_ 的帖子
libing_:武哥  你写的那个串口通讯的代码,用的那个自带类QSerisPort();能实现吗, (2014-10-07 20:28) 

我也看过@刘典武的代码,可以。
离线gjy311

只看该作者 8楼 发表于: 2014-11-07
回 qsrong 的帖子
qsrong:如果数据要求比较高, 建议用MOXA公司的PComm Lite,windows下免费可用,MOXA基本就是靠串口吃饭的,他们提供的API非常好用,我们公司很早做VB开始就用这个库了,,现在QT也是,
http://www.moxa.com/product/Console_Terminal_Software.htm
下载后看帮助手册和例程, (2014-09-28 21:28) 

回去试一试
快速回复
限100 字节
 
上一个 下一个