我要用OnTimer定时器实现一个自动发送功能,发送内容开始频率是2000Hz,以后每秒发送一次数据,但是频率按100Hz累加,求OnTimer中触发事件的代码该怎样写?void CMyDlg::OnTimer(UINT nIDEvent)  
{
  // TODO: Add your message handler code here and/or call default
  //添加你要处理的函数,当定时时间到时自动调用
  //通过调用 SetTimer(1,1000,NULL)启动定时器,通过调用KillTimer(int nIDEvent)关闭定时器
  CMyDlg::OnButtonZidongceshi();
  CDialog::OnTimer(nIDEvent);
}void CMyDlg::OnButtonZidongceshi()  
{
// TODO: Add your control notification handler code here
CString str,temp; CByteArray hexdata; m_pinlv.GetWindowText(str);
  int n=atoi(str);
  temp=algorismtohex(n);
  int len=String2Hex(temp,hexdata); //频率  m_cComm.SetOutBufferCount(0);//清空发送缓冲区
  m_cComm.SetOutput(COleVariant(hexdata));//发送十六进制数据
  SetTimer(1,2000,NULL);  
}这是我的一段代码,要求频率按100步进!!!

解决方案 »

  1.   

    用settimer模拟不出来2000hz的状态
      

  2.   

    Timer的时间精度没2000Hz这么高
      

  3.   

    加一个标志 判断是否是第一次发送,再加一个变量计算已经发送了几次
    例如:bool isfirst=true;在调用OnButtonZidongceshi之前初始化为true;
      int count=0; 然后在void CMyDlg::OnButtonZidongceshi()里面
      if(isfirst)
    {SetTimer(1,2000,NULL);   isfirst=false;}
    else

       每次叠加100
      int newtime=1000+100*count;
    SetTimer(1,newtime,NULL);  
    count++; 
    }
      

    void CMyDlg::OnTimer(UINT nIDEvent)   
    里面每次都KillTimer(int nIDEvent)定时器
      

  4.   

    2000HZ?OnTimer 最多就55MS吧。
      

  5.   

    先不考虑精度问题,我现在就是想知道怎样才能使频率能不断累加 然后用OnTimer发送出去??