一.想一进入程序,有默认的串口参数设置:
1.把参数值设定死
在OnInitDialog()函数里添加:
if (m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); // 选择com1
if (!m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE); // 打开串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("9600, n, 8, 1"); // 波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetInputMode(1); // 1表示以二进制方式检取数据
m_ctrlComm.SetRThreshold(1); // 参数为1,表示每当串口接收缓冲区中有对于或等于一个字符时,将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(0); // 设置当前接收区数据长度为0
m_ctrlComm.GetInput(); // 先预读缓冲区以清除残留数据
2. 用COMBO BOX下拉框选择串口、波特率
m_cbPortSelect.ResetContent();
m_cbPortSelect.AddString(_T("COM1"));
m_cbPortSelect.AddString(_T("COM2"));
m_cbPortSelect.AddString(_T("COM3"));
m_cbPortSelect.AddString(_T("COM4"));
m_cbPortSelect.AddString(_T("COM5"));
m_cbPortSelect.SetCurSel(3);
m_cbPortRate.ResetContent();
m_cbPortRate.AddString(_T("1200"));
m_cbPortRate.AddString(_T("2400"));
m_cbPortRate.AddString(_T("4800"));
m_cbPortRate.AddString(_T("9600"));
m_cbPortRate.SetCurSel(0);
二.想动态地设置串口相关参数:
CString str_setting;
str_setting.Format(_T("%d, %c, %d, %d"), baud_num, 'n', 8, 1);
m_ctrlComm.SetSettings(str_setting); // 设置波特率,校验位,数据位,停止位;m_ctrlComm是通信控件变量
想在Edit Box里显示实时值:
m_strSerialPort.Format("串口%d, 波特率%d, %c, %d个数据位,%d个停止位", port_num, baud_num, 'n', 8, 1);