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

下载本文档

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

文档简介

1、串口通信程序编写基于Visual C+ Windows 7 Microsoft Visual Studio 2012 CSerialPort类(定义了串口变量和通信方法)链接地址:https:/ #includeSerialPort.h编程步骤编程步骤编程步骤编程步骤在对话框c文件中声明串口类对象 CSerialPort m_SerialPort定义一个布尔变量 BOOL m_bPortOpen /用来表示标志串口是否打开编程步骤编程步骤给控件添加变量在控件上右键单击-添加变量编程步骤编程步骤给控件添加变量:编辑框编辑框只需关联Value型变量变量名用于程序中赋值时调用编程步骤编程步骤给控件添

2、加变量:组合框ComboBox需要添加控制变量变量名用于获取索引值编程步骤编程步骤将各个控件的变量关联如下:m_ctrlComPortm_ctrlBaudRatem_ctrlDataBits m_ctrlPairtym_strTxMsgm_strRxMsgm_ctrlStopBitsm_strBaudRatem_strPairtyControl型变量Value型变量Value型变量编程步骤编程步骤对写好的对话框进行一个初始化在初始化函数OnInitDialog()中添加如下语句:BOOL C串口通信程序Dlg:OnInitDialog()CDialogEx:OnInitDialog();m_c

3、trlComPort.SetCurSel(0);/设置默认的索引值m_ctrlBaudRate.SetCurSel(0);m_ctrlPairty.SetCurSel(0);m_ctrlDataBits.SetCurSel(3);m_ctrlStopBits.SetCurSel(0);GetDlgItem(IDC_BUTTON1)-EnableWindow(TRUE);/把窗口中的“打开串口”置为活动的可操作状态GetDlgItem(IDC_BUTTON2)-EnableWindow(FALSE);/把窗口中的“关闭串口”置为灰色的不可操作状态编程步骤编程步骤向对话框头文件中添加串口接收字符函

4、数的消息响应声明响应Cserialport类中的消息响应函数-OnComm接收数据编程步骤编程步骤然后再向对话框CPP文件中添加OnComm函数的消息映射响应Cserialport类中的消息响应函数-OnComm接收数据编程步骤编程步骤接着,在对话框CPP文件中加入函数OnComm()的实现至此,每当串口接收缓冲区中有一个字符时,就会产生一个WM_ONCOMM_RXCHAR消息,触发OnComm()函数,这时就可以在函数中进行数据处理响应Cserialport类中的消息响应函数-OnComm接收数据编程步骤编程步骤编写按钮控件消息响应处理函数-打开串口编程步骤编程步骤编写按钮控件消息响应处理函

5、数-打开串口void C串口通信程序Dlg:OnBnClickedButton1()int SelPort,SelBaudRate,SelDataBits,SelStopBits;char SelParity; /定义字符型变量SelPort=m_ctrlComPort.GetCurSel()+1; /得到串口号;GetCurSel()得到的是索引值(0-Max)SelStopBits=m_ctrlStopBits.GetCurSel()+1; /得到停止位SelDataBits=m_ctrlDataBits.GetCurSel()+5; /得到数据位UpdateData(TRUE); /把选

6、定值写入变量SelBaudRate=atoi(m_strBaudRate); /得到波特率值;atoi是将字符型转整型函数(9600-9600)SelParity=m_strPairty.GetAt(0); /获得数据位;GetAt返回的是字符串的第一个字符值if(m_SerialPort.InitPort(this-GetSafeHwnd(),SelPort,SelBaudRate,SelParity,SelDataBits,SelStopBits,EV_RXFLAG | EV_RXCHAR,512)m_SerialPort.StartMonitoring(); /启动串口通信检测线程函数m

7、_bPortOpen=TRUE; /指示串口已打开UpdateData(FALSE);elseAfxMessageBox(没有发现此串口或者被占用); /返回一个提示窗口m_bPortOpen=FALSE; /指示串口已关闭GetDlgItem(IDC_BUTTON1)-EnableWindow(!m_bPortOpen);/根据串口开闭的情况,禁用或使能按钮GetDlgItem(IDC_BUTTON2)-EnableWindow(m_bPortOpen); /根据串口开闭的情况,禁用或使能按钮编程步骤编程步骤编写按钮控件消息响应处理函数-关闭串口void C串口通信程序Dlg:OnBnCli

8、ckedButton2()m_bPortOpen=FALSE; /指示串口已关闭GetDlgItem(IDC_BUTTON1)-EnableWindow(!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:OnBnClickedButt

温馨提示

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

评论

0/150

提交评论