13.10 接收数据模块的功能实现
数据接收模块主要实现接收串口数据,并根据用户指定的数据格式及显示要求显示到调试器上。因此本节将根据功能实现分成两节来分别讲解接收数据显示控制模块,以及接收数据显示处理模块。
13.10.1 接收数据显示控制模块(1)
接收数据显示控制模块主要控制数据显示格式,包括字符串和十六进制两种形式,以及接收数据的显示要求,包括情景模式、是否显示接收到的数据、是否清空显示区域内的数据等操作。
(1)显示数据格式控制。在接收数据显示模块中有两个单选按钮:一个是字符串;另一个是十六进制。这两个按钮实现控制接收数据的显示格式。当字符串按钮被选中时,接收数据将以字符串形式向已接收数据尾部追加显示。当十六进制按钮被选中时,接收数据将以十六进制形式向已接收显示的数据尾部追加显示。为此需要将这两个按钮分为一组,即将字符串单选按钮的Group属性选中。然后利用向导为这组按钮添加关联变量,字符串按钮的ID为IDC_RADIO3,利用向导为这组单选按钮添加变量为m_bRHex,如图13.25所示。
|
| 图13.25 为单选按钮添加关联变量 |
m_bRHex用于判断数据显示格式的变量。当字符串单选按钮被选中时,这个变量的值为0。当十六进制单选按钮被选中时,这个变量的值为1。
(2)情景模式控制。在接收数据显示处理函数OnReceive()中,最后调用了SaveRMod()函数。这个函数根据当前情景模式标识变量m_rMod的值,将接收到的数据保存到相应情景模式的变量中,实现如下:
- 01 void CComElvesDlg::SaveRMod()
- 02 {
- 03 if(m_rMod)
- 04 { //模式1
- 05 m_rMod1 = m_DRData;
- 06 }
- 07 else
- 08 { //模式2
- 09 m_rMod2 = m_DRData;
- 10 }
- 11 }
【代码解析】
其中m_rMod1及m_rMod2是窗体类的CString型变量,用于保存相应情景模式下接收到的数据。
将不同模式下接收到的数据保存后,当用户在情景模式组合框中切换情景模式时,需要将相应模式下的数据显示到界面上。这需要为这个组合框(ID为IDC_COMRMOD)添加一个项目切换处理函数OnSelchangeComrmod(),如图13.26所示。
|
| 图13.26 为组合框添加项目切换处理函数 |