一个人· 发表于 2014-7-2 23:03:19

用了QT5官方的串口类,发现丢数据很严重!求破!

学QT中,做个串口,先用官方的例子试了下,接受UBOOT发来的数据:
结果很差·和secureCRT 完全不能比·求推荐个QT串口实现的好方法!

xckhmf 发表于 2014-7-3 07:25:46

使用第三方的qextserialport库

一个人· 发表于 2014-7-3 08:18:29

xckhmf 发表于 2014-7-3 07:25
使用第三方的qextserialport库

还没过试过,但发现2个类的读写函数基本是一样的·

bbs2009 发表于 2014-7-4 19:36:56

一个人· 发表于 2014-7-4 19:38:44

bbs2009 发表于 2014-7-4 19:36
使用第三方的qextserialport库吧。
qtcn上有。
LZ 好像 在   qtcn也发帖了。 谈论 Qt,qtcn 更靠谱 ...

是的,发帖了,额,现在好像发现不是丢数据的问题,因为有的时候是好的,有的时候不行,比较了下,感觉也许是波特率设置不够精确,导致时间长了乱码的出现·

nongxiaoming 发表于 2014-7-4 22:06:40

我也用的Qt5的串口,没发现有啥问题。

一个人· 发表于 2014-7-4 22:29:56

nongxiaoming 发表于 2014-7-4 22:06
我也用的Qt5的串口,没发现有啥问题。

我发的是UBOOT的数据过来,115200 估计量比较大把·导致出了问题。
咨询下,readall()读缓冲区的时候,如果有新的数据来,底层是怎么处理的?在建立个新的缓冲区,读完数据后,在销毁旧的,读新的?如果这样,就不会丢数据了·如果只是一个缓冲区的话,那读的时候,不就堵塞了写吗·导致丢数据。

nongxiaoming 发表于 2014-7-5 00:11:58

一个人· 发表于 2014-7-4 22:29
我发的是UBOOT的数据过来,115200 估计量比较大把·导致出了问题。
咨询下,readall()读缓冲区的时候,如 ...

应该不会是115200的问题,我一直都用的115200啊,没发现有啥问题。你readall的时候,缓冲区有多少自己就给你读回来了,驱动里面串口的缓冲区应该是一个环形缓冲区,这个是不会删除的,会是循环的,只要有空闲的缓冲区数据就读入,缓冲区满应该会有流控,如果你设置有流控的话。没有流控数据会被覆盖,但PC端的响应速度应该是很快的,不至于到缓冲区数据溢出。

一个人· 发表于 2014-7-5 18:39:13

本帖最后由 一个人· 于 2014-7-5 18:41 编辑

nongxiaoming 发表于 2014-7-5 00:11
应该不会是115200的问题,我一直都用的115200啊,没发现有啥问题。你readall的时候,缓冲区有多少自己就 ...

恩,我想了下,缓冲区应该是不会丢数据的,那估计是波特率设置时间长了,有偏移·

悟空间66 发表于 2014-7-5 18:54:46

原来大家都在用qt5啊,试了下,程序可以直接下载到android手机运行,感觉不错。

一个人· 发表于 2014-7-5 18:56:09

悟空间66 发表于 2014-7-5 18:54
原来大家都在用qt5啊,试了下,程序可以直接下载到android手机运行,感觉不错。 ...

什么程序呀,还没有试过安卓的·不知道咋样的·

悟空间66 发表于 2014-7-5 19:49:12

一个人· 发表于 2014-7-5 18:56
什么程序呀,还没有试过安卓的·不知道咋样的·

目前qt5.3 支持android 里面有很多例程,都可以下载到手机里面运行。

一个人· 发表于 2014-7-5 19:51:42

悟空间66 发表于 2014-7-5 19:49
目前qt5.3 支持android 里面有很多例程,都可以下载到手机里面运行。

那的装QT5.3 for 安卓版本吧?没有装呢,传几个拉风的上来吧?{:lol:}

wxty 发表于 2014-8-18 16:03:41

QTCN 网?

usecool 发表于 2014-8-18 16:05:44

qt5的串口类就是来自qextserialport

worldsing 发表于 2014-8-29 14:26:50

QSerialPort 在子线程里发送数据单次只能发送1K
波特率高115200
我在Qt5.2下用的。

zcbAzfl 发表于 2014-9-1 09:26:27

用5.3自带的类,目前串口接收有问题,极少时候接收的是正确的……

donglaile 发表于 2014-9-6 00:23:33

如果是事件触发方式接收,最好自己做一个环形缓冲,另外在开一个线程处理数据

richards 发表于 2015-11-8 22:44:43

xckhmf 发表于 2014-7-3 07:25
使用第三方的qextserialport库

qt5 就是集成的 qextseriaport

xwkm 发表于 2015-11-8 22:59:55

用QtSerialPort表示115200正常.Linux没问题

bbs2009 发表于 2016-1-4 12:18:10

页: [1]
查看完整版本: 用了QT5官方的串口类,发现丢数据很严重!求破!