串行异步通信程序设计.doc

上传人:h**** 文档编号:132761 上传时间:2018-07-09 格式:DOC 页数:32 大小:305KB
下载 相关 举报
串行异步通信程序设计.doc_第1页
第1页 / 共32页
串行异步通信程序设计.doc_第2页
第2页 / 共32页
串行异步通信程序设计.doc_第3页
第3页 / 共32页
串行异步通信程序设计.doc_第4页
第4页 / 共32页
串行异步通信程序设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、 * 实践教学 * 兰州理工大学 计算机与通信学院 2014年秋季学期 通信系统综合训练 课程设计 题 目: 串行异步通信程序设计 专业班级: 通信工程( 1)班 姓 名: 李银环 学 号: 11250134 指导教师: 王惠琴 成 绩: 摘要 在 Windows 环境下实现通信的方法主要有利用 MSComm 控件和直接用 Windows API 编程 ,软件采用 Microsoft Visual C+ 6.0,利用 MSComm 控件编程相对来说更简单一些,而直接使用 Windows API 编程更灵活一些。 本次课程设计分析了串行异步通信的基本原理,在 VC+6.0 的环境下利用 MSCo

2、mm 控件实现了两个 PC 机的 COM 口间的数据发送和接收。本文通过对 COM1 口进行初始化编程,以及对建立的工程中的每个对话框和按钮分别进 行编程和设置,成功的实现了利用 PC 机的两个 COM 口进行异步通信,并能根据设置调整异步传行通信参数。 关键词 : VC+6.0; MSComm 控件;串行异步通信 1 目录 前言 . 1 第 1 章 串行异步通信基本原理 . 2 1.1 串行通信协议 . 2 1.2 串口通信的基本概念 . 3 1.3 RS-232 简介 . 4 第 2 章 VC+软件简介 . 5 2.1 VC+6.0 简介 . 5 2.2 Microsoft Communi

3、cations Control 控件 . 6 第 3 章 串行异步通信系统分析 . 7 第 4 章 串行异步通信系统设计 . 8 4.1 建立工程 . 8 4.2 在程序中添加 MSComm 控件 . 9 4.3 初始化串口:设置 MSComm 控件的属性 . 11 4.4 发送数据 . 12 第 5 章 串行异步通信程序调试 . 18 5.1 计算机串口设置 . 18 5.2 程序运行结果 . 18 参考文献 . 20 附录 . 21 致谢 . 29 1 前言 随着现代信息技术的发展以及计算机网络的广泛应用,计算机通信技术已经日趋成熟,串口通信作为一种灵活、方便、可靠的通信方式,被广泛应用于

4、工业控制中。同时串行通信还应用于交通控制、分布数据采集系统、通信距离扩展、电力系统数据采集与控制系统、高速公路收费系统、远程控制、保密通信系统和教学实验等等。 在数据通信、计算机网络以及工业上的分布式控制系统中,经常需要采用串行通信来达到远程信息交换的目的。当控制计算机与各数控机床相距较远时,一般采用串行通信方式而不采用并行通信方式。这是因为并行通信系统的造价较高、众多的连线不仅容易引入干扰,也容易发生线路故障。串行通信由于接线少、成本低,在数据采集和控制系统中得到了广泛的应用,控制系统中常用的串行通信一般采用 RS-232 串行总线标准, RS-232 是PC机与通信工业中应用最广泛的一种串

5、行接口。 WINDOWS 下双机点到点的串行通信系统是一个典型的通信 系统,它是我们为了实现计算机底层的工作,以及为了用户更好地和系统能够直接相连而提出来的。 经过分析我使用了RS-232C 为接口线路以及 Microsoft 公司的 Visual C+ 6.0 作为开发工具,利用其提供的各种面向对象的开发工具来开发的系统。论述了采用自顶向下的设计方法,模块化设计思路,以及总体设计编码和调试,其开发主要包括数据的发送与接收等方面。 在本次课程设计中,讨论了使用 VC+的开发环境实现两台 PC机间的串口通信。就是通过一个 MSComm 控件,用一个 RS-232 串口线将两台机子间的串口连接起来

6、 ,从而进行数据收发。而使用 WinAPI 进行串口通信不像使用 MSComm 控件那么容易,需要设置多个参数。2 第 1章 串行异步通信基本原理 1.1 串行通信协议 串行传输可采用以下两种方法:异步传输和同步传输。 1.1.1 异步传输协议 在异步传输方式中,数据传输单位是字符。在通信的数据流中,字符间异步,字符内部各位间同步。异步通信方式的“异步”主要体现在字符与字符之间通信没有严格的定时要求。异步传输中,字符可以是连续地、一个个地发送,也可以是不连续地、随机地进行单独发送。在一个字符格式的停止位之后,立即发送下一个字符的 起始位,开始一个新的字符的传输,这叫做连续的串行数据发送,即帧与

7、帧之间是连续的。断续的串行数据传送是指在一帧结束之后维持数据线的“空闲”状态,新的起始位可在任何时刻开始。一旦传送开始,组成这个字符的各个数据位将被连续发送,并且每个数据位持续的时间是相等的。接收端根据这个特点与数据发送端保持同步,从而正确地恢复数据。收发双方则以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。 起止式异步协议的特点是一个字符一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时 间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值 0),字符本身有 5 7 位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位,或

8、意味半,或二位停止位,停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值),这样就保证起始位开始处一定有一个下跳沿。 异步串行通信的可靠性高,但由于要在每个字符的前后加上起始位和停止位这样一些附加位,使得传输效率变低了,只有约 80%。因此,起止协议一般用在数据速率较慢的场合(小于 19.2kbit/s)。在高速传送时,一般要采用同步协议。 1.1.2 同步传输协议 在同步传输方式中,以帧为数据传输单位,每 个帧中含有多个字符代码,而且字符代码与字符代码之间没有间隙以及起始位和停止位。和异步传输相比,数据传输单位的加长容易引起时钟漂移。为了保证接收端能够正确地区分数据流中的每个

9、数据位,收发双方必须通过某种方法建立起同步的时钟。可以在发送器和接收器之间提供一条独立的时钟线路,由线路的一端(发送器或者接收器)定期地在每个比特时间中向线路发送一个短脉冲信号,另一端则将这些有规律的脉冲作为时钟。这种技术在短距离传输时表现良好,但在长距离传输中,定时脉冲可能 会和信息信号一样受到破坏,从而出现定时误差。另一种方法是通过采用嵌有3 时钟信息的数据编码位向接收端提供同步信息 。 ( 1)面向字符的同步协议 这种协议的特点是一次传送由若干个字符组成的数据块,而不是只传送一个字符,并规定了 10 个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信控制字。由

10、于被传送的数据块是由字符组成,故被称作面向字符的协议。 ( 2)面向比特的同步协议 该协议的特点是所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称“面向 比特”的协议。 1.2 串口通信的基本概念 1.2.1 串行通信 串行通信数据传送的特点是:数据传送按位顺序进行,最少只需要一根传输线即可完成,节省传输线。与并行通信相比,串行通信还有较为显著的优点:传输距离长,可以从几米到几千米;在长距离内串行数据传送速率会比并行数据传送速率快;串行通信的通信时钟频率容易提高;串行通信的抗干扰能力十分强,其信号间的互相干扰完全可以忽略。但是串行通信传送速度

11、比并行通信慢得多,并行通信时间为 T,则串行时间为 NT。 1.2.2 串行通信的工作模式 串行数据通信的基础是单 线传输信息,数据通常是在两个站(点对点)之间进行传送,按照数据流的方向可分成 3 种传送模式:单工形式、半双工形式和全双工形式。 ( 1)单工形式:在单工形式中数据传送是单向的。通信双方中,一方固定为发送端,另一方则固定为接收端。信息只能沿一个方向传送,使用一根传输线,例如,计算机与打印机之间的通信是单工形式,因为只有计算机向打印机传送数据,而没有相反的数据传送。还有在某些通信信道中,如单工无线发送等。 ( 2)半双工形式:半双工通信使用同一根传输线,既可发送数据又可接收数据,但

12、不能同时发送和接收。在任何 时刻只能由其中的一方发送数据,另一方接收数据。因此半双工形式 既可以使用一条数据线,也可以使用两条数据线。 半双工通信中每端需有一个收发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟。但是对于像打印机这样单方向传输的外围设备,用半双工方式就能满足要求了,不必采用全双工方式,可节省一根传输线。 ( 3)全双工形式:全双工数据通信分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作,在全双工方式中,每一端都有发送器和接收器,有两 条传送线,可在交互式应用和远程监控系统中使用,信息传4 输效

13、率较高。 1.3 RS-232简介 在串行通讯时 ,要求通讯双方都采用一个标准接口 ,使不同的设备可以方便地连接起来进行通讯 .本次课程设计采用 RS-232 接口。 RS-232-C 接口 (又称 EIA RS-232-C)是目前最常用的一种串行通讯接口 . (“RS-232-C“中的 “-C“只不过表示 RS-232 的版本 ,所以与 “RS-232“简称是一样的 )它是在 1970 年由美国电子工业协会 (EIA)联合贝尔系统 ,调制解调器厂家及计算机终端生产厂家共同制定的用于串 行通讯的标准 .它的全名是 “数据终端设备 (DTE)和数据通讯设备 (DCE)之间串行二进制数据交换接口技

14、术标准 “该标准规定采用一个 25个脚的DB-25 连接器 ,对连接器的每个引脚的信号内容加以规定 ,还对各种信号的电平加以规定 .后来 IBM 的 PC 机将 RS232 简化成了 DB-9 连接器 ,从而成为事实标准 .而工业控制的 RS-232 口一般只使用 RXD,TXD,GND 三条线 .它适合于数据传输速率在 0 20000b/s 范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。在 TxD 和RxD 上:逻辑 1(MARK)=-3V -15V,逻辑 0(SPACE)=+3 15V,在 RTS、 CTS、 DSR、 DTR 和DCD 等控制线上:

15、 信号有效(接通, ON状态,正电压) +3V +15V 信号无效(断开 ,OFF 状态 ,负电压) =-3V -15 RS232 的逻辑电平与 TTL 以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的 TTL 器件连接,必须在 EIA-RS-232C 与 TTL 电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用 分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如 MC1488、 SN75150 芯片可完成 TTL 电平到 EIA 电平的转换,而 MC1489、SN75154 可实现 EIA 电平到 TTL 电平的转换。 MAX232 芯片可完成

16、TTL EIA 双向电平转换。 5 第 2 章 VC+软件简介 2.1 VC+6.0简介 VC+6.0 是 Microsoft 公司推出的一个基于 Windows系统平台、可视化的集成开发环境,它的源程序按 C+语言的要求编写,并且加入了微软提供的功能强大的 MFC(Microsoft Foundation Class)类库。 MFC 中封装了大部分 Windows API 函数和 Windows 控件,它包含的功能涉及到整个 Windows 操作系统。 MFC 不仅给用户提供了 Windows 图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个

17、标准 Windows 应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用 VC+提供的高度可视化的应用程序开发工具和 MFC 类库,可使应用程序开发变得 简单。 VC+部分说明如下: (1)LRESULT 表示函数返回值为长整数,由系统使用。 (2)CALLBACK 表示该函数是回调函数,由系统调用。 (3)hwnd 该 参数是接收消息的窗口句柄,它和 CreateWindow()函数的返回值相同 。 (4)message 该 参数是用来标识该消息的数字 。 (5)wParam和 lParam 两 个参数是

18、 32 位的消息参数,用来提供消息的 附加 信息 。 在窗口函数中,根据接收的消息信息( message, wParam 和 lParam)进行判断,然后分门别类地进行处理。窗口函 数中使用 switch 语句定义对应用程序接收到的不同消息的响应,包含了对各种可能接收到的消息的处理过程。每一条 case 语句对应一种消息,当应用程序接收到一个消息时,相应的 case 语句被激活并执行相应的响应程序模块。程序员可以在 switch 语句中增加对各种消息的处理代码。 WM_DESTROY 消息是关闭窗口时发出的,处理方法是调用函数 PostQuitMessage() 向应用程序发出 WM_QUIT

19、 消息,请求退出处理函数。 MFC 应用程序是建立在窗口应用程序开发模式的基础上的,同样 MFC 应用程序也有一个 WinMain()函数,但程序员不用编写该函数, WinMain()函数由框架提供,当应用程序启动时被自动调用。 MFC 有一个内部的消息系统处理由类产生的绝大多数消息。当一个消息6 不能被 MFC 所处理,应用程序将它交给默认窗口处理函数 DefWindowProc()来处理。 在 VC+中有两种方法可以进行串口通讯。一种是利用 Microsoft 公司提供的 ActiveX 控件 Microsoft Communications Control。另一种是直接用 VC+访问串口

20、。下面主要简述前一种方法。 2.2 Microsoft Communications Control 控件 Microsoft 公司在 WINDOWS 中提供了一个串口通讯控件,用它,我们可以很简单的利用串口进行通讯。在使用它之前,应将控件加在应用程序的对话框上。然后再用 ClassWizard 生成相应的对象。现在我们可以使用它了。该控件有很多自己的属性,可以通过它的属性窗口来设置,也可以用程序设置。用程序设置,更灵活。以下介绍设置中遇到的几个相关函数。 SetCommPort:指定使用的串口。 GetCommPort:得到当前使用的串口。 SetSettings: 指定串口的参数。一般设为

21、默认参数 “9600, N, 8, 1“。这样方便与其他串口进行通讯。 GetSettings:取得串口参数。 SetPortOpen:打开或关闭串口,当一个程序打开串口时,另外的程序将无法使用该串口。 GetPortOpen:取得串口状态。 GetInBufferCount:输入缓冲区中接受到的字符数。 SetInPutLen:一次读取输入缓冲区的字符数。设置为 0 时,程序将读取缓冲区的全部字符。 GetInPut:读取输入缓冲区。 GetOutBufferCount:输出缓冲区中待发送的字 符数。 SetOutPut:写入输出缓。 7 发送数据 数据发送完成 结束通信 初始化串口 1 发送握手信号 收到准备接收的应答 发送控制信号 接收握手信号 第 3 章 串行异步通信系统分析 在串行异步通信系统设计中首先对串口 1进行初始化,等初始化完成后发送送握手信号,等发送完握手信号后继续发送控制信号,等收到准备应答的信号后开始发送数据,如果数据发送成功则结束通信,否则继续发送。 Y Y N Y Y N Y Y N 图 3.1 系统分析流程图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。