OnTimer有关问题
OnTimer问题
我要用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步进!!!
------解决方案--------------------
加一个标志 判断是否是第一次发送,再加一个变量计算已经发送了几次
例如: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)定时器
------解决方案--------------------
2000HZ?OnTimer 最多就55MS吧。。。。
------解决方案--------------------
开个线程来整呗 线程里面自己判断时间来循环
我要用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步进!!!
------解决方案--------------------
加一个标志 判断是否是第一次发送,再加一个变量计算已经发送了几次
例如: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)定时器
------解决方案--------------------
2000HZ?OnTimer 最多就55MS吧。。。。
------解决方案--------------------
开个线程来整呗 线程里面自己判断时间来循环