• 3956阅读
  • 5回复

[共享]大家有什么好的延时方法没 [复制链接]

上一主题 下一主题
离线dosmlp
 

只看楼主 倒序阅读 楼主  发表于: 2014-08-08
RT
现在要延时一段时间发送串口数据
但是用QThread::sleep的话,写入后立马进入睡眠,会使数据还没发出去就睡眠了,
这样整个延时结束才会把所有数据一起发送出去,没有延时效果
使用时间循环的话又会使cpu使用率短时间内达到100%

找到解决方法:
ms即为延时毫秒,不会导致cpu使用率过高
QEventLoop eventloop;        
QTimer::singleShot(ms, &eventloop, SLOT(quit()));        
eventloop.exec();
离线千古来客

只看该作者 1楼 发表于: 2014-08-08
QEventLoop
思路来去如风
离线jnny_cn

只看该作者 2楼 发表于: 2014-08-08
void delay_ms(int n)
{
    QTime m_tmr;

    m_tmr.start();

    while(m_tmr.elapsed() < n)
    {
        QCoreApplication::processEvents();
    }
}
离线kimtaikee

只看该作者 3楼 发表于: 2014-08-08
QTimer 不能够满足你的需求吗?

离线dosmlp

只看该作者 4楼 发表于: 2014-08-08
回 jnny_cn 的帖子
jnny_cn:void delay_ms(int n)
{
    QTime m_tmr;
    m_tmr.start();
....... (2014-08-08 12:15) 

这种方法会导致CPU使用率过高(100%)
离线dosmlp

只看该作者 5楼 发表于: 2014-08-08
回 kimtaikee 的帖子
kimtaikee:QTimer 不能够满足你的需求吗?
 (2014-08-08 13:21) 

可以,但是要延时的地方很多,太麻烦了
快速回复
限100 字节
 
上一个 下一个