这两天更新了一下原来的test utilitly,使串口和红外数据可以定时自动发送,其中要用到定时器.并更正了接受窗口用到的edit box控件中的一个小问题,在此作个笔记.
1.EVC 中应用简单的定时器
在send按钮的函数里加入了装载定时器函数:
- //启动1s定时器,用于定时向com 发送数据
- m_timerID1=SetTimer(1,1000,NULL);//第一个参数为定时器ID号:1,第二个参数为时间1000ms
- if(m_timerID1==0)
- {
- AfxMessageBox(_T("fail to install the timer!"));
- }
当send数据时再次按下send/stop按钮stop发送数据,这时在定时函数里要kill掉timer
- void page_irda::OnTimer(UINT nIDEvent)
- {
- // TODO: Add your message handler code here and/or call default
- if(nIDEvent==1)//timer ID
- {
- if(bSend)//send按钮打开
- {
- SendData();//定时时间到,向端口发送数据
- }
- else//再次按下send按钮,stop发送
- {KillTimer(m_timerID1);}
- }
- CPropertyPage::OnTimer(nIDEvent);
- }
这样就实现了简单的1s定时发送数据给com口.
2.EDIT BOX属性设置注意.
2.1最初没有注意,数据接受框edit box属性设置成,如图
结果如下图,接收框每行有很多数据,而且新接收的都在后面,看不见了.
2.2后来改edit 属性,如下图
结果,显示出来了横向滚条,但是每行还是很多数据,可以通过拉动滚条,查看数据,如下图
2.3改edit box属性,不选中Horizontal scroll ,Auto HScroll项,结果就正常了.如下图设置
结果:
edit box显示多行和换行主要要选中Multiline Want return项.
小节:这些设置应该说是很基础的,但对我这个初学者,还是容易犯错的.在此记录下来.作为学习总结吧.