毕业论文基于c的rs232通信协议模拟终端(编辑修改稿)内容摘要:

字符的数位和其它必须的数位。 串行接口电路的接收波特率和发送的波特率可以设置,要求接收 方的接收波特率必须与发送方的发送波特率是一致的。 在串行通信中,通信线上所传输的字符数据(代码)是逐位传送的,一个字符由若干位组成,所以每秒钟所传输的波特率和字符 数(字符速率)是完全不同的。 有时也用 “位周期 ”来表示传输速率,位 周期是波特率的倒数。 (2)数据位 数据位 是衡量通信中实际数据位的参数。 当计算机发送一个信息包,实际的数据不会是 8 位的,标准的值是 7 和 8 位。 如何设置取决于传送的信息。 数据位通常为 58 位,它紧跟在起始位之后,是被传送字符的有效数据位。 传送时先传送字符的低位,后传送字符的高位。 数据位的 位数可以有硬件或软件设备进行设置,以满足设备间数据交换的需要。 (3)停止位 7 停止位一般为 和 2 位,用于表示单个包的最后一位。 停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会,因为数据是在传输线上定时的,并且每个设备都有其自己的时钟,很可能在通信中要进行数据交换的两台设备间出现小小的不同步,设置停止位就是为了避免其中的小小的不同步。 停止位的位数的设置可以由设备的软件设置,停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率相应地也会越慢。 (4)奇偶校验位 在串行通信中奇偶校验 是一种简单的检错方式,奇偶校验位仅占一位,用于进行奇校验和偶校验,同时也可以无校验位。 对于奇校验和偶校验,串口会设置校验位,是数据位后面的一位,用一个值保证传输的数据有偶个或者奇个逻辑高位。 例如,如果数据是 001,那么对于奇校验,校验位是 0,。 如果是偶校验,校验位是 1。 这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者传输和接收数据是否发生了不同步。 串行通信的分类 串行通信 又 可以分为同步串行通信和异步串行通信两类。 同步通信是一种在发送端发送一个抑制载波的双边带信号,而在 接收端恢复载波,再进行检波的通信方式。 是按照软件识别同步字符来实现数据的发送和接收。 它是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。 信息中含有若干个数据字符。 它们均由数据字符、 CRC 即同步字符和校验字符组成。 因为恢复的载波与被接收的信号载波同频同相,故取名为同步通信,也称抑制载波双边带通信。 异步通信数据通常以字符或者字节为单位组成字符帧传送,字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。 异步通信 通常 有两个非常重要的指标:即 字符帧格式和 波特率。 发送端和接收端可以由各自的时钟 源 来控制数据 的发送和接收,这两个时钟源彼此独立,互不同步, 接收端检测到传输线上发送过来的低电平逻辑 0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕 ]2[。 异步通信有自己的 的缺点, 其缺点是 它在通信时的传输效率较低。 当然它也具有自己独特的优点, 其优 点就是它的通信设备简单、便宜。 8 串口的调制 串口连接 现在大多数计算机外用接口都是 USB 口, 外用接口很少有串口的, 并且现在的个人计算机的串口大多都是 简型的 9 针串口。 所以要想通过 串行通信实现与外围设备数据交换,必须用 USB 转 RS232 9 针串口转换线。 9 芯管脚图如图 23 所示。 图 23 9 芯管脚图 表 21 9 针管脚各引脚名称功能图 九针串口 针号 缩写 功能说明 信号来源 1 DCD 功能说明 调制解调器 2 RXD 接收数据 调制解调器 3 TXD 发送数据 PC 4 DTR 数据终端准备 PC 5 GND 信号地 6 DSR 数据设备准备好 调制解调器 7 RTS 请求发送 PC 8 CTS 请求发 送 调制解调器 9 DELL 振铃指示 调制解调器 9 目前,市场上使用的串口有 9 针管脚的还有 25 针管脚的。 在 RS232 的通讯标准中是以一个 25 针的接口来定义的,并且在早期的计算机中,如 PC 机或XT 机型上得到了广泛地使用,但是在 AT 机以后的机型上,实际上均采用了 9针管脚的简化版本应用,现在所说的 RS232 通讯均默认为 9 针的接口。 图 23显示了 9 针通讯的接口管脚, 9 针管脚的串口各引脚名称、功能和信号来源各不相同。 表 21 说明九针管脚的串口各引脚的名称,功能说明和信号源等。 由表 21 可知要想实现两台 个人计算机间的数据交换,可以将两个 USB 转RS232 线的接口头的 3 引脚交叉对接,两个 5 脚相接即可,具体接法如 图24 所示,然后再讲两个 USB 接头与两台电脑相连。 图 24 USB 转 RS232 线的连接图 串口调试 实现个人计算机与外围设备间的串行通信必须将个人计算机上的串口调通,验证一下个人计算机上的串口是否好用。 这就需要用到串口调试小助手。 首先将一根 USB 转 RS232 转换线的 3 引脚短接,然后将带有 “驱动程序 ”的光盘放入个人计算机中,安装并运行与自己计算机相匹配的 驱动程序,接着将转换线的 USB 端插入个人计算机的 USB 口,即完成了初步的安装。 打开设备管理器,看一下所插入的转换线占的是哪个串口,因为在接下来调试串口要用到。 串口调试助手是一个专门用来调试串口程序的功能软件,要想测试串口是否可用,应先打开软件,选择串口号,打开串口,在发 送区输入内容,点击发送按钮,若在接收区中有所发送的内容,则证明此 串口可用。 10 本章小结 本章从原理上介绍了串行通信 的基本原理,详细的阐 述了 RS232 标准协议接口和与串行通信相关的一些知识。 介绍了通信参数与串行通信的分类。 为下文编写 Windows 应用程序实现两台 PC 机进行数据交换提供了基础。 11 第 3章 CRC校验 CRC校验原理 CRC校验码的基本原理 在早期的通信中,由于通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),这样不可靠的通信就会带来 “确认信息 ”的麻烦,造成一些事情的延误等。 为了避免这一弊端,在进行数据交换,通信的过程中,对通信的可靠性检查就需要校验,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不 可靠,就丢弃重发或者进行修复 ]25[。 如早期一样目前在通信系统的数据传输过程中,由于信道中各种复杂因素的影响,使传输的信号受到干扰,造成传输过程中误码的出现。 接收方为了检查所接收的数据是否有误码,可采用多种检测方法。 差错控制编码是目前数据传输过程中普遍采用的一种提高数据通信可靠性的方法,而 CRC 是一种在实际通信中应用很广泛的差错控制编码,具有很强的检错能力。 CRC( Cyclic Redundancy Check)循环冗余校验码是数据通信领域中最常用的一种差错校验码, 其特征是信息字段和校验字段的长度可以任意选定。 CRC循环冗余校验码的基本原理是任意一个由二进制位串组成的代码都可以和一个系数仅为 „0‟和 „1‟取值的多项式一一对应。 例如:代码 101011 对应的多项式为135  XXX ,而多项式为 1256  XXX 对应的代码 1100101。 CRC 校验码是 在 K 位信息码后 再拼接 R 位的校验码,整个编码长度为 N 位,因此,这种编码也叫( N, K)码。 CRC 校验码的生成借助于多项式除法,其余数为校验字段。 其中发送方发出传输字段,传 输字段由两部分组成的,分别为信息字段和校验字段。 接收方使用相同的生成码进行校验,若接收到的字段或生成码(二进制除法)如果能够除尽,则说明在通信过程中,数据交换期间未受到其他因素的干扰,消息收发成功。 12 CRC校验码权的形式 CRC 校验码有很多 种权的 行式, 使用哪一种形式是根据通信双方共同制定的 “规则 ”而定的,其中各种常用 权 的形式 如下所示: 18 458  XXXC R C ( 31) 151216  XXXC C IT TC R C ( 32) 116 51516  XXXC R C ( 33) 112 231112  XXXXC R C ( 34)  101112162223263232 XXXXXXXXC R C 124578  XXXXXX ( 35) 以其中 CRCCCITT 形式为例。 图 31 说明了 CRC 校 验中 CRC 值是如何计算出来的,体现的多项式正是 式( 35)。 从把数据移位开始计算,将数据位(从最低的数据位开始)逐位移入反向耦合移位寄存器。 当所有数据位都这样操作后,计算结束。 此时, 16 位移位寄存器中的内容就是 CRC 码。 图 31 中X5 代表 Bit5, X12 代表 Bit12, 1 是代表 Bit0, 16X 比较特别,是指移位寄存器移入的数据。 图 31 生成 CRCCCITT 的移位寄存器的作用原理 13 CRC校验的实现 实现 CRC 校验有很多种算法和方式,最基本的算法应该是按位计算了 ,这个方法可以适用于所有长度的数据校验,是最为灵活 的,但由于是按位计算,其效率并不是最迅速、最优的,只适用于对速度不敏感的场合。 还有一种是按照字节计算 CRC 校验码,按字节校验是每次计算 8 位数据,多是基于查表的算法,首先要准备一 个表,一共 256 项。 在使用的时候,把计算出来的校验值放在最后两个字节里,将其发送出去,接收端对所有的数据进行相同的校验,如校验值为 0 我们则认为其数据没有出错。 这个是按高位到低位的发送顺序时使用的校验方法。 本章介绍了通信中最常使用的校验方法,即 CRC 校验。 分析了 CRC 校验原理、算法形式和算法的实现。 并通过 CRC 校验实现通信中的检错。 14 第 4章 软件的实现及其测试 开发工具概述 Windows 编程与 MFC Windows 编程大致 有两种方法,一种是 Windows C 方向,即 SDK 方向,调用 Win 32 API 函数,主要是利用 C 语言来实现软件的功能与编程;另外一种方法是 C++对 SDK 函数进行包装,如 VC 的 MFC(微软基础类库), BOB 的 OWL等。 其中使用 MFC 直接编写提供大量预先编好的类和支持代码或使用 MFC 和向导( Wizards)编写,用 AppWizard 来生成 Windows 应用程序框架。 本次软件程序设计功能的实现主要利用 Windows 编程中 MFC(利用 C++语言)。 MFC 提供了构造 Windows 应用程序的框架,它不仅为应用程序建立标准的结构,还为其提供了标准的图形用户界面如 菜单栏、工具栏、状态栏等,开发人员只需要在此基础上添加针对特定应用的代码即可。 使用此应用程序框架有很多优点,如其应用程序代码小,运行速度快,并且此应用程序提供的工具也降低了编码的难度等。 Windows应用程序的框架主要有两种类型,一种是基于对话框的应用程序框架,另外一种是基于文档、视图结构的应用程序框架。 平大家所见到的大多数Windows应用程序均属于这两种框架。 MFC的全称是 Microsoft Foundation Classes。 是微软把 Windows API 进行封装的类库,该类库以层次结构组织起 来,其中封装了大部分 Windows API函数和Windows控件 ]9[。 1989年微软公司成立 Application Framework技术团队,名为 AFX小组,用以开发 C++面向对象工具给 Windows应用程序开发人员使用。 启用 MFC编码可以使 Windows程序员能够利用 C++面向对象的思想进行编程,用好的类作为标准,减少代码的编写量。 串行通信控件 MSComm 目前,以 Win 32 下的 MFC 应用程序为主要框架,基于 VC++的常用串行通信编程一般可以 用两种方法实现:一种是使用 Windows API 通信函数。 虽然 15 在 Windows 下 Win32API提供了使用文件操作方式的函数进行串口操作的方法,但是在编程实现上还是比较复杂。 其余一种是利用 MSComm ActiveX 串行通信控件。 Windows 平台先进的 ActiveX 技术利用已有 的 MSComm ActiveX 控件,只需要编写少量的代码,就可以轻松高效地完成任务, 使得对串口编程不再需要处理烦琐的细节。 这样 程序员 就 不需要花 费大量 时间去了解复杂的 API 函。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。