13.11 发送数据模块的功能实现
数据发送模块也分为两部分:一部分用于控制发送的数据;另一部分用于数据发送操作。发送数据的控制部分主要实现控制用户发送数据的格式,同接收数据格式相同,也分为字符串格式及十六进制格式。另外还实现发送情景模式的控制,及发送数据区域的清空控制。数据的发送操作分为两种:自动发送及手动发送。
13.11.1 发送数据控制功能的实现
本节将主要介绍发送数据的控制,包括格式控制、情景模式控制及数据清空控制。
(1)发送数据的格式控制。同接收数据的格式控制相同,将数据发送部分的字符串及十六进制两个单选按钮分为一组。并为这组按钮添加一个关联变量m_bSHex。在发送数据时将根据这个变量来控制发送数据的格式。
(2)发送数据的情景模式控制。情景模式的实现也非常简单,为两个情景模式定义两个变量,分别用于保存对应模式下发送框中的数据:
- CString m_sMod1; //模式1的发送数据变量
- CString m_sMod2; //模式2的发送数据变量
同接收数据的情景模式控制相同,为发送模式控制组合框添加项目切换处理函数OnSelchangeComsmod()。当模式切换时,保存当前模式下的数据,将切换后模式的数据显示到发送框中: - 01 void CComElvesDlg::OnSelchangeComsmod()
- 02 {
- 03 UpdateData(true);
- 04 SaveSMod(); //保存数据到情景模式变量中
- 05 m_sMod = !m_sMod; //模式切换
- 06 if(m_sMod)
- 07 {
- 08 m_sData = m_sMod1;
- 09 }
- 10 else
- 11 {
- 12 m_sData = m_sMod2;
- 13 }
- 14 UpdateData(false);
- 15 }
SaveSMod()函数实现将发送数据框中的数据保存到相应模式的变量中的功能,实现基本同SaveRMod()一样,在此不再详述,读者可查看源代码。
(3)清空发送数据框。当前单击发送区域内的"清空数据"按钮时,发送框中的数据将被清空,对应情景模式变量也将被清空。另外由于数据已被清空,自动发送也就没有任何意义,此时如果处于自动发送状态,将停止自动发送。按钮的处理函数实现如下:
- 01 void CComElvesDlg::OnSclearn()
- 02 {
- 03 m_sData = "";
- 04 SaveSMod(); //保存当前模式数据
- 05 if(m_bAuto) //是否为自动发送
- 06 {
- 07 m_bAuto = false;
- 08 GetDlgItem(IDC_SEND)->SetWindowText("发送");
- 09 KillTimer(1); //关闭事件定时器
- 10 }
- 11 UpdateData(false);
- 12 }
【代码解析】
函数的实现比较简单,在第3、4行清空发送数据框及当前情景模式变量。第5行判断当前是否处于自动发送状态,如是则在第7~9行停止自动发送处理。