13.9.2 串口的属性设置
串口设置也是菜单栏及工具栏共有的功能,在串口菜单栏的第3项,工具栏的第1项。这两个地方的串口设置调用的是同一个函数OnComSet()。这个函数将串口当前的信息传递给串口设置对话框,并获取用户在串口设置对话框中设置的参数,实现如下:
- 01 void CComElvesDlg::OnComSet()
- 02 {
- 03 if(m_bAuto) //关闭自动发送功能
- 04 {
- 05 m_bAuto = false;
- 06 KillTimer(1);
- 07 }
- 08 m_Port.ClosePort(); //关闭串口
- 09 UpdateData(true); //获取当前调试器窗体界面的信息
- 10 CMyComSetDlg dlg; //串口设置对话框
- 11 dlg.m_autoTime = m_uTime; //当前自动发送的时间间隔
- 12 dlg.m_bAuto = false ; //当前自动发送的状态
- 13 dlg.m_BRHex = m_bRHex; //当前接收信息的显示格式
- 14 dlg.m_BSHex = m_bSHex; //当前发送数据的格式
- 15 dlg.m_nBaud = m_nBaud; //当前串口的波特率
- 16 dlg.m_cParity = m_cParity; //当前串口的校验方式
- 17 dlg.m_nCom = m_nCom; //当前的串口号
- 18 dlg.m_nStopbits = m_nStopbits; //当前的停止位
- 19 dlg.m_nDatabits = m_nDatabits; //当前的数据位
- 20 if(dlg.DoModal() == IDOK) //显示串口设置对话框
- 21 {
- 22 m_nCom = dlg.m_nCom; //获取用户选择的串口号
- 23 m_nBaud = dlg.m_nBaud; //获取用户选择的波特率
- 24 m_cParity = dlg.m_cParity; //获取用户选择的校验方式
- 25 m_nDatabits = dlg.m_nDatabits; //获取用户选择的数据位
- 26 m_nStopbits = dlg.m_nStopbits; //获取用户选择的停止位
- 27 m_uTime = dlg.m_autoTime; //获取用户输入的自动发送时间间隔
- 28 m_bAuto = dlg.m_bAuto; //获取用户选择的自动发送状态
- 29 m_bRHex = dlg.m_BRHex; //获取用户选择的接收数据显示格式
- 30 m_bSHex = dlg.m_BSHex; //获取用户选择的数据发送格式
- 31 }
- 32 OpenPort(); //用当前的参数打开用户选择的串口
- 33 UpdateData(false); //根据用户选择的状态更新调试器界面
- 34 }
【代码解析】
第3~7行确定将关闭调试器的自动发送。第8行关闭串口,第9行获取调试器界面状态。第10行定义串口设置对话框。第11~20行将当前串口属性及调试器显示、发送的数据格式传递给串口设置对话框,以便在串口设置对话框中根据参考当前的串口状态设置串口。第20行显示串口设置对话框。第22~31行获取用户在串口设置对话框上选择及输入的数据,并将这些数据更新到调试器对话框中。第33行根据用户新输入的参数打开用户指定的串口。第34行将用户选择的显示、及发送的数据格式更新到调试器界面上。