标题:qt5串口类 要打开qtcreator才能正常通讯的BUG
作者:引号
日期:2014-08-16 08:05
内容:
我用qt5.2的QSerialPort类开发了个串口通讯的程序,可是发现了一个无语的BUG,来请教解决之道!
情况是这样的,程序写好了,编译运行都没有问题,打包好发布也是没有问题,可以运行的,也能通讯。
可是,当我单独运行发布的程序时,串口通讯时频繁出现帧截断、帧丢失和不回应,出错的频率大概有1/3。此时,我打开qtcreator,仅仅是打开这个qtcreator,没有加载任何工程,立即,串口通讯再也没有出现丢帧等问题了,当我把qtcreator关掉的时候,立马又开始出错了。
我和朋友的分析是,首先不能是dll缺失,因为缺失的话运行不起来。我朋友觉得是我的程序和qtcreator共享某个dll模块,而我自己的程序没有对该模块“预热”,打开qtcreator后它使得那个模块正常运作,使得串口通讯非常稳定,没有出错。
可是这仅是个想法,没办法解决问题。请大侠们指点一条明路~
#1 [chenxipu 03-07 15:47]
不要使用QSerialPort类,不成熟,使用网上有的ExtSerialPort,最好是使用底层源码重新封装一个。
#2 [yanwuyue 03-07 18:17]
没碰到过,之前用过5.2,现在用5.5.1
#3 回 chenxipu 的帖子 [ysu533 03-09 03:24]
chenxipu:不要使用QSerialPort类,不成熟,使用网上有的ExtSerialPort,最好是使用底层源码重新封装一个。(2016-03-07 15:47)
并没有不成熟一说, 这个代码其实存在很久了, 我2012年(或者更早)就用过了, 这个和 ExtSerialPort 还有渊源. 原作者本想重构 ExtSerialPort, 结果自己写了个 QSerialDevice. QSerialDevice 更新到某个版本就看到作者写了几句话, QSerialDevice 将并入 Qt 5 官方库(好像是 qt5正式版还没出的时候), 所以不在更新了. QSerialDevice 就是现在 QSerialPort 的前身. 相反 ExtSerialPort 停更好久了吧.