VS2012+MFC+串口通信的实现.doc_第1页
VS2012+MFC+串口通信的实现.doc_第2页
VS2012+MFC+串口通信的实现.doc_第3页
VS2012+MFC+串口通信的实现.doc_第4页
VS2012+MFC+串口通信的实现.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VS2012+MFC+串口通信的实现我的电脑是win7 64位的。文档中的图片可通过按住ctrl键加鼠标滚轮进行放大缩小VS2012链接:/s/1hsGOyji密码:mb0l然后需要下载串口控件:链接:/s/1i57YRHj密码:1s91压缩包包含四个文件:MSCOMM.SRG、MSCOMM32.DEP、MSCOMM32.oca、mscomm32.ocx;解压后拷贝到:C:WindowsSystem32(WIN7、Win8、Win10系统);C:WINDOWSsystem32(XP系统)。注意:64位win7、8、10系统还需要将mscomm32.ocx文件复制到C:WindowsSysWOW64目录下,否则后面注册会出错。在C:WindowsSystem32里找到cmd.exe以管理员身份运行:Regsvr32 C:WINDOWSsystem32MSCOMM32.OCX注册成功如图所示:然后修改注册表:win+R组合键打开“运行”或者直接在开始菜单里找到“运行”;输入regedit后回车,打开注册表管理器,在其中找到HKEY_CLASSES_ROOT项下的Licenses项,添加主项命名为“4250E830-6AC2-11cf-8ADB-00AA00C00905”,并将键值修改为“kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun”这样计算机的配置就算完成了。下面开始创建工程。打开VS2012-文件-新建-项目新建MFC应用程序,然后修改项目名称,最好是全部英文字母,下面的解决方案名称会自动修改,然后确定就行了。出现的是这个页面,点击下一步。修改应用程序类型为基于对话框、MFC的使用改为在静态库中使用MFC、去掉使用Unicode库。点击下一步。把最小化框和最大化框勾上,点击下一步。不用修改点击下一步。点击完成即可创立完成。这是创建好的图。选中TODO:在此放置对话框控件。右键删除。下面的确定和取消同样办法处理。然后添加两个Group Box控件到你所编辑的窗体上面去,放到你喜欢的位置。Group Box没有什么用,只是为了让更好看一些。或者某一分类在一块,更容易分辨模块理解。工具箱在视图里面选择。效果图如下:然后添加两个Edit Control控件到Combo Box中。效果如图所示:然后添加两个Combo Box控件、四个Button控件到窗体中。效果图如下:为了美观可以选中控件进行位置的调整,看到菜单栏-窗口、帮助那里,窗口下面的就是左对齐、右对齐、顶部、下部对齐等,可按照自己的喜好进行调整,选择窗体,可以控窗体的大小。调整好的控件如图所示:然后选中刚开始放置的Group Box,右击选择属性,将Caption后面的值改为接收。同样的,把下面那个Group Box名称改为发送。然后选中Edit Control,右击选择属性,把Multiline改为ture。这个的含义是多行,表示内容可以多行显示,一般记录性的编辑框需要多行。 然后修改Vertical scroll为ture:垂直滚动条,需要先更改Multiline属性才能进行修改。 把Want return改为ture:这个含义是当你的text框在多行编辑的情况下,回车表示换行。否则要ctrl+回车才能换行。最后修改ID为IDC_EDIT_Rev。同样把下面的编辑框修改一下,ID改为IDC_EDIT_Send。效果图如下然后为两个Combo Box添加两个Static Text放在其上面,并修改两个Static Text的Caption分别为选择串口和波特率。效果图如下:然后进行BUTTON控件的修改。操作步骤同上,将Caption改为打开串口、发送数据、清除数据、退出。并将其ID分别改为IDC_BUTTON_OPEN、IDC_BUTTON_SEND、IDC_BUTTON_CLEAN、IDC_BUTTON_CLOSE。然后添加串口控件添加到窗体中,右键选择窗体的空白部分,选择插入ActiveX控件。选择如图所示这个控件: 把这个串口控件放到合适的位置即可,是一个电话的标志。然后右击Group Box控件里面的Edit Control控件,也就是接受下面的示例编辑框,选择添加变量。首先更改访问为私有(private),再改类别改为值(Value),最后将变量名m_EditReceive添加进去,点击确定即可。更改后的如图所示:然后用同样的方法,将发送下面的示例编辑框的内容给改了,变量名改为m_Editsend。下面用同样的方法为两个Combo Box添加变量,也就是为两个有下拉选项的两个控件添加变量。这两个Combo Box添加变量的时候只需要将访问改为私有(private),添加变量名分别为m_comb1和m_comb2。具体更改如下图所示:然后选中你添加的串口控件(电话铃图标那个),用同样的方法添加变量,这个只需要加上一个变量名m_mscom即可。具体如下图所示:最后可以通过添加Static Text,为自己的制作添加一些小标识。这样我们的MFC串口通讯的架构就已经完成了。如下图所示:通过右击窗体的空白部分,选择类导向,可以在成员变量中看到我们添加的成员变量。双击打开串口按钮控件,我们就可以跳转到解决方案的chuankouDlg.cpp中。生成这样的函数结构:然后返回我们的窗体,依次双击发送数据、清除数据、和退出。生成如图所示的函数体。进入chuangkouDlg.cpp中的最上方添加#include Resource.h#include mscomm1.h#include targetver.h三个头文件。在void CchuankouDlg:OnBnClickedButtonOpen()下添加代码void CchuankouDlg:OnBnClickedButtonOpen()/ TODO: 在此添加控件通知处理程序代码CString str,str1,n;/定义字符串GetDlgItemText(IDC_BUTTON_OPEN,str);CWnd *h1;h1=GetDlgItem(IDC_BUTTON_OPEN);/指向控件的captionif(!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);/设置当前接收区数据长度为1024m_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);/改变按钮名称为打开串口同理添加发送、清除、退出的程序void CchuankouDlg:OnBnClickedButtonSend()/ TODO: 在此添加控件通知处理程序代码UpdateData(true);/更新控件数据m_mscom.put_Output(COleVariant(m_Editsend);/把发送编辑框的数据发送出去void CchuankouDlg:OnBnClickedButtonClean()/ TODO: 在此添加控件通知处理程序代码m_EditReceive=_T();/给接收编辑框发送空格符UpdateData(false);/更新数据void CchuankouDlg:OnBnClickedButtonClose()/ TODO: 在此添加控件通知处理程序代码if(m_mscom.get_PortOpen()m_mscom.put_PortOpen(false);CDialogEx:OnCancel();然后选中串口控件,右键选择添加事件处理程序,点击添加编辑即可。添加编辑后会跳转到解决方案的chuankouDlg.cpp中,并生成voidCchuankouDlg:OnCommMscomm1()结构框架。为结构框架添加程序代码:void CchuankouDlg:OnCommMscomm1()/ TODO: 在此处添加消息处理程序代码if(m_mscom.get_CommEvent()=2)char str1024=0;long k;VARIANT InputData=m_mscom.get_Input();/读缓冲区COleSafeArray fs;fs=InputData;/VARIANT型变量转换为COleSafeArray型变量for(k=0;kfs.GetOneDimSize();k+)fs.GetElement(&k,str+k);/转换为BYTE型数组 m_EditReceive+=str; /接收到编辑框里面/SetTimer(1,10,NULL);/延时10msUpdateData(false);然后在chuankouDlg.cpp中找到提示“额外的初始化代码”,在这下面添加串口初始化代码/ 串口选择组合框CString str;int i;for(i=0;i15;i+)str.Format(_T(com %d),i+1);m_comb1.InsertString(i,str);m_comb1.SetCurSel(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);for(int i=0;i12;i+)int judge_tf=m_comb2.AddString(str1i);if(judge_tf=CB_ERR)|(judge_tf=CB_ERRSPACE)MessageBox(_T(build baud error!);m_comb2.SetCurSel(0);/预置波特率为115200这样,串口程序就写完了,下面进行调试程序。在生成中选择生成解决方案当出现这个对话框的时候选择否。然后就会生成成功然后点击调试下面的本地Windows调试器就可以看到我们制作的窗体最后需要做的就是串口的测试虚拟串口链接:/s/1hseoNzA密码:5oey下载完成后按照里面文档进行安装即可。打开虚拟串口点add pair就会出现两个虚拟串口找到你文件保存的位置,再一次打开程序运行chuankou(1KB)那个,打开之后,然后按照上面步骤再次程序,这样就会有两个窗体来测试串口通信的好坏。一个窗体选择串口1,另一个选择串口2,串口的选择可以通过选中com口然后利用鼠标的滚轮来进行选择。波特率也是一样的。调试的时候先打开串口,然后将发送的东西分别放到两个窗体发送,然后发送数据,经过测试,串口可以实现通信。我遇到的问题:如果在添加控件的时候一直弹出setup AutoCAD的时候,那就是因为你电脑安装了CAD,CAD没有安装完全或者没有卸载干净。可以选择控制面板中的程序和功能,然后选中进行卸载或更改。然后选择修复或重新安装。修复或卸载一下就可以了,我选择的是修复了一下。如果在添加串口控件的时候,双击之后解决方案的cpp文件并没有创建程序框架,那就是因为头文件你没有添加。注:在双击打开串口、发送数据、清除数据、退出来创建程序框架的时候,你需要把架构创建完之后再去添加程序代码,否则会出现双击进入不到解决方案中(也就是cpp文件中)。学习心得:学习的时候一定要静下心去学习,特别是软件方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论