网站大量收购独家精品文档,联系QQ:2885784924

接口课件1~6打包6-4定时器幻灯片.pptVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4节 定时器 定时器在接口技术中经常用到。例如: 在串行通信中,每隔一定的时间,查询是否收到数据; 在视频播放中,每隔一定的时间播放一帧图像,等。 在Windows系统下,定时功能的实现,一般不直接操作8253芯片,而是使用系统提供的定时器函数。 Windows系统提供了几种定时器函数,主要为: 系统定时器 (Timer),精度低; 多媒体 定时器 (Multimedia Timer),精度中; 以计数器频率为基准的计数器查询(QueryCounter),精度高。 本节主要讨论多媒体定时器的编程方法。 一、系统定时器 基于8253定时器通道0的55ms定时间隔设计,因此,定时精度为±55ms,且优先级低。编程步骤: (1)建立系统定时器。函数原型为: UINT SetTimer( HWND hWnd, //接收时间消息的窗口句柄 UINT nIDEvent, // 本定时器的ID,不能为 0 UINT uElapse, // 时间到达值,毫秒 TIMERPROC lpTimerFunc // 指向消息响应函数 ); 若用前一种形式,则接收消息的窗口为本程序关联的窗口类,消息响应函数应设置为接收系统消息 WM_TIMER。 注意: 一个应用程序最多只能建立32个定时器。 UINT SetTimer( UINT nIDEvent, // 本定时器的ID,不能为0 UINT nElapse // 时间到达值,毫秒 ); (2)建立定时消息响应函数。 void CALLBACK TimerProc ( ? HWND hWnd,????? // 调用SetTimer( )的窗口句柄 UINT uMsg,????? // WM_TIMER ?消息 UINT nIDEvent?? // 定时器?ID DWORD dwTime??? // 系统当前时间 ); 前一种形式,可采用MFC ClassWizard 建立定时消息响应函数。 后一种形式,应编写响应 WM_TIMER 消息的回调函数: 注意:此回调函数为全局函数,不应写在一个类里面。 (3)用毕,删除定时器: BOOL KillTimer( int nIDEvent ); //参数为定时器?ID 二、多媒体定时器 定时精度为±1ms,优先级高。用于对实时性要求较高的场合,如影音播放等。 在应用程序中,多媒体定时器以如下方式运行: 建立多媒体定时器: 建立定时精度 建立定时事件 建立事件触发响应函数 (回调函数) 定时时间到 建立用户自定义消息响应函数; 执行既定的工作 在回调函数中发送消息 删除多媒体定时器: 删除定时事件 删除定时精度 工作完成 (1)在工程中隐式连接系统的多媒体 DLL: 在工程中包含头文件: #include “mmsystem.h” 选 Project /settings,按如下操作设定: 多媒体定时器用DLL形式提供,使用步骤如下: (2) 获得多媒体定时器的最大定时分辨率,函数原型如下: MMRESULT timeGetDevCaps( LPTIMECAPS ptc, //指向 TIMECAPS结构 UINT cbtc //TIMECAPS结构的大小 ); TIMECAPS结构的定义为: typedef struct { UINT wPeriodMin; //定时器的最小分辨率 UINT wPeriodMax; //定时器的最大分辨率 } TIMECAPS; 得到 最大、最小分辨率后,决定你打算采用的分辨率。 注意,你打算采用的分辨率必须在最大、最小分辨率之间。即: wPeriodMin ≤ 你打算采用的分辨率 ≤ wPeriodMax 再为程序设置你的分辨率: MMRESULT timeBeginPeriod( UINT uPeriod ); //参数为你的分辨率 (3)设置“定时时

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档