• 5239阅读
  • 3回复

[提问]qt5串口类 要打开qtcreator才能正常通讯的BUG [复制链接]

上一主题 下一主题
离线引号
 

只看楼主 倒序阅读 楼主  发表于: 2014-08-16
— 本帖被 XChinux 从 其它技术开发讨论区 移动到本区(2016-06-22) —
我用qt5.2的QSerialPort开发了个串口通讯的程序,可是发现了一个无语的BUG,来请教解决之道!
情况是这样的,程序写好了,编译运行都没有问题,打包好发布也是没有问题,可以运行的,也能通讯。
可是,当我单独运行发布的程序时,串口通讯时频繁出现帧截断、帧丢失和不回应,出错的频率大概有1/3。此时,我打开qtcreator,仅仅是打开这个qtcreator,没有加载任何工程,立即,串口通讯再也没有出现丢帧等问题了,当我把qtcreator关掉的时候,立马又开始出错了。
我和朋友的分析是,首先不能是dll缺失,因为缺失的话运行不起来。我朋友觉得是我的程序和qtcreator共享某个dll模块,而我自己的程序没有对该模块“预热”,打开qtcreator后它使得那个模块正常运作,使得串口通讯非常稳定,没有出错。
可是这仅是个想法,没办法解决问题。请大侠们指点一条明路~
离线chenxipu

只看该作者 1楼 发表于: 2016-03-07
不要使用QSerialPort类,不成熟,使用网上有的ExtSerialPort,最好是使用底层源码重新封装一个。
欢迎外包团队的邀请,欢迎外包项目的提供。
离线yanwuyue

只看该作者 2楼 发表于: 2016-03-07
没碰到过,之前用过5.2,现在用5.5.1
离线ysu533

只看该作者 3楼 发表于: 2016-03-09
回 chenxipu 的帖子
chenxipu:不要使用QSerialPort类,不成熟,使用网上有的ExtSerialPort,最好是使用底层源码重新封装一个。 (2016-03-07 15:47) 

并没有不成熟一说, 这个代码其实存在很久了, 我2012年(或者更早)就用过了, 这个和 ExtSerialPort 还有渊源. 原作者本想重构 ExtSerialPort, 结果自己写了个 QSerialDevice. QSerialDevice 更新到某个版本就看到作者写了几句话, QSerialDevice 将并入 Qt 5 官方库(好像是 qt5正式版还没出的时候), 所以不在更新了. QSerialDevice 就是现在 QSerialPort 的前身. 相反 ExtSerialPort 停更好久了吧.
快速回复
限100 字节
 
上一个 下一个