最新vs+mfc+串口通信的实现.docx

上传人:b****5 文档编号:3228850 上传时间:2022-11-20 格式:DOCX 页数:27 大小:2.03MB
下载 相关 举报
最新vs+mfc+串口通信的实现.docx_第1页
第1页 / 共27页
最新vs+mfc+串口通信的实现.docx_第2页
第2页 / 共27页
最新vs+mfc+串口通信的实现.docx_第3页
第3页 / 共27页
最新vs+mfc+串口通信的实现.docx_第4页
第4页 / 共27页
最新vs+mfc+串口通信的实现.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

最新vs+mfc+串口通信的实现.docx

《最新vs+mfc+串口通信的实现.docx》由会员分享,可在线阅读,更多相关《最新vs+mfc+串口通信的实现.docx(27页珍藏版)》请在冰豆网上搜索。

最新vs+mfc+串口通信的实现.docx

最新vs+mfc+串口通信的实现

 

VS2012+MFC+串口通信的实现

VS2012+MFC+串口通信的实现

我的电脑是win764位的。

文档中的图片可通过按住ctrl键加鼠标滚轮进行放大缩小

VS2012链接:

密码:

mb0l

然后需要下载串口控件:

链接:

密码:

1s91

压缩包包含四个文件:

MSCOMM.SRG、MSCOMM32.DEP、MSCOMM32.oca、mscomm32.ocx;

解压后拷贝到:

C:

\Windows\System32(WIN7、Win8、Win10系统);

C:

\WINDOWS\system32(XP系统)。

 

注意:

64位win7、8、10系统还需要将mscomm32.ocx文件复制到C:

\Windows\SysWOW64\目录下,否则后面注册会出错。

在C:

\Windows\System32里找到cmd.exe以管理员身份运行:

Regsvr32C:

\WINDOWS\system32\MSCOMM32.OCX

 

注册成功如图所示:

然后修改注册表:

win+R组合键打开“运行”或者直接在开始菜单里找到“运行”;输入regedit后回车,打开注册表管理器,在其中找到HKEY_CLASSES_ROOT项下的Licenses项,添加主项命名为“4250E830-6AC2-11cf-8ADB-00AA00C00905”,并将键值修改为“kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun”

 

 

这样计算机的配置就算完成了。

下面开始创建工程。

 

打开VS2012->文件->新建->项目

新建MFC应用程序,然后修改项目名称,最好是全部英文字母,下面的解决方案名称会自动修改,然后确定就行了。

出现的是这个页面,点击下一步。

修改应用程序类型为基于对话框、MFC的使用改为在静态库中使用MFC、去掉使用Unicode库。

点击下一步。

把最小化框和最大化框勾上,点击下一步。

 

不用修改点击下一步。

点击完成即可创立完成。

 

这是创建好的图。

选中TODO:

在此放置对话框控件。

右键删除。

下面的确定和取消同样办法处理。

然后添加两个GroupBox控件到你所编辑的窗体上面去,放到你喜欢的位置。

GroupBox没有什么用,只是为了让更好看一些。

或者某一分类在一块,更容易分辨模块理解。

工具箱在视图里面选择。

效果图如下:

 

然后添加两个EditControl控件到ComboBox中。

效果如图所示:

 

然后添加两个ComboBox控件、四个Button控件到窗体中。

效果图如下:

为了美观可以选中控件进行位置的调整,看到菜单栏->窗口、帮助那里,窗口下面的就是左对齐、右对齐、顶部、下部对齐等,可按照自己的喜好进行调整,选择窗体,可以控窗体的大小。

调整好的控件如图所示:

 

然后选中刚开始放置的GroupBox,右击选择属性,将Caption后面的值改为接收。

同样的,把下面那个GroupBox名称改为发送。

然后选中EditControl,右击选择属性,把Multiline改为ture。

这个的含义是多行,表示内容可以多行显示,一般记录性的编辑框需要多行。

然后修改Verticalscroll为ture:

垂直滚动条,需要先更改Multiline属性才能进行修改。

把Wantreturn改为ture:

这个含义是当你的text框在多行编辑的情况下,回车表示换行。

否则要ctrl+回车才能换行。

最后修改ID为IDC_EDIT_Rev。

同样把下面的编辑框修改一下,ID改为IDC_EDIT_Send。

效果图如下

然后为两个ComboBox添加两个StaticText放在其上面,并修改两个StaticText的Caption分别为选择串口和波特率。

效果图如下:

 

然后进行BUTTON控件的修改。

操作步骤同上,将Caption改为打开串口、发送数据、清除数据、退出。

并将其ID分别改为IDC_BUTTON_OPEN、IDC_BUTTON_SEND

、IDC_BUTTON_CLEAN、IDC_BUTTON_CLOSE。

 

然后添加串口控件添加到窗体中,右键选择窗体的空白部分,选择插入ActiveX控件。

选择如图所示这个控件:

把这个串口控件放到合适的位置即可,是一个电话的标志。

然后右击GroupBox控件里面的EditControl控件,也就是接受下面的示例编辑框,选择添加变量。

首先更改访问为私有(private),再改类别改为值(Value),最后将变量名m_EditReceive添加进去,点击确定即可。

更改后的如图所示:

然后用同样的方法,将发送下面的示例编辑框的内容给改了,变量名改为m_Editsend。

下面用同样的方法为两个ComboBox添加变量,也就是为两个有下拉选项的两个控件添加变量。

这两个ComboBox添加变量的时候只需要将访问改为私有(private),添加变量名分别为m_comb1和m_comb2。

具体更改如下图所示:

然后选中你添加的串口控件(电话铃图标那个),用同样的方法添加变量,这个只需要加上一个变量名m_mscom即可。

具体如下图所示:

 

最后可以通过添加StaticText,为自己的制作添加一些小标识。

这样我们的MFC串口通讯的架构就已经完成了。

如下图所示:

 

通过右击窗体的空白部分,选择类导向,可以在成员变量中看到我们添加的成员变量。

双击打开串口按钮控件,我们就可以跳转到解决方案的chuankouDlg.cpp中。

生成这样的函数结构:

 

然后返回我们的窗体,依次双击发送数据、清除数据、和退出。

生成如图所示的函数体。

 

进入chuangkouDlg.cpp中的最上方添加

#include"Resource.h"

#include"mscomm1.h"

#include"targetver.h"三个头文件。

 

在voidCchuankouDlg:

OnBnClickedButtonOpen()下添加代码

 

voidCchuankouDlg:

:

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';//波特率、串口号、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);//改变按钮名称为打开串口

}

}

}

同理添加发送、清除、退出的程序

voidCchuankouDlg:

:

OnBnClickedButtonSend()

{

//TODO:

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

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

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

}

voidCchuankouDlg:

:

OnBnClickedButtonClean()

{

//TODO:

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

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

UpdateData(false);//更新数据

}

voidCchuankouDlg:

:

OnBnClickedButtonClose()

{

//TODO:

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

if(m_mscom.get_PortOpen())

m_mscom.put_PortOpen(false);

CDialogEx:

:

OnCancel();

}

 

然后选中串口控件,右键选择添加事件处理程序,点击添加编辑即可。

添加编辑后会跳转到解决方案的chuankouDlg.cpp中,并生成voidCchuankouDlg:

:

OnCommMscomm1()结构框架。

为结构框架添加程序代码:

voidCchuankouDlg:

:

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);

}

}

然后在chuankouDlg.cpp中找到提示“额外的初始化代码”,在这下面添加串口初始化代码

//串口选择组合框

CStringstr;

inti;

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

{

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

m_comb1.InsertString(i,str);

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

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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