VS之MFC串口通信的编写教程精编WORD版.docx

上传人:b****6 文档编号:5602924 上传时间:2022-12-28 格式:DOCX 页数:5 大小:16.75KB
下载 相关 举报
VS之MFC串口通信的编写教程精编WORD版.docx_第1页
第1页 / 共5页
VS之MFC串口通信的编写教程精编WORD版.docx_第2页
第2页 / 共5页
VS之MFC串口通信的编写教程精编WORD版.docx_第3页
第3页 / 共5页
VS之MFC串口通信的编写教程精编WORD版.docx_第4页
第4页 / 共5页
VS之MFC串口通信的编写教程精编WORD版.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VS之MFC串口通信的编写教程精编WORD版.docx

《VS之MFC串口通信的编写教程精编WORD版.docx》由会员分享,可在线阅读,更多相关《VS之MFC串口通信的编写教程精编WORD版.docx(5页珍藏版)》请在冰豆网上搜索。

VS之MFC串口通信的编写教程精编WORD版.docx

VS之MFC串口通信的编写教程精编WORD版

IBMsystemofficeroom【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

 

VS之MFC串口通信的编写教程精编WORD版

VS2010之MFC串口通信教程

说明:

本人也是刚刚入门MFC,参照一些资料和源代码就实验做了这么一个串口通信工具!

资料来源主要有鸡啄米博客网站,里面有详细的学习教程!

网上的VS2010源代码都比较少,建议大家先理解一个源代码的构架和结构再深入学习!

本文档可以一步一步教你从建立工程到实验调试,是一个非常完整的教程!

非常适合新手练习!

——贺州学院大学生创新基地实验室

在制作串口通信所遇到的问题:

编辑框的滚动条不会随着数据的更新保持在最后一行!

接下来我们开始讲解MFC串口通信的制作:

一、打开VS2010软件,然后新建一个项目,如下图所示;

我们要用到就是对话框模块,所以选择如下图所示

最大化框最好别选,因为本人现在也没搞出来;

点击完成就新建好一个工程了,等资源就绪之后我们就可以进行制作了;

我们可以看到就绪之后的界面如下图所示,按照步骤把原来的静态文本框和确定按钮、取消按钮删掉;

二、为我们的对话框添加控件

添加两个组合边框,并放置好位置;

修改组合边框显示的名称;

在组合边框里面添加编辑文本框;

在这一步一定要小心选择右边的属性;

这一步是把串口控件添加到对话框中来;

选择我们需要的串口控件如下图所示;

三、为编辑框,Combox框,串口控件添加变量;

四、为按钮和串口控件添加程序函数

voidC串口V2Dlg:

:

OnBnClickedButtonOpen()//打开串口按钮程序

{

//TODO:

在此添加控件通知处理程序代码?

CStringstr,str1,n;//定义字符串

GetDlgItemText(IDC_BUTTON_OPEN,str);

CWnd*h1;

h1=GetDlgItem(IDC_BUTTON_OPEN);//指向控件的caption

if(!

m_mscom.get_PortOpen())

{

m_comb2.GetLBText(m_comb2.GetCurSel(),str1);//取得所选的字符串,并存放在str1里面

str1=str1+','+'n'+','+'8'+','+'1';//这句话很关键

m_mscom.put_CommPort((m_comb1.GetCurSel()+1));//选择串口

m_mscom.put_InputMode

(1);//设置输入方式为二进制方式

m_mscom.put_Settings(str1);//波特率为(波特率组á合框)无校验,8数据位,1个停止位

m_mscom.put_InputLen(1024);//设置当前接收区数据长度为1024

m_mscom.put_RThreshold

(1);//缓冲区一个字符引发事件

m_mscom.put_RTSEnable

(1);//设置RT允许

m_mscom.put_PortOpen(true);//打开串口

if(m_mscom.get_PortOpen())

{

str=_T("关闭串口");

UpdateData(true);

h1->SetWindowText(str);//改变按钮名称为‘’关闭串口”

}

}

else

{

m_mscom.put_PortOpen(false);

if(str!

=_T("打开串口))

{

str=_T("打开串口");

UpdateData(true);

h1->SetWindowText(str);//改变按钮名称为打开串口

}

}

}

voidC串口V2Dlg:

:

OnBnClickedButtonSend()//发送数据按钮程

{

//TODO:

在此添加控件通知处理程序代码?

UpdateData(true);//更新控件数据

m_mscom.put_Output(COleVariant(m_Editsend));//把发送编辑框的数据发送出去

}

voidC串口V2Dlg:

:

OnBnClickedButtonClean()//清除数据按钮程序

{

//TODO:

在此添加控件通知处理程序代码

m_EditReceive=_T("");//给接收编辑框发送空格符

UpdateData(false);//更新数据

}

voidC串口V2Dlg:

:

OnBnClickedButtonClose()//退出按钮程序

{

//TODO:

在此添加控件通知处理程序代码

if(m_mscom.get_PortOpen())

m_mscom.put_PortOpen(false);

CDialogEx:

:

OnCancel();

}

voidC串口V2Dlg:

:

OnCommMscomm1()//串口控件程序

{

//TODO:

在此处添加消息处理程序代码

if(m_mscom.get_CommEvent()==2)

{

charstr[1024]={0};

longk;

VARIANTInputData=m_mscom.get_Input();//读缓冲区

COleSafeArrayfs;

fs=InputData;//VARIANT型变à量转换为COleSafeArray型变量

for(k=0;k

fs.GetElement(&k,str+k);//转换为BYTE型数组

m_EditReceive+=str;//接收到编辑框里面

//SetTimer(1,10,NULL);//延时10ms

UpdateData(false);

}

}

//串口选择组合框

CStringstr;

inti;

for(i=0;i<15;i++)

{

str.Format(_T("com%d"),i+1);

m_comb1.InsertString(i,str);

}

m_comb1.SetCurSel(0);//预置COM口

//波特率选择组合框

CStringstr1[]={_T("300"),_T("600"),_T("1200"),_T("2400"),_T("4800"),_T("9600"),

_T("19200"),_T("38400"),_T("43000"),_T("56000"),_T("57600"),_T("115200")};

for(inti=0;i<12;i++)

{

intjudge_tf=m_comb2.AddString(str1[i]);

if((judge_tf==CB_ERR)||(judge_tf==CB_ERRSPACE))

MessageBox(_T("buildbauderror!

"));

}

m_comb2.SetCurSel(5);//预置波特率为"9600"

写完之后编译程序

五、调试我们写好的串口工具

我们下面用51单片机调试一下,结果也是成功的;

m_Edit.SetSel(-1,-1);

this->SetDlgItemTextW(IDC_EDIT1,m_EditReceive);//将m_EditReceive内容显示到ID为IDC_EDIT1的编辑框的最后位置

m_Edit.LineScroll(m_Edit.GetLineCount()-1,0);//将垂直滚动条滚动到最后一

修改一下接收编辑框的属性,发送编辑框不用做修改;

再调试一下发现问题解决了!

六、修改图标和软件信息

我们去到项目所在的文件夹中,如下图所示;

TheEnd!

作者:

刘小二

2014年5月2日星期五

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1