MFC串口通信程序(基于Vc++及Serialport类).ppt_第1页
MFC串口通信程序(基于Vc++及Serialport类).ppt_第2页
MFC串口通信程序(基于Vc++及Serialport类).ppt_第3页
MFC串口通信程序(基于Vc++及Serialport类).ppt_第4页
MFC串口通信程序(基于Vc++及Serialport类).ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、串口通信程序编写,姓名:潘培哲 专业:控制工程 学号:12013002347,基于Visual C+,软件环境,Windows 7 Microsoft Visual Studio 2012 CSerialPort类(定义了串口变量和通信方法),链接地址: ,编程步骤,新建一个MFC项目,命名,编程步骤,编程步骤,基本的窗口,对话框编辑器,直接拖动到窗口中去,编程步骤,用到的几种控件,布局后的界面,编程步骤,为每一个控件命名,在控件上右键单击-属性,编程步骤,命名完成后的窗口,为组合框添加数据,解压CSerialPort并将(.h)和(.cpp)文件复制到工程中去。 主对话框头文件中引入 #in

2、cludeSerialPort.h,编程步骤,编程步骤,在对话框c文件中声明串口类对象 CSerialPort m_SerialPort 定义一个布尔变量 BOOL m_bPortOpen /用来表示标志串口是否打开,编程步骤,给控件添加变量,在控件上右键单击-添加变量,编程步骤,给控件添加变量:编辑框,编辑框只需关联Value型变量,变量名用于程序中赋值时调用,编程步骤,给控件添加变量:组合框,ComboBox需要添加控制变量,变量名用于获取索引值,编程步骤,将各个控件的变量关联如下:,m_ctrlComPort,m_ctrlBaudRate,m_ctrlDataBits,m_ctrlPai

3、rty,m_strTxMsg,m_strRxMsg,m_ctrlStopBits,m_strBaudRate,m_strPairty,Control型变量,Value型变量,Value型变量,编程步骤,对写好的对话框进行一个初始化,在初始化函数OnInitDialog()中添加如下语句:,BOOL C串口通信程序Dlg:OnInitDialog() CDialogEx:OnInitDialog(); m_ctrlComPort.SetCurSel(0);/设置默认的索引值 m_ctrlBaudRate.SetCurSel(0); m_ctrlPairty.SetCurSel(0); m_ctr

4、lDataBits.SetCurSel(3); m_ctrlStopBits.SetCurSel(0); GetDlgItem(IDC_BUTTON1)-EnableWindow(TRUE); /把窗口中的“打开串口”置为活动的可操作状态 GetDlgItem(IDC_BUTTON2)-EnableWindow(FALSE); /把窗口中的“关闭串口”置为灰色的不可操作状态,编程步骤,向对话框头文件中添加 串口接收字符函数的消息响应声明,响应Cserialport类中的消息响应函数-OnComm接收数据,编程步骤,然后再向对话框CPP文件中添加OnComm函数的消息映射,响应Cserialpo

5、rt类中的消息响应函数-OnComm接收数据,编程步骤,接着,在对话框CPP文件中加入函数OnComm()的实现,至此,每当串口接收缓冲区中有一个字符时,就会产生一个WM_ONCOMM_RXCHAR消息,触发OnComm()函数,这时就可以在函数中进行数据处理,响应Cserialport类中的消息响应函数-OnComm接收数据,编程步骤,编写按钮控件消息响应处理函数-打开串口,编程步骤,编写按钮控件消息响应处理函数-打开串口,void C串口通信程序Dlg:OnBnClickedButton1() int SelPort,SelBaudRate,SelDataBits,SelStopBits;

6、 char SelParity; /定义字符型变量 SelPort=m_ctrlComPort.GetCurSel()+1; /得到串口号;GetCurSel()得到的是索引值(0-Max) SelStopBits=m_ctrlStopBits.GetCurSel()+1; /得到停止位 SelDataBits=m_ctrlDataBits.GetCurSel()+5; /得到数据位 UpdateData(TRUE); /把选定值写入变量 SelBaudRate=atoi(m_strBaudRate); /得到波特率值;atoi是将字符型转整型函数(9600-9600) SelParity=m

7、_strPairty.GetAt(0); /获得数据位;GetAt返回的是字符串的第一个字符值 if(m_SerialPort.InitPort(this-GetSafeHwnd(),SelPort,SelBaudRate,SelParity,SelDataBits,SelStopBits,EV_RXFLAG | EV_RXCHAR,512) m_SerialPort.StartMonitoring(); /启动串口通信检测线程函数 m_bPortOpen=TRUE; /指示串口已打开 UpdateData(FALSE); else AfxMessageBox(没有发现此串口或者被占用); /

8、返回一个提示窗口 m_bPortOpen=FALSE; /指示串口已关闭 GetDlgItem(IDC_BUTTON1)-EnableWindow(!m_bPortOpen);/根据串口开闭的情况,禁用或使能按钮 GetDlgItem(IDC_BUTTON2)-EnableWindow(m_bPortOpen); /根据串口开闭的情况,禁用或使能按钮 ,编程步骤,编写按钮控件消息响应处理函数-关闭串口,void C串口通信程序Dlg:OnBnClickedButton2() m_bPortOpen=FALSE; /指示串口已关闭 GetDlgItem(IDC_BUTTON1)-EnableWi

9、ndow(!m_bPortOpen);/使能“打开串口”按钮 GetDlgItem(IDC_BUTTON2)-EnableWindow(m_bPortOpen); /禁用“关闭串口”按钮 ,以同样的方法打开“关闭串口”按钮的消息函数,插入下面语句,编程步骤,编写按钮控件消息响应处理函数-发送,以同样的方法打开“发送”按钮的消息函数,插入下面语句,void C串口通信程序Dlg:OnBnClickedButton3() if(!m_bPortOpen) /检测串口是否打开 return ; /如果关闭,则结束函数 else /如果打开,则执行下面语句 UpdateData(TRUE); /读入编辑框的数据(把编辑框中的字符写入变量) m_SerialPort.WriteToPort(LPCTSTR)m_strTxMsg); /调用函数发送数据 ,编程步骤,编写按钮控件消息响应处理函数-清空,以同样的方法打开“清空”按钮的消息函数,插入下面语句,void C串口通信程序Dlg:OnBnC

温馨提示

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

评论

0/150

提交评论