13.8.2 设置串口控制部分的组合框(2)
【代码解析】
第3~17行插入波特率,第18~34行将当前调试使用的波特率显示到组合框中。
(3)InitCombData()函数用于初始化数据位组合框,常用的数据位有3种可能,即6、7、8。根据当前调试器使用的数据位长度,将相应的数据显示到数据位组合框中。实现如下:
- 01 void CMyComSetDlg::InitCombData()
- 02 {
- 03 m_combData.InsertString(0,"8"); //插入数据位长度数据
- 04 m_combData.InsertString(1,"7");
- 05 m_combData.InsertString(2,"6");
- 06 m_combData.SetCurSel((m_nDatabits * -1) + 8); //设置显示项
- 07 }
m_nDatabits用于记录当前调试器使用的数据位长度。
(4)InitCombStop()函数设置停止位组合框中显示的数据,并将调试器当前使用的停止位显示到组合框中,实现如下:
- 01 void CMyComSetDlg::InitCombStop()
- 02 {
- 03 m_combStop.InsertString(0,"1"); //组合框添加一个项目
- 04 m_combStop.InsertString(1,"2");
- 05 m_combStop.SetCurSel(m_nStopbits - 1); //默认显示项目设置
- 06 }
m_combStop是配置窗体的成员变量,用于记录当前调试器使用的停止位数据。
(5)最后一个是InitCombCheck()函数,用于初始化校验位的组合框,并将调试器使用的校验位显示到组合框中,实现如下:
- 01 void CMyComSetDlg::InitCombCheck()
- 02 {
- 03 m_combCheck.InsertString(0,"NONE"); //无校验模式
- 04 m_combCheck.InsertString(1,"ODD"); //偶校验模式
- 05 m_combCheck.InsertString(2,"EVEN"); //奇校验模式
- 06 switch(m_cParity)
- 07 {
- 08 case 'N':
- 09 m_combCheck.SetCurSel(0);
- 10 break;
- 11 case 'O':
- 12 m_combCheck.SetCurSel(1);
- 13 break;
- 14 case 'E':
- 15 m_combCheck.SetCurSel(2);
- 16 break;
- 17 }
- 18 }
校验位有3个值,即0、1及2。m_combCheck是配置窗体的成员变量,记录当前调试器使用的停止位数据。
为各个组合框添加项目切换的处理函数,每当用户对当前组合框中的项目进行了重新选择后,就需要更新当前调试串口的参数,各个组合框项目切换函数的实现如下:
- 01 void CMyComSetDlg::OnSelchangeCbud() //波特率组合框项目切换处理函数
- 02 {
- 03 int n = m_combBaud.GetCurSel(); //获取用户选择项目的序号
- 04 switch(n) //根据序号确定用户输入的波特率
- 05 {
- 06 case 0:
- 07 m_nBaud = 110;
- 08 break;
- 09 case 1:
- 10 m_nBaud = 300;
- 11 break;
- 12 …
- 13 m_nBaud = 128000;
- 14 break;
- 15 case 14:
- 16 m_nBaud = 256000;
- 17 break;
- 18 }
- 19 }
- 20 void CMyComSetDlg::OnSelchangeCcom() //串口组合框项目切换处理函数
- 21 {
- 22 m_nCom = m_combCom.GetCurSel() + 1; //根据用户选择的项目号确定串口号
- 23 }
- 24 void CMyComSetDlg::OnSelchangeCcheck() //校验位组合框项目切换处理函数
- 25 {
- 26 int n = m_combCheck.GetCurSel(); //获取用户选择项目的序号
- 27 switch( n ) //判断用户选择的校验类型
- 28 {
- 29 case 0:
- 30 m_cParity = 'N';
- 31 break;
- 32 case 1:
- 33 m_cParity = 'O';
- 34 break;
- 35 case 2:
- 36 m_cParity = 'E';
- 37 break;
- 38 }
- 39 }
- 40 void CMyComSetDlg::OnSelchangeCdata() //数据位组合框项目切换处理函数
- 41 {
- 42 //根据用户选择的项目序号确定用户选择的数据位长度
- 43 m_nDatabits =( m_combData.GetCurSel() * (-1) ) + 8;
- 44 }
- 45 void CMyComSetDlg::OnSelchangeCstop() //停止位组合框项目切换处理函数
- 46 {
- 47 //根据用户选择的项目判断用户选择的停止位长度
- 48 m_nStopbits = m_combStop.GetCurSel() + 1;
- 49 }