QT串口通信 如何判断是否有数据从串口中发送过来

NothingIsPossible7 2018-08-09 02:46:23
如何判断是否有数据从串口发送过来?
在我串口发送指令的函数中,当我使用write函数往串口发送指令之后
然后在wirte函数下面调用 serial->waitforReadyread(2000) 等待是否有readyread的信号触发
以用来判定是否有数据从串口发送过来
尽管我能从串口中收到数据,就是与Readyread()信号绑定的槽函数都能执行
但是在我write函数下面调用的 waitforReadyread()永远返回的值是 false 就是它捕捉不到readyread()信号,
请问这是什么问题?
...全文
3135 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
满桌烟灰 2019-10-24
  • 打赏
  • 举报
回复
waitforReadyread()没有设置超时时间,设置为 -1,则不会发生超时
为你而回忆 2019-10-23
  • 打赏
  • 举报
回复
楼主,你这样不会卡死在waitforReadyread函数里吗?发送数据后应该就被waitforReadyread函数阻塞了啊?
Summy Zhi 2019-10-11
  • 打赏
  • 举报
回复
我也碰到过这种情况,我之前的Qt好像时5.1.4版本,发送完之后,等待发送完成后就可以使用readall()读取所有的函数。我目前用的qt5.11版本就不能这样做,必须要在readyread的槽函数中使用readAll()才能读取到数据。感觉可能时版本之间的差异,也许还有其他原因
_skytrails 2019-10-11
  • 打赏
  • 举报
回复
我都是waitforReadyread再readyRead 再readAll QT5.10
Acuity. 2018-09-01
  • 打赏
  • 举报
回复
开一个缓存,把数据读倒缓存里面,要使用时再从缓存读出来。底层驱动也带接收缓存,但不大,如果数据量大,就有可能导致数据丢失。
xqhrs232 2018-09-01
  • 打赏
  • 举报
回复
不是可以挂信号槽的吗?
justinsuperhuang 2018-08-24
  • 打赏
  • 举报
回复
时间到了,或者是有错误就会返回false,你串口是不是出现什么错误,把错误码打印一下
NothingIsPossible7 2018-08-09
  • 打赏
  • 举报
回复
引用 2 楼 zzxap 的回复:
再数据接收接口看看,通过head+length 判断数据读取完毕

你好,谢谢你的回复
但是我目前的问题是 需要判断是否有数据从串口发送过来 而不是判断发送过来的数据是否完整
NothingIsPossible7 2018-08-09
  • 打赏
  • 举报
回复
自己顶一下!!! 为什么直接在write函数下面 readall 会读不到数据 只有在与readyread信号绑定的槽中readall才会读到数据
zzxap 2018-08-09
  • 打赏
  • 举报
回复
再数据接收接口看看,通过head+length 判断数据读取完毕
NothingIsPossible7 2018-08-09
  • 打赏
  • 举报
回复

16,228

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧