Timer用法.doc.docVIP

  1. 1、本文档共2页,可阅读全部内容。
  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文档。上传文档
查看更多
Timer用法.doc.doc

在ClassWizard中响应ID为~Dlg中的WM_TIMER消息。 使用SetTimer nIDEvent,time,NULL 来建立一个定时器,关闭定时器用KillTimer nIDEvent 函数。 然后可以响应ON_WM_TIMER消息来响应一个定时器完成一次记时后的程序。 响应方式如下: ? void ? CTimeDlg::OnTimer UINT ? nIDEvent if nIDEvent 1000 //间隔为5秒 //处理事件 elseif nIDEvent 1001 //间隔为10秒 //处理事件 CDialog::OnTimer nIDEvent ; 以下是给出一个串口通信定时检查接收数据的部分代码 void?CMyDlg::OnOpenCom //?TODO:?Add?your?control?notification?handler?code?here if ?f_open_com true f_open_com? ?false; GetDlgItem IDC_OPEN_COM - SetWindowText 打开通信端口 ; CloseHandle hComm ; KillTimer 1000 ;???///?关闭定时器 return?; SetTimer 1000,?1000,?NULL ;???///nIDEvent 1000,time 5000ms const?char?*ComNo; DCB?dcb; string?temp COM1 ; ComNo? ?temp.c_str ; hComm? ?CreateFile ?ComNo?,?GENERIC_READ|GENERIC_WRITE?, 0?,?NULL?,?OPEN_EXISTING?,?0?,?0 ; if ?hComm INVALID_HANDLE_VALUE ///?如果端口未打开 MessageBox 打开通信端口出错!?,?Comm?Error?,?MB_OK ; return?; ///??将dcb地址传入,以取得通信参数 GetCommState hComm,dcb ; ///?得知目前通信状态 dcb.BaudRate? ?CBR_9600; dcb.ByteSize? ?8; ///?字节为8 dcb.Parity? ?NOPARITY; ///?Parity为None dcb.StopBits? ?ONESTOPBIT; ///?1个停止位 if ?!SetCommState ?hComm?,?dcb MessageBox 通信端口设置出错!?,?Set?Error?,?MB_OK? ; CloseHandle hComm ; return; GetDlgItem IDC_OPEN_COM - SetWindowText 关闭通信端口 ; f_open_com? ?true; void?CMyDlg::OnTimer UINT?nIDEvent //?TODO:?Add?your?message?handler?code?here?and/or?call?default char?inbuff[1024]; DWORD?nBytesRead?,?dwError; COMSTAT?cs; ///???取得状态 ClearCommError ?hComm?,?dwError?,?cs ; ///???数据是否大于所准备的缓冲区 if ?cs.cbInQue? ?sizeof inbuff PurgeComm hComm?,?PURGE_RXCLEAR? ;???///?清除通信端口数据 return?; ReadFile hComm?,?inbuff?,?cs.cbInQue?,?nBytesRead?,?NULL? ;?//接收通信端口的数据 inbuff[cs.cbInQue]? ?\0; MessageBox 打开通信端口出错!?,?Comm?Error?,?MB_OK ; m_Receive.Format %s,inbuff ; UpdateData false ; CDialog::OnTimer nIDEvent ;

文档评论(0)

dreamclb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档