Win95下高精度定时器的实现.docx_第1页
Win95下高精度定时器的实现.docx_第2页
Win95下高精度定时器的实现.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Win95下高精度定时器的实现国防科技大学机电工程与仪器系 张云洲 梁科山- 在工业控制软件中,数据采集和实时控制是经常性的工作。目前,工业控制软件已经从DOS和Windows3.x平台,转到了Windows95上。然而,Windows95并不能直接支持中断,这就意味着在DOS和Windows3.x中的定时器中断不能为我们所用。因此,我们必须寻求新的定时方式。 - 在C Builder和Delphi等典型的编程语言中,都提供了定时器控件,可以方便地实现定时和事件响应。此外,Windows95还提供了SetTimer和KillTimer函数来设置和删除一个定时器,在事件WM_TIMER响应函数中实现处理。然而,遗憾的是,通过这些方式获得的Win95定时器最小只能精确到55毫秒,对于55毫秒以下的时间精度便无能为力。这对于Win95下测控软件的开发是十分不利的。幸运的是,多媒体定时器可以解决这一难题。 - 以下是一个完整的多媒体定时器设计示例程序,该定时器的精度为1毫秒。该程序的内容十分简单:按下按钮1,启动定时器,在Edit框中显示定时值(计数值),按下按钮2则将关闭定时器。此程序在Windows95环境下,采用C Builder3.0编程并编译通过,但设计思想同样适用于其它高级语言。按照本程序中的实现方法,读者将可以轻松实现自己的高精度定时器。 - 程序清单如下: #include #pragma hdrstop#include mmsystem.h /包含多媒体定时器函数的头文件#define MilliSecond 1 /定时间隔1毫秒#define Accuracy 1 /系统允许的分辨率最小值#define Min(x,y) (x y) ? x : y)#include HighTimerU.h/-#pragma package(smart_init)#pragma resource *.dfmUINT TimerID; /定义定时器句柄int count; /定义一个变量以进行计数int TimerAccuracy;TForm1 *Form1;/-_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner)void PASCAL TimerCallProc(UINT TimerID, UINT msg,DWORD dwUser, DWORD dwa,DWORD dwb) /定义定时器事件的调用函数 count ; Form1- Edit1-Text=count; /在一个编辑框内显示计数值,即定时值/-void _fastcall TForm1:Button1Click(TObject *Sender) TIMECAPS timecaps; int TimerResolution; /从系统获得关于定时器服务能力的信息,/分辨率不能超出系统许可值(1到16毫秒) if (timeGetDevCaps(&timecaps,sizeof( TIMECAPS)=TIMERR_NOERROR) TimerAccuracy=Min(Max(timecaps.wPeriodMin, Accuracy),timecaps.wPeriodMax); timeBeginPeriod(TimerAccuracy); /设置定时器分辨率 TimerResolution=1; /设置定时间隔为1毫秒 /产生间隔1毫秒,周期执行的定时器事件;启动定时器 TimerID = timeSetEvent(TimerResolution,TimerAccuracy, &TimerCallProc,1,TIME_PERIODIC);/-void _fastcall TForm1:Button2Click(TObject *Sender) timeKillEvent(TimerID); /删除定时器事件 timeEndPeriod(TimerAccuracy); /清除定时器分辨率- 多媒体定时器对实现高精度定时是很理想的工具,而且其精度是十分可靠的。但是,多媒体定时器也并不是完美的。因为它可靠的精度是建立在对系统资源的消耗之上的。因此,在利用多媒体定时器完成工作的同时,必须注意以下几点: - 1 多媒体定时器的设置分辨率不能超出系统许可范围。 - 2 在使用完定时器以后,一定要及时删除定时器及其分辨率,否则系统会越来越慢。 - 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论