• 7623阅读
  • 7回复

QSerialPort的问题 [复制链接]

上一主题 下一主题
离线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2014-02-24
QSerialPort port("COM1");
port.write("aaa");
if(port.waitForReadyRead(10000))  一直为false

本应该收到数据,但实际却一直没数据,如果write后,加一个QThread::msleep(1);
则可以立刻收到数据

port.write("aaa");
QThread::msleep(1);
if(port.waitForReadyRead(10000))  为true

这里面涉及CPU释放问题吗?
离线realfan

只看该作者 1楼 发表于: 2014-02-24
不知道是用法有问题,还是Qt的bug
离线dwhome

只看该作者 2楼 发表于: 2014-02-25
不是bug。
你是不是自收自发?waitForReadyRead需要重载,否则返回false
离线realfan

只看该作者 3楼 发表于: 2014-02-26
回 dwhome 的帖子
dwhome:不是bug。
你是不是自收自发?waitForReadyRead需要重载,否则返回false
 (2014-02-25 21:08) 

我实际应用场景比这个要复杂,但过程差不多。
为什么加了QThread::msleep(1);后,就可以了呢?
离线dwhome

只看该作者 4楼 发表于: 2014-02-28
可能是因为waitForReadyRead要block?
再说最好不要这么用waitForReadyRead,至少风格不好
如果用QT的信号和槽,你的问题自然不存在了
离线realfan

只看该作者 5楼 发表于: 2014-02-28
回 dwhome 的帖子
dwhome:可能是因为waitForReadyRead要block?
再说最好不要这么用waitForReadyRead,至少风格不好
如果用QT的信号和槽,你的问题自然不存在了
 (2014-02-28 18:06) 

我的程序这个是运行在某个子线程中的,不会阻塞主线程。
在同一线程,先发送,再读,因为是要等结果,所以直接wait了。
离线dwhome

只看该作者 6楼 发表于: 2014-03-17
回 realfan 的帖子
realfan:我的程序这个是运行在某个子线程中的,不会阻塞主线程。
在同一线程,先发送,再读,因为是要等结果,所以直接wait了。
 (2014-02-28 21:40) 

原来在5.1下正常,5.2就不对了,非要设个断点才有数据,与你的类似。
你的是不是这样?
离线realfan

只看该作者 7楼 发表于: 2014-03-19
回 dwhome 的帖子
dwhome:原来在5.1下正常,5.2就不对了,非要设个断点才有数据,与你的类似。
你的是不是这样? (2014-03-17 21:50) 

最近还遇到个更诡异的问题呢.准备另帖详说
快速回复
限100 字节
 
上一个 下一个