VS2010串口通信_第1页
VS2010串口通信_第2页
VS2010串口通信_第3页
VS2010串口通信_第4页
VS2010串口通信_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、新建MFC项目,名称SerialComm基于对话框,去掉使用Unicode库确认ActiveX控件选中,完成删掉上面默认的控件,放上下面的控件添加成员变量,有两种方法,右键添加变量或类向导成员变量方法一:方法二:注意不同,类别和变量类型对不同类型的控件是不同的然后添加串口控件,左下角切换到解决方案,然后项目名上右键添加完成多出的两个文件加入控件对象编辑控件 ,去掉控件旁边的空白给控件添加变量和响应函数变量名为m_ctrlcomm同理为两个按钮添加响应函数,结果:控件类型ID用途添加成员变量相关事件处理程序名称Edit ControlIDC_EditRxData显示接收数据类别:Value,变量

2、类型:Cstring,变量名:m_EditRxDataEdit ControlIDC_EditTxData显示发射数据类别:Value,变量类型:Cstring,变量名:m_EditTxDataButtonIDC_BtnOpenSerial打开串口类别:Control,变量类型:CButton,变量名:m_BtnOpenSerialOnBnClickedBtnopenserial()ButtonIDC_BtnSendTxData发送数据类别:Control,变量类型:CButton,变量名:m_BtnSendTxDataOnBnClickedBtnsendtxdata()CMSCommIDC_

3、MSCOMM1串口通信控件类别:Control,变量类型:CMSComm,变量名:m_ctrlcommOnCommMscomm1()三个响应函数为:void CSerialCommDlg:OnBnClickedBtnopenserial()if(m_ctrlcomm.get_PortOpen()m_ctrlcomm.put_PortOpen(FALSE);m_ctrlcomm.put_CommPort(12);/打开COM12m_ctrlcomm.put_InputMode(1);/1:表示以二进制方式检取数据m_ctrlcomm.put_InBufferSize(1024);/设置输入缓冲区

4、的大小,Bytesm_ctrlcomm.put_OutBufferSize(1024);/设置输入缓冲区的大小,Bytesm_ctrlcomm.put_Settings("9600,n,8,1");/波特率9600,无校验,8个数据位,1个停止位if( !m_ctrlcomm.get_PortOpen()m_ctrlcomm.put_PortOpen(TRUE);/打开串口if(m_ctrlcomm.get_PortOpen()SetDlgItemText(IDC_BtnOpenSerial,"COM12已经打开");elseMessageBox(&qu

5、ot;该串口无法打开,请检查");m_ctrlcomm.put_RThreshold(1);/参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlcomm.put_InputLen(0);/设置当前接收区数据长度为0m_ctrlcomm.get_Input();/先预读缓冲区以清除残留数据void CSerialCommDlg:OnBnClickedBtnsendtxdata()UpdateData(TRUE); /UpdateData函数参数和内容传递方向对应关系:false:控件->变量 true:控件->变量m_ctr

6、lcomm.put_Output(COleVariant(m_EditTxData);/发送数据m_EditTxData = ""UpdateData(false);/发送之后将发送输入框清空void CSerialCommDlg:OnCommMscomm1()VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; if(m_ctrlcomm.get

7、_CommEvent()=2)/事件值为2表示接收缓冲区内有字符 variant_inp=m_ctrlcomm.get_Input(); /读缓冲区 safearray_inp=variant_inp;/VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 for(k=0;k<len;k+) safearray_inp.GetElement(&k,rxdata+k);/转换为BYTE型数组 for(k=0;k<len;k+) /将数组转换为Cstring型变量 BYTE b=*(char*)(rxdata+k); /字符型 strtemp.Format("%c",b); /将字符送入临时变量strtemp存放 m_EditRxData+=strtemp;/加入接收编辑框对应字符串 UpdateData(FALSE); /UpdateData函数参数和内容传递方向对应关系:false:控件->变量 true:控件->变量编译运行,连接单片机,点击打开串口,单片机

温馨提示

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

评论

0/150

提交评论