基于RS232串口通信设计含源文件.docx

上传人:b****2 文档编号:2235920 上传时间:2022-10-28 格式:DOCX 页数:17 大小:327.95KB
下载 相关 举报
基于RS232串口通信设计含源文件.docx_第1页
第1页 / 共17页
基于RS232串口通信设计含源文件.docx_第2页
第2页 / 共17页
基于RS232串口通信设计含源文件.docx_第3页
第3页 / 共17页
基于RS232串口通信设计含源文件.docx_第4页
第4页 / 共17页
基于RS232串口通信设计含源文件.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于RS232串口通信设计含源文件.docx

《基于RS232串口通信设计含源文件.docx》由会员分享,可在线阅读,更多相关《基于RS232串口通信设计含源文件.docx(17页珍藏版)》请在冰豆网上搜索。

基于RS232串口通信设计含源文件.docx

基于RS232串口通信设计含源文件

目录

1引言1

1.1问题的提出1

1.2国内外研究的现状1

1.5任务与分析2

1.5.1主要任务2

1.5.2分析2

2程序的主要功能2

2.1参数设置功能2

2.2参数显示功能2

2.3打开串口功能2

2.4关闭串口功能2

2.5接收数据功能3

2.6发送数据功能3

2.7清空数据接收区和数据发送区功能3

2.8数据、汉字或字符等显示功能3

3程序运行平台3

4总体设计4

5程序类的说明4

6模块分析6

6.1系统初始化模块2

6.2参数设置和显示模块6

6.3发送数据模块9

6.4清空数据接收区和数据发送区模块10

6.5关闭主窗口模块11

7系统测试13

7.1测试13

7.2总结18

8结论18

参考文献19

 

摘要

随着计算机的普及,计算机网络和多微机系统的广泛应用,尽管当今USB通信技术和以太网技术快速发展,然而串口通信技术始终以其连接简便,价格低廉,稳定可靠等优点,在计算机通信领域占有一席之地。

MSCOmm控件是微软公司为了用户使用方便而提供的一种便捷的控制串口编程的解决方案,本文主要介绍了如何利用MicrosoftVisualC++6.0MSComm控件的串口通信方法,对程序的类进行了说明,分析了本程序各个模块怎样实现起作用。

此次设计以MFC来设计界面编制程序,同时利用MSComm控件通过串口发送和接收数据,实现了串口通信。

该串口通信控制程序具有通信参数设置、通信参数显示、打开和关闭串口、接收数据、发送数据、清空发送区和接收区数据的功能。

 

关键词:

串口通信MicrosoftVisualC++6.0MFCMSComm控件

1引言

1.1问题的提出

串行通信(SerialCommunication)在现代工业控制系统中一直有着及其重要的地位,作为一种基本而又灵活方便的通信方式,它被广泛应用于PC与PC或者PC与PLC之间的数据交换以及其他工业控制与自动控制中,它不仅没有因为时代的进步而遭淘汰,反而在规格上越来越完善,应用也越来越广泛。

VC++是新一代面向对象的可视化开发工具,提供了良好的界面设计能力,在PC机的串口通信方面有很强的功能。

对于从事机械行业的人来说,熟悉基于RS232串口通信的高级语言编程方法显得十分重要。

1.2国内外研究的现状

目前,计算机的串行通信应用十分广泛,串行接口已成为计算机的必需部件和接口之一。

由于其具有连接简单、使用灵活方便、数据传递可靠等优点,在工业监控、数据采集和实时控制系统中得到了广泛应用。

当今,实现串口通信的方法以及第三方控件有很多,例如PComm控件,WindowsAPI函数等等。

但是这几种方法都过于复杂,对程序员要求较高,而且可靠性并不是很好。

利用Microsoft推出的MSComm控件,使得串口通信的实现更为简单、可靠。

随着当今信息技术的快速发展,通信已成为信息技术中的关键问题。

尤其在控制领域,以何种方式实现计算机与外围设备间既简单又可靠的通信,就显得特别重要。

由于串行通信具有实现简单、使用灵活方便、数据传输可靠等优点,因而广泛应用于工业控制系统中,是计算机与外部设备进行数据通信时经常使用的方式之一。

VC++是新一代面向对象的可视化开发工具,提供了良好的界面设计能力,在PC机的串口通信方面有很强的功能。

它具有功能强大、简便易用和代码执行速度快等特点,在通信软件的开发中成为越来越多开发人员的首选工具。

无论在工业控制中PC机和单片机之间的通信,还是在2台Pc机之间的串口通信,都具有相同的原理。

只要掌握其中的通信本质,就能灵活地实现串口通信,串口控制。

1.5任务与分析

1.5.1主要任务

★制定串口通信控制程序的总体构架;

★熟悉VC平台下的高级语言编程方法;

★熟悉基于RS232串口通信的高级语言编程方法;

★在同一台PC机上调试通过所编写的程序;

★编写设计说明书1份。

1.5.2分析

目前Win32中基于VC++6.0的常用串口通信程序一般可以用两种方法实现:

①利用MSCommActiveX串行通信控件;②使用Win2dowsAPI通信函数。

虽然在Windows下Win32API提供了使用文件操作方式的函数进行串口操作的方法,但是在编程实现上还是比较复杂。

Windows平台先进的ActiveX技术使得对串口编程不再需要处理烦琐的细节。

利用已有的AxtiveX控件,只需要编写少量的代码,就可以轻松高效地完成任务。

因此程序员不需要花时间去了解复杂的API函数,只需要利用MSComm控件就可实现串口编程。

2程序的主要功能

2.1参数设置功能

设置和修改串口通信参数,包括端口,时间,波特率,奇偶校验位,数据位,停止位。

2.2参数显示功能

显示当前串口通信参数,包括端口号,波特率,时间,奇偶校验位,数据位,停止位,点击参数设置按钮,弹出参数设置窗口,当完成设置后点击确定,子窗口隐藏,显示界面是数据发送和接收界面。

2.3打开串口功能

参数设置后,打开串口,在程序中设置了一个默认的COM4但是在参数设置窗口可以设置串口,实现通信。

2.4关闭串口功能

关闭串口,停止通信。

2.5接收数据功能

能够进行单个或多个数据的接收和显示。

2.6发送数据功能

能够进行单个或多个数据的发送。

2.7清空数据接收区和数据发送区功能

清空发送区内所有数据。

清空接收区内所有数据。

2.8任何数据、汉字或字符等显示功能

在接收区可显示任何数据、汉字或字符等。

3程序运行平台

MicrosoftVisualC++6.0

具体操作如下:

(1)打开VC++6.0建立基于对话框的MFC应用程序class1,如图3.1.1-图3.1.4,新建MSComm项目,选择MFC应用程序,应用程序类型选择“基于对话框”,生成的类中选择“CMSCommDlg”;

 

 

图3.1.1图3.1.2

 

图3.1.3图3.1.4

(2)在项目中插入MSComm控件;

 

图3.2

 

(3)加载MSComm控件,添加相应的源程序,加载必要的控件;

图3.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);//设置输入缓冲区大小

m_ctrlComm.SetOutBufferSize(512);//设置输出缓冲区大小

//波特率9600,无校验,8个数据位,1个停止位

m_ctrlComm.SetSettings("9600,n,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1