之前学过一些MFC,现由于项目需要,上网查阅各种串口通信资料,并成功实现串口通信。
开发环境:VC6.0
参考资料:http://blog.sina.com.cn/s/blog_6e84dc280101433n.html
第一步:建工程
第二步:设置基本对话框
第三步:设置串口ID号
第四步:设置串口参数选项
第五步:设置其他控件ID号
第六步:添加串口控件
project->Add to project->Components and Controls
此时界面上会出现一个电话的控件,右键该控件-〉选择类向导……,出现如下对话框:
添加变量时,可能会出现警告,如下:
添加相关变量之后如图:
第七步:添加相关的消息响应函数:
第八步:在OnInitDialog函数添加相关代码。
m_b_port_open = false;
CComboBox *pCombo = NULL;
pCombo = (CComboBox *) GetDlgItem(IDC_PORT_COMBO);//set port
if (pCombo != NULL)
{
pCombo->SetCurSel(0);
}
pCombo = (CComboBox *) GetDlgItem(IDC_BOUND_COMBO); //set bound
if (pCombo != NULL)
{
pCombo->SetCurSel(0);
}
pCombo = (CComboBox *) GetDlgItem(IDC_CHECK_COMBO); //set check
if (pCombo != NULL)
{
pCombo->SetCurSel(0);
}
pCombo = (CComboBox *) GetDlgItem(IDC_STOPBIT_COMBO); //set stopbit
if (pCombo != NULL)
{
pCombo->SetCurSel(0);
}
if(m_msCom.GetPortOpen())
{
m_msCom.SetPortOpen(FALSE);
}
m_msCom.SetCommPort(1); //设置串口
m_msCom.SetInBufferSize(1024); //设置输入缓冲区大小
m_msCom.SetOutBufferSize(1024); //设置输出缓冲区大小
m_msCom.SetRThreshold(1); //设置收到多少个字符后触发OnComm事件
m_msCom.SetInputMode(1); //设置输入方式为二进制方式
m_msCom.SetSettings("9600,n,8,1"); //设置波特率等参数
m_msCom.SetInputLen(0); //设置当前接收长度为0
第九步:在OnOpenPort消息响应函数中添加代码
void CPortDlg::OnOpenPort()
{
// TODO: Add your control notification handler code here
if(!m_b_port_open)
{
switch(m_port_combo.GetCurSel())
{
case 0://COM1
m_msCom.SetCommPort(0);
break;
case 1://COM2
m_msCom.SetCommPort(1);
break;
case 2://COM3
m_msCom.SetCommPort(2);
break;
case 3://COM4
m_msCom.SetCommPort(3);
break;
case 4://COM5
m_msCom.SetCommPort(4);
break;
case 5://COM6
m_msCom.SetCommPort(5);
break;
case 6://COM7
m_msCom.SetCommPort(6);
break;
case 7://COM8
m_msCom.SetCommPort(7);
break;
}
if(m_msCom.GetPortOpen())
{
m_msCom.SetPortOpen(FALSE);
}
m_msCom.SetInBufferSize(1024); //设置输入缓冲区大小
m_msCom.SetOutBufferSize(1024); //设置输出缓冲区大小
m_msCom.SetRThreshold(1); //设置收到多少个字符后触发OnComm事件
m_msCom.SetInputMode(1); //设置输入方式为二进制方式
m_msCom.SetSettings("9600,n,8,1"); //设置波特率等参数
m_msCom.SetInputLen(0); //设置当前接收长度为0
if(!m_msCom.GetPortOpen())
{
m_msCom.SetPortOpen(TRUE);
}
m_b_port_open = TRUE;
SetDlgItemText(IDC_OPEN_PORT, "关闭串口");
}
else
{
m_msCom.SetPortOpen(FALSE);
m_b_port_open = FALSE;
SetDlgItemText(IDC_OPEN_PORT, "打开串口");
}
}
第十步:在OnSendOrder消息响应函数添加代码
void CPortDlg::OnSendOrder()
{
// TODO: Add your control notification handler code here
m_msCom.SetOutput(COleVariant("DEBUG"));
}
第十一步:利用串口工具进行调试,只需把串口的TX和RX连在一起,就可以实现自发自收。
打开串口->发送数据,就可以看到效果啦!!!

本文介绍了在VC6.0环境下,使用MFC和MSComm控件进行串口通信的步骤,包括创建工程、设置对话框、配置串口参数、添加控件、定义消息响应函数及调试方法,通过自发自收实现串口通信功能。
3204

被折叠的 条评论
为什么被折叠?



