vincen
我在工程中的解决方案windows下的精确定时器
测 控系统的实时性是系统正常工作的保证,特别对于精度要求较高的系统,需要精确定义各子系统的工作周期。传统的测控系统为了实现实时工作,常采用DOS计时 器中断技术,修改可编程定时器8353的计数值,在定时器计数结束时产生中断,系统在中断服务程序中完成一个时间周期的操作。利用DOS中断技术,可以很 方便地开发出实时测控软件。但是在DOS下很难开发出具有良好人机交互功能的应用程序,且程序扩展性较差,因此很多技术人员转而寻求在Windows下实 现精确定时。Windows提供了2种定时器。一种是常用的系统计时器,他使用函数SetTimer为程序分配一个计时器,应用程序响应SetTimer 函数发送来的消息WM_T IM ER,在回调函数中完成相应操作。Windows系统定时器是IBM PC硬件和ROM BIOS构造的定时器逻辑的一个相当简单的扩展。PC的ROM初始化8253定时器芯片产生硬件中断08H。中断08H每隔54.915 ms产生一次,或18.2次/s,因此Windows系统定时器的最大分辨率为55 ms,即应用程序每秒只能处理18个实时任务。此外,这个计时器消息的优先级太低,只有在所有的消息(除了消息WM_PAINT)被处理后才能被处理。因 此函数SetTimer只能用于一般的定时,他远远不能满足实时测控系统的要求。为实现系统精确定时,本文采用Win dows多媒体定时器, 他的精度非常高,与硬件中断相当,同时Windows多媒体定时器的优先级很高,他按设定的时间间隔发送消息而不管其他进程是否执行完。常用的Intel 系统多媒 体定时器的最小定时精度可达1 ms,可以满足大部分测控系统实时性的要求。
posted on 2007-09-18 08:19
vincen
阅读(530)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
导航
C++博客
首页
联系
聚合
管理
统计信息
随笔 - 7
文章 - 3
评论 - 0
Trackbacks - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2014年2月 (1)
2013年11月 (2)
2013年7月 (1)
2010年7月 (1)
2010年6月 (1)
2009年12月 (1)
文章档案
2008年6月 (1)
2007年9月 (2)
搜索
最新评论
阅读排行榜
1. ISDEV : error -5008: Intel64 or AMD64 must be specified in the template of the Summary Stream(1469)
2. std::sort使用中注意的问题 (654)
3. 配置文件的注释符(494)
4. 关于AfxGetMainWnd()(396)
5. 自定义文件自定义打开(289)
评论排行榜
1. 多线程程序调试感想(0)
2. 配置文件的注释符(0)
3. 位图显示(0)
4. 关于AfxGetMainWnd()(0)
5. 自定义文件自定义打开(0)
Powered by:
C++博客
Copyright © vincen