• 15006阅读
  • 21回复

Qt5.3.0串口通讯依然有问题 [复制链接]

上一主题 下一主题
离线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2014-05-22
Qt5.3.0串口通讯依然有问题
在子线程中,程序每隔一秒,发一条23个字符的指令到串口设备,如果串口收到设备反馈数据,会读出在程序界面显示
最初是正常的,但过一段时间(有时过几分钟,有时过十几分钟),设备端就收不到程序发的数据了,代码显示是发送成功pcom->write是成功的,但接收端什么都收不到。

用第三方串口通讯类qextserialport,就一直正常。
离线jnny_cn

只看该作者 1楼 发表于: 2014-05-22
严重关注此问题
离线dbzhang800

只看该作者 2楼 发表于: 2014-05-22
感觉上,QtSerialPort 最大的问题在于:它的两个维护者都不是digia的,而且二人之间意见经常性不合。
离线realfan

只看该作者 3楼 发表于: 2014-05-22
回 dbzhang800 的帖子
dbzhang800:感觉上,QtSerialPort 最大的问题在于:它的两个维护者都不是digia的,而且二人之间意见经常性不合。 (2014-05-22 12:52) 

还是qextserialport稳定。

不知道他们是否发现该问题
离线realfan

只看该作者 4楼 发表于: 2014-05-22
回 dbzhang800 的帖子
dbzhang800:感觉上,QtSerialPort 最大的问题在于:它的两个维护者都不是digia的,而且二人之间意见经常性不合。 (2014-05-22 12:52) 

code google上的代码,还在维护吗
离线wenjin1314

只看该作者 5楼 发表于: 2014-05-22
回 dbzhang800 的帖子
dbzhang800:感觉上,QtSerialPort 最大的问题在于:它的两个维护者都不是digia的,而且二人之间意见经常性不合。 (2014-05-22 12:52) 

这你都知道,版主实在是强。
离线dbzhang800

只看该作者 6楼 发表于: 2014-05-22
回 realfan 的帖子
realfan:code google上的代码,还在维护吗 (2014-05-22 13:38) 

因为QSerialDevice作为QtSerialPort被接收到了Qt5中。QExtSerialPort现在已经没有动力进行新版本的开发。

不过 QextSerialPort1.2 中,有bug的话,还是要继续修复的。
离线dwhome

只看该作者 7楼 发表于: 2014-05-22
还是调os API吧
离线realfan

只看该作者 8楼 发表于: 2014-05-22
后来感觉与串口buffer可能有关。继续测试观察。
离线liulin188

只看该作者 9楼 发表于: 2014-05-22
回 realfan 的帖子
realfan:还是qextserialport稳定。
不知道他们是否发现该问题 (2014-05-22 13:35) 

qextserialport确实很好,但是好像好久不更新了。
另外qextserialport用多线程的话有个不爽,就是他没有实现waitForBytesRead,得自己写sleep循环。不知道版主是怎么处理的。
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线realfan

只看该作者 10楼 发表于: 2014-05-23
回 liulin188 的帖子
liulin188:qextserialport确实很好,但是好像好久不更新了。
另外qextserialport用多线程的话有个不爽,就是他没有实现waitForBytesRead,得自己写sleep循环。不知道版主是怎么处理的。 (2014-05-22 22:42) 

是waitForReadyRead吧
这个是继承自QIODevice的,
qextserialport应该也能用吧
离线dragon_fly

只看该作者 11楼 发表于: 2014-05-23
回 liulin188 的帖子
liulin188:qextserialport确实很好,但是好像好久不更新了。
另外qextserialport用多线程的话有个不爽,就是他没有实现waitForBytesRead,得自己写sleep循环。不知道版主是怎么处理的。 (2014-05-22 22:42)

我这好像也有类似问题,虽然sleep了,下位机和上位机同步数据,还是有丢数据的时候,不知道怎么处理

离线realfan

只看该作者 12楼 发表于: 2014-05-23
今天突然想起,可能是流控没有打开,打开流控,在buffer满时,可以捕捉到发送失败。
离线liulin188

只看该作者 13楼 发表于: 2014-05-23
目前用QSerialPort做过10来种usb转串口设备的通信
在某些设备和驱动上工作很好,某些会蓝屏,某些直接打开串口失败
和设备和驱动有很大关系,当然也反映了QSerialPort的兼容性和稳定性太差
qextSerialPort基本没这些问题
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线realfan

只看该作者 14楼 发表于: 2014-05-23
回 liulin188 的帖子
liulin188:目前用QSerialPort做过10来种usb转串口设备的通信
在某些设备和驱动上工作很好,某些会蓝屏,某些直接打开串口失败
和设备和驱动有很大关系,当然也反映了QSerialPort的兼容性和稳定性太差
qextSerialPort基本没这些问题 (2014-05-23 10:36) 

嗯,还是老老实实用qextSerialPort了。
离线stlf

只看该作者 15楼 发表于: 2014-05-23
可以向作者report一下这些bug。
离线peterlin82

只看该作者 16楼 发表于: 2014-06-05
小弟用Qt 5.2。不论是在Raspberry Pi或在Windows下使用QSerialPort都正常说。而且都是长时间连线。一次都连一个月以上。

至于USB转串口我至今没买过可长时间连线的。是硬件本身问题。
离线realfan

只看该作者 17楼 发表于: 2014-06-05
回 peterlin82 的帖子
peterlin82:小弟用Qt 5.2。不论是在Raspberry Pi或在Windows下使用QSerialPort都正常说。而且都是长时间连线。一次都连一个月以上。
至于USB转串口我至今没买过可长时间连线的。是硬件本身问题。 (2014-06-05 21:02) 

如果说是硬件问题,同样的硬件,用第三方的qextserialport串口通讯类,就没问题。
离线nettoobad

只看该作者 18楼 发表于: 2014-06-07
其实我不懂为什么要用QT的串口,其他好的串口实现多的是。
QT只要专注于UI可能才是正道。
quant
use c++ python ace qt
离线dbzhang800

只看该作者 19楼 发表于: 2014-06-07
回 nettoobad 的帖子
nettoobad:其实我不懂为什么要用QT的串口,其他好的串口实现多的是。
QT只要专注于UI可能才是正道。
 (2014-06-07 08:29) 

你能举几个其他的跨平台的串口实现的例子么?
Qt下串口主要就是要提供QIODevice的接口,易于在Qt程序中使用。

如果有开源的,跨平台的,测试良好的,C/C++的串口库,那就完全没必要用Qt重新实现了。直接创建一个QIODevice的派生类,内部封装第三方库就行了,bug少,维护成本也低
离线xilanglang

只看该作者 20楼 发表于: 2015-06-09
初学者 mark 一下
不积跬步无以至千里
离线z55716368

只看该作者 21楼 发表于: 2015-07-16
回 liulin188 的帖子
liulin188:目前用QSerialPort做过10来种usb转串口设备的通信
在某些设备和驱动上工作很好,某些会蓝屏,某些直接打开串口失败
和设备和驱动有很大关系,当然也反映了QSerialPort的兼容性和稳定性太差
qextSerialPort基本没这些问题 (2014-05-23 10:36) 

请问你是如何去检测数据线断开的状态呢,我现在做的这个不能进行握手检测
每一个问题 都是一次进步
快速回复
限100 字节
 
上一个 下一个