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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VS2010之MFC串口通信教程

说明:本人也是刚刚入门MFC,参照一些资料和源代码就实验做了这么一个串口通信工具!资料来源主要有鸡啄米博客网站,里面有详细的学习教程!网上的VS2010源代码都比较少,建议大家先理解一个源代码的构架和结构再深入学习!本文档可以一步一步教你从建立工程到实验调试,是一个非常完整的教程!非常适合新手练习!

——贺州学院大学生创新基地实验室在制作串口通信所遇到的问题:编辑框的滚动条不会随着数据的更新保持在最后一行!接下来我们开始讲解MFC串口通信的制作:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

void C串口V2Dlg::OnBnClickedButtonOpen()//打开串口按钮程序

{

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

CString str,str1,n; //定义字符串

GetDlgItemText(IDC_BUTTON_OPEN,str);

CWnd *h1;

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

{

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

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

(()+1)); //选择串口

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

(str1); //波特率为(波特率组á合框)无校验,8数据位,1个停止位(1024); //设置当前接收区数据长度为1024

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

(1); //设置RT允许

(true); //打开串口

if())

{

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

UpdateData(true);

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

}

else

{

(false);

if(str!=_T("打开串口))

{

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

UpdateData(true);

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

}

}

void C串口V2Dlg::OnBnClickedButtonSend()//发送数据按钮程

{

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

UpdateData(true); //更新控件数据(COleVariant(m_Editsend));//把发送编辑框的数据发送出去}

void C串口V2Dlg::OnBnClickedButtonClean()//清除数据按钮程序{

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

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

UpdateData(false); //更新数据

}

void C串口V2Dlg::OnBnClickedButtonClose()//退出按钮程序

{

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

if())

(false);

CDialogEx::OnCancel();

}

void C串口V2Dlg::OnCommMscomm1()//串口控件程序

{

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

if()==2)

{

char str[1024]={0};

long k;

VARIANT InputData=(); //读缓冲区

COleSafeArray fs;

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

for(k=0;k<();k++)

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

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

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

UpdateData(false);

}

}

// 串口选择组合框

CString str;

int i;

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

{

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

(i,str);

}

(0);//预置COM口

//波特率选择组合框

CString str1[]={_T("300"),_T("600"),_T("1200"),_T("2400"),_T("4800"),_T("9600"), _T("19200"),_T("38400"),_T("43000"),_T("56000"),_T("57600"),_T("115200")};

相关文档
最新文档