推荐下载RS232串口通信C++课程设计Word文档下载推荐.docx
- 文档编号:22917712
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:18
- 大小:194.27KB
推荐下载RS232串口通信C++课程设计Word文档下载推荐.docx
《推荐下载RS232串口通信C++课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《推荐下载RS232串口通信C++课程设计Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
它具有功能强大、简便易用和代码执行速度快等特点,在通信软件的开发中成为越来越多开发人员的首选工具。
无论在工业控制中PC机和单片机之间的通信,还是在2台Pc机之间的串口通信,都具有相同的原理。
只要掌握其中的通信本质,就能灵活地实现串口通信,串口控制。
1.5任务与分析
1。
5.1主要任务
★制定串口通信控制程序的总体构架;
★熟悉VC平台下的高级语言编程方法;
★熟悉基于RS232串口通信的高级语言编程方法;
★在同一台PC机上调试通过所编写的程序;
★编写设计说明书1份。
5.2分析
目前Win32中基于VC++6。
0的常用串口通信程序一般可以用两种方法实现:
①利用MSCommActiveX串行通信控件;
②使用Win2dowsAPI通信函数。
虽然在Windows下Win32API提供了使用文件操作方式的函数进行串口操作的方法,但是在编程实现上还是比较复杂.Windows平台先进的ActiveX技术使得对串口编程不再需要处理烦琐的细节。
利用已有的AxtiveX控件,只需要编写少量的代码,就可以轻松高效地完成任务。
因此程序员不需要花时间去了解复杂的API函数,只需要利用MSComm控件就可实现串口编程.
2程序的主要功能
2。
1参数设置功能
设置和修改串口通信参数,包括端口,时间,波特率,奇偶校验位,数据位,停止位。
2参数显示功能
显示当前串口通信参数,包括端口号,波特率,时间,奇偶校验位,数据位,停止位,点击参数设置按钮,弹出参数设置窗口,当完成设置后点击确定,子窗口隐藏,显示界面是数据发送和接收界面。
2.3打开串口功能
参数设置后,打开串口,在程序中设置了一个默认的COM4但是在参数设置窗口可以设置串口,实现通信。
4关闭串口功能
关闭串口,停止通信。
5接收数据功能
能够进行单个或多个数据的接收和显示.
2.6发送数据功能
能够进行单个或多个数据的发送。
2.7清空数据接收区和数据发送区功能
清空发送区内所有数据。
清空接收区内所有数据.
2.8任何数据、汉字或字符等显示功能
在接收区可显示任何数据、汉字或字符等。
3程序运行平台
MicrosoftVisualC++6。
具体操作如下:
(1)打开VC++6。
0建立基于对话框的MFC应用程序class1,如图3。
1.1—图3。
4,新建MSComm项目,选择MFC应用程序,应用程序类型选择“基于对话框”,生成的类中选择“CMSCommDlg”;
图3.1。
1图3.1.2
图3。
3图3.1。
4
(2)在项目中插入MSComm控件;
图3。
2
(3)加载MSComm控件,添加相应的源程序,加载必要的控件;
3.1图3.3.2
(4)编写程序代码,再编译,链接,调试,执行等,生成应用程序。
4总体设计
图4.1系统总体框架图
5程序类的说明
classCClass1Dlg:
publicCDialog
{
//Construction
public:
CClass1Dlg(CWnd*pParent=NULL);
//standardconstructor
voidOpenPort();
//DialogData
//{{AFX_DATA(CClass1Dlg)
enum{IDD=IDD_CLASS1_DIALOG};
CMSCommm_ctrlComm;
CStringm_strEditRXData;
CStringm_strEditTXData;
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CClass1Dlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
HICONm_hIcon;
//Generatedmessagemapfunctions
//{{AFX_MSG(CClass1Dlg)
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
afx_msgvoidOnComm();
afx_msgvoidOnButtonManualsend();
afx_msgvoidOnSetting();
afx_msgvoidOncls();
afx_msgvoidOnEnd();
DECLARE_EVENTSINK_MAP()
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//!
defined(AFX_CLASS1DLG_H__B8BA98C1_5D58_47BE_B664_E97E77EC5076__INCLUDED_)
6模块分析
6。
1系统初始化模块
系统的初始化模块命令代码如下:
BOOLCClass1Dlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add”About...”menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange。
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX〈0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu。
LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu—>
AppendMenu(MF_SEPARATOR);
pSysMenu->
AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog。
Theframeworkdoesthisautomatically
//whentheapplication’smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);
//Setbigicon
SetIcon(m_hIcon,FALSE);
//Setsmallicon
//TODO:
Addextrainitializationhere
m_ctrlComm。
SetCommPort(4);
//选择COM4
m_ctrlComm.SetInputMode
(1);
//输入方式为二进制方式
m_ctrlComm.SetInBufferSize(1024);
//设置输入缓冲区大小
SetOutBufferSize(512);
//设置输出缓冲区大小
//波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetSettings(”9600,n,8,1"
);
if(!
m_ctrlComm。
GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);
//打开串口
m_ctrlComm.SetRThreshold
(1);
//参数1表示每当串口接收缓冲区中有多于
//或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(0);
//设置当前接收区数据长度为0
GetInput();
//先预读缓冲区以清除残留数据
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
}
2参数设置和显示模块
单击主界面中的【参数设置】按钮,将弹出“参数设置"
对话框,如图7。
1所示,可以在该对话框中设置串口的通信参数。
该命令的代码如下:
voidCClass1Dlg:
OnSetting()
//TODO:
Addyourcontrolnotificationhandlercodehere
CSettingDlgsetDlg;
setDlg.DoModal();
//DoModal()是CSettingDlg类成员函数,通过调用该
//函数将显示对话框。
m_ctrlComm.GetInput();
3发送数据模块
单击主界面中的【发送数据】按钮,将把发送区的内容发送到串口调试助手的接收区,如图7.3(a)(b)所示,该命令的代码如下:
voidCClass1Dlg:
OnButtonManualsend()
UpdateData(TRUE);
//读取编辑框内容
m_ctrlComm.SetOutput(COleVariant(m_strEditTXData));
//发送数据
}
4清空数据接收区和数据发送区模块
单击主界面中的【清除】按钮,将清空数据接收区和数据发送区内容,如图7。
6所示,该命令的代码如下:
Oncls()
m_strEditTXData=_T("
”);
m_strEditRXData=_T("
”);
UpdateData(FALSE);
6.5关闭主窗口模块
单击主界面中的【结束】按钮,将关闭父窗口,如图7。
8所示,该命令的代码如下:
OnEnd()
OnOK();
7系统测试
7。
1测试
首先,直接双击class1文件夹下的debug子文件夹下的class1.exe运行文件;
其次,按以下步骤进行测试:
(1)参数设置:
图
7.1参数设置
(2)打开串口:
图7.2打开串口
(3)发送数据和接收数据界面:
图7.3.1发送和接收数据
图7.3。
2串口调试助手显示
(4)发送数据和接收数据:
图7.4.1串口调试助手发送和接收数据
图7.4。
2接收和发送数据
(5)清空接收区和发送区:
图7。
5清空接收区和发送区
(6)关闭主窗口:
点击结束,运行窗口关闭,返回到编辑窗口,如图7。
6所示:
图7.6编辑窗口
2总结
通过上述测试,本系统有良好的用户界面,在同一计算机上进行调试,实现了参数设置与显示(通讯波特率,端口等可设置)、接收和发送数据、发送与显示、清空数据接收区和发送区内容的功能,可进行单个数据或成批数据传输。
8结论
本次课程设计,利用MicrosoftVisualC++6.0平台,利用MSComm控件编写串口通信程序,具有良好的用户界面,能在同一计算机上进行调试,实现了串口通信参数设置与显示、接收和发送数据、清空接收区和发送区内容、可进行单个数据或成批数据传输的功能。
但是,本程序也存在一些不足,如:
用串口调试助手V2。
1接收的汉字过多时可能会没有显示。
本次课程设计,利用VC++下的MSComm控件编程方法,通过MSComm控件可以十分便捷地写出灵活性高,移植性强的串口通信程序,避免了去了解一些复杂的windowsAPI函数.这种方法具有很强的实用性,可以广泛地用于工业数据采集等领域.
参考文献
[1]曹卫彬编著。
C/C++串口通信典型应用实例编程实践.北京:
电子工业出版社,2009
[2]黄维通。
VC++面向对象与可视化程序设计。
清华大学出版社
[3]张荣梅.VisualC++程序设计案例教程.北京大学出版社
[4]王华,岳丽全,岳志高.MSComm控件在VC++6。
0串口通信中的应用.长春工程学院学报:
自然科学版,2009,10
(1)
[5]黄春梅,徐宇清主编.C/C++程序设计。
中国铁道出版社2007,02
[6]吴国凤,宣善立主编。
C/C++程序设计.高等教育出版社2006
[7]李强,贾云霞编著。
VisualC++项目开发实践。
北京:
中国铁道出版社,2003
[8]王莉,阳春华.基于VC++的串口通信设计及其应用[J]。
控制工程,2004,11(S1):
89292.
[9]郭克新编著。
VisualC++代码参考与技巧大全.电子工业出版社2008
[10]
[11]孙淑霞,李思明,刘焕君编著。
C/C++程序设计实验指导与测试-第2版.电子工业出版社2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 推荐 下载 RS232 串口 通信 C+ 课程设计