QT 高精计时器

最近需要使用QT5写个上位机串口助手,给嵌入式系统发送指令,时间要求比较短,需要22ms一次数据流。
在网上查阅资料后发现,QT有两种方法设置定时器:
1. QObject
2. QTimer
当然网上关于怎样使用这两个类的讲解很多,如:http://blog.csdn.net/andy_93/article/details/52776283

然而一个比较尴尬的事情是,这两个定时器对于20ms以下的定时,工作的很好,对于20ms到30多ms却很糟糕,40ms以上又能正常工作。

这到底是什么鬼呢?
原来对于QT的定时器,有两种机制:
1. 当时间小于20ms时且系统支持多媒体计时器,QT将采用多媒体计时器
2. 否则,QT使用普通定时器

22ms这个尴尬的时间正好使QT使用普通定时器,精度显而易见也就相差甚远了。

那就需要自己写个Timer类,来直接调用系统的多媒体计时器了。

代码:
在QT中添加头文件,mmtimer.h如下:

#i
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值