毕业设计(论文)智能串口调试软件.doc
毕业设计(论文)题 目 姓 名 学 号 专业班级 所在学院 指导教师(职称) 二一 年 五 月 十 日智能串口调试软件【摘要】 串行通信是一种广泛使用且实用的通信方式,在控制类应用中相当普遍,.NET Framework2.0类库中的SerialPort类为串行通信提供了强大的工具。本文详细介绍了串口的工作原理和通信协议等串行通信相关的基本知识,分析了串口通信程序的设计思路,阐述了在Visual Studio 2005编程环境下串口调试软件的具体实现方法。探讨了如何利用C# SerialPort类进行串行通信程序的设计,分析了C#串行类的应用特点,证明了采用C#SerialPort类可以使串行通信程序设计具有更大的灵活性,可以提高串口传输数据的可靠性。实际运行结果表明这种编程方法稳定、可靠,实用性强。 【关键词】 串行通信,串口调试,SerialPort类 Intelligent Serial Port Debug Software【Abstract】 Serial communication is a widely used and practical method of communication which is applied in the control class quite common, and the class SerialPort of .NET Framework2.0 has provided a powerful tool for the serial communication. This paper describes the working principle of serial ports and serial communication protocols such as the basic knowledge related to serial communication, and analyses the thread of the design of the serial communication program. The concrete method for realizing the serial port debug software under the environment of Visual Studio 2005 is also explained. How to use C#. SerialPort class to design the serial communication procedure is discussed. The characteristic of C#. SerialPort class is analyzed. It proved that the serial communication procedure design could be more flexible by using C#. SerialPort class and the SerialPorts reliability of date transferring also can be improved. The application results show that his procedure design method can stable, reliable and high practicable. 【Key Words】 Serial Communication, Serial port debugging,C# SerialPort Class 目录第1章 绪论11.1 研究背景11.2课题研究的目的和意义21.2.1串口调试软件的发展现状21.2.2实际工作中存在的问题31.2.3课题研究的目的41.3课题的主要研究内容5第2章 串行通信接口72.1 串行通信接口定义72.1.1数据发送72.1.2信号定义82.2 RS232串行通信接口82.3 RS485串行通信接口92.4 其他串行通信接口102.4.1 USB接口102.4.2 IEEE-1394113章串行通信协议123.1同步通信123.2异步通信133.3传输制式143.4硬件握手和软件握手153.4.1硬件握手153.4.2软件握手163.5串行通信的基本参数163.5.1 波特率163.5.2数据的传输单位173.5.3 起始位与停止位173.5.4 校验位17第4章 串口通信程序设计方法研究194.1 win32下串口通信的主要方法194.1.1串行通信Windows API函数194.1.2串行通信组件204.1.3 SerialPort类214.2串行通信SerialPort类214.2.1 SerialPort常用属性和方法214.2.2 SerialPort的使用24第5章串口调试软件的实现275.1开发语言和开发环境简介275.1.1 C#语言和.NET Framework275.1.2 Visual Studio 2005 简介285.2串口调试软件的实现295.2.1串口调试软件的编程实现过程295.2.2串口调试软件界面的设计305.2.3 串口调试软件的测试31结论33参考文献34附录35致谢42图目录图3.1 传输制式示意图14图5.1 串口调试软件算法流程图30图5.2 串口调试软件界面31图5.3 远距离串口通信连接方式32表目录表2.1 RS232端口引脚缩写功能说明9表3.1 同步通信协议的帧格式13表4.1 SerialPort的常用方法24第1章 绪论1.1 研究背景在现代工业社会中,随着电子产业的迅猛发展,电子技术与传统工业相结合的机电一体化技术在现代工业中占据着越来越大的主导地位。各种各样的单片机,微处理器无处不在的发挥着巨大的作用。它就像是人的大脑一样,精确的指挥着每一部机器、每一台设备的运作,可以说,电子芯片的出现直接影响了工业社会的进程,是工业现代化的重要里程碑。不仅如此,就在人们的日常生活中,电子技术带来的影响也是翻天覆地的,以至于我们无时无刻的在与电子芯片打交道,试想一下,如果我们失去了电子芯片,我们退回到的应该不仅是农业社会,而是石器时代了。探讨单片机、微处理器能够发挥巨大作用的机理,就是它可以将外界的指令输入到自身内部,经过计算,转换成控制信息传送给外界。因此,数据的交流是单片机、微处理器工作的重要意义所在,而串口则是单片机、微处理器内部担负数据传送任务的重要部件之一1。串口叫做串行接口,也称串行通信接口,是计算机的一种应用广泛的接口,几乎在每种操作系统以及需要进行数据传送的装置上都支持串口操作。串口也广泛用于各行各业的各种设备中,如船舶中设备的互相通讯, 医院验血、验尿等各种化验设备、工业控制中上位机与8031或8051、PLC等的通讯。随着人类社会的进步与科学技术的发展,计算机技术在民用和工业控制领域的作用越来越显示出其魅力,特别是串行通信技术在通讯领域被广泛应用。标准的RS232接口已成为计算机、外设、交换机和许多通讯设备的标准接口。虽然近年来随着USB口的日趋流行,RS232接口作为一种传统的串行通信接口有被取代的趋势。然而由于它具有较高的性价比和传输的可靠性,在传输速率要求不是很高的情况下,串口通信仍然具有其自身的优势,是在计算机与计算机之间或者计算机与外设之间传送数据的常用方法。由于串口通信使用计算机的内建串口,用户无需再购买任何特殊硬件,只要一根串口线就可以达到发送或者接收数据的目的,而且不失测试的准确性。采用RS485接口标准可以实现更远的传输距离、更强的抗干扰能力和更快的传输速率。所以串口通信现在仍然广泛应用于数据采集、监测监控以及仪表控制等场合。串口通信的广泛应用决定了串口调试软件开发的必要性,而且为了保证各设备间的正常通讯以及让计算机控制、管理这些设备并与它们交换数据,串口的调试和相关的串口调试软件的开发也是实际应用中所必须的。1.2课题研究的目的和意义现在的产品若要自动化,一定要提供通道与计算机进行通信,而最简单的方式就是在产品内部少上一颗单芯片,利用单芯片上的串行通信功能进行自动化的工作,由于计算机中的串口是必备的通道,且以价格及技术上来说是最能被厂商所接受的,因此,市面上很多自动化产品也都加上了串行通信的功能,从而扩大产品的使用领域,使实现技术变得简单化。与任何一个自动化设备进行联机,最好是先对该系统的通信功能先进行测试。通过串行通信的控制,通常可以将产品内部开放的功能做一个先期的测试工作,确定没有问题了,然后再对系统进行程序的实现,这是一个比较保险的做法,免得在系统设计到设计到一半的时候发现最重要的通信功能有问题,浪费了大量的宝贵时间。1.2.1串口调试软件的发展现状 在自动控制领域,经常要实现上位机和下位机之间的通信,串口通信是上、下位机常用的通信手段。串口通信已经在控制类应用中相当普遍,串口调试软件为串口的调试带来了极大方便。目前在国内外也有许多的串口调试软件,这些软件各有特点,有些操作简单方便,但功能也许有所欠缺,比较适应入门级的人,也有功能比较强大操作比较复杂的适合专业人员使用的软件,总的来说目前常用的智能串口调试软件主要:串口调试软件SSCOM、串口调试助手和BOAST串口调试工具等。1. 串口调试软件SSCOM 串口调试软件SSCOM是一个功能较强的串口调试软件2,它可以在Win95/98、Win2000、WinNT、WinXP 系统下运行,该软件主要特点有:接收从串口进来的数据并在窗口显示;所接收到的数据的显示方式可以选择为字符方式或者HEX方式;串口波特率可以选择为110bps-256000bps;可以即时显示存在的串口号;可以在字符串输入框输入想要发送的字符串,字符串输入框可以输入HEX数据串进行发送,数据的值从00到FF,没有任何限制;可以打开一个文本文件和一个二进制文件并以当前的波特率发送到串口;可以保存窗口内容到一个文本文件,文件名取自当前时间,保存在当前目录。2. 串口调试助手 串口调试助手(SComAssistant)是一个功能比较全面而又小巧的串口调试软件3,它支持常用的300-115200bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送任何数据或字符(包括中文),可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。串口调试助手是一个非常不错的串口调试软件,但是对于在单片机开发过程中常会用到的hex和bin文件,串口调试助手不能正确发送。3. BOAST串口调试工具 BOAST串口调试工具可以作为通用的串口调试工具,也可以作为以BOAST为首的,国内数字称重传感器通讯调试工具。该软件作者在上位机软件开发过程中,根据自己的实际需要编写了这款工具软件。为串口通讯调试带来了方便。软件编写过程中,参考SSCOM的几项典型功能,并作了一些改进。该软件为绿色、免安装、完全免费软件。主要功能有:自动搜索串口,并打开串口;接收数据可以进行十六进制和ASCII切换;接收数据时,光标始终显示在最后一行等。1.2.2实际工作中存在的问题 自动化设备在各个行业都得到了普遍的应用,随着计算机分析控制技术的发展,作为生产设备中最主要的串行通信得到了广泛的应用,设备与计算机间的各种通信协议也层出不穷,但是,由于没有相关的技术标准,不同公司各自建立自己的设备通信标准,目前,各种设备的生产数据格式不统一、各自独立,因此无法对大量设备的生产和通信数据进行有效和统一的管理,也无法通过先进的数据融合方法进行各种数据的分析,因此限制了生产设备管理维护水平的提高。另一方面,在大多数情况下,设备的供应商并不提供与数据传输接口相关的技术资料,而且许多进口的设备仪器之间的串行通信也不附带相关的技术资料,另外,由于市场变化的原因,很多设备附带的技术资料已经无法查找,因此,想充分利用这些设备进行二次开发或者自行编制数据处理程序收集数据变得非常困难,造成大量设备不能充分开发利用甚至完全不能满足实际使用环境的需要。出于各种技术和商业上的考虑,为多个不同设备提供通信协议的解析和建立通用的数据接口管理软件等工作进展缓慢。一般只有由多种设备的用户来进行相关的二次开发工作,来适应自己企业的生产需求。 没有相关的技术标准特别是设备通信标准,各种设备之间存在的不同通信协议和接口模块,既不利于进行统一分析和管理,也不利串行通信的调试工作。虽然都是利用计算机进行数据交换的测试,但由于这些设备的生产厂家不同,所使用的通信接口和通信协议也都不同,因此,在具体测试这些设备时操作人员不仅需要熟悉这些设备的现场使用方法,而且还要分别能够使用各自的调试软件进行不同操作方式的数据通信传输和数据综合分析,给使用带来了很大的麻烦。目前,由于串行通信数据链路层协议林林总总不可胜数,难以逐一进行分析,这也给串口调试软件设计带来一定的困扰,现在设计串口调试软件时都是基于某种具体的通信协议,根据设备的实际情况来进行设计的,还没有一种可以仿真串行通信中几乎所有情况的软件。因此,对于串口调试软件设计方面的工作需要作进一步地研究。1.2.3课题研究的目的在嵌入式硬件系统中,串口是一个非常重要的硬件组成部分。嵌入式硬件系统通过串口可以与上位机(如计算机,工控机等)进行连接,从而实现上位机和下位嵌入式系统之间的通信,完成数据交换、参数设置,组网等功能。调试就是定位程序中的错误并修正其错误的过程4,在软件开发环境中,测试工具可以说是衡量开发环境优劣的重要因素。在嵌入式系统软件开发环境中,调试尤其显其重要性,因为开发者所面对的硬件往往就一块裸板,没有输入输出设备,操作和应用也往往是绑定在一起的,如何“导出”调试信息也是软硬件开发者必须考虑的一个问题。最早期的调试方法基本上采取的是“crash and burn”的方式,即把编译好的目标代码“烧”到目标板上,让它跑起来,如果未得到预期结果,仔细检查源代码,猜测出问题可能出现的地方,尝试修改源代码,再重新“烧”到目标板上,再运行,一直重复这个过程,直到结果正确为止。使用这种方法,犹如在暗室中维修精密仪器,可想而知程序调试的难度有多大。为了方便嵌入式系统中代码的调试,在硬件上,出现了各式各样的具有调试功能的调试板。如增加了串口、并口,网口使之通过串、并口线或网线并借助另外一台有输入输出设备的计算机对目标板上的软件进行调试和控制。在软件上,可以利用串口调试软件直观的测试通信协议,参数等。为了能够提高操作人员的工作效率,以及能够记录历史工作数据,并利用这些数据进行计算机的智能分析和管理,我们不仅需要将这些设备的数据收集起来进行分析,而且该系统有一个智能的通信接口,能够与所有这些现场设备进行通信,以收集现场采集的测试数据。操作人员只需要掌握串口调试软件的使用方法,就可以对所有生产设备的数据进行传输、管理和分析操作。随着串口应用领域越来越广泛,运用的复杂程度也越来越高,实际应用中对串口通信的调试要求也越来越高。本课题的目的在于深入剖析不同设备和它们与上位机之间通信时采用的传输协议,在这一基础上,为整个系统与计算机之间的通信编写驱动程序。期望能通过对多种设备和协议的研究,分析和比较不同系统通信的长处和不足,并建立一种相对比较完善的生产设备串行通信协议,编写对所研究的大多数设备适用的串口调试程序,使该程序尽可能的能够仿真串行通信中的所有情况。 1.3课题的主要研究内容本课题旨在研究串口的工作原理以及串口调试的实现算法,并介绍以一些常用的串口调试软件,比较它们的优缺点,再在Visual Studio 2005环境中使用C#语言编写完成一个串口调试程序的设计。本设计是在WINDOWS XP操作系统下,设计自己的通信协议,借助C#语言编程环境,使用C#serialport类,实现串口通信。论文一共有六个章节组成:第一章序论,介绍了课题研究的背景,串口调试软件发展现状以及其中存在的问题,提出本课题的研究目的和意义。第二章串行通信接口,介绍了串口的分类以及串口的工作原理。第三章串行通信协议,介绍了串行通信的实现过程及标准,串行通信技术的原理和规范。第四章串口通信程序设计研究,主要介绍串行通信驱动程序设计的方法,通过串行通信SerialPort类的研究及相关串行通信组建的建立,学习串行通信驱动程序设计的方法。第五章串口调试软件的实现,介绍了串口调试软件的开发语言和开发环境,阐述了在Visual Studio 2005编程环境下串口调试软件的具体实现方法。最后是结论,对课题研究工作和论文的总结和评价,以及对后续工作的展望。第2章 串行通信接口2.1 串行通信接口定义串行总线是一种久远但目前仍常用的通信方式,早期的仪器、单片机、PLC等均使用串口是计算机进行通信,最初多用于数据通信上,但随着工业测控行业的发展,许多测量仪器都带有串口总线接口,因此了解掌握串口通信技术及其编程是非常有必要的10。串行通信接口,按电气标准及协议来分包括:RS232、RS422、RS485,USB等。RS232、RS422与RS485标准只对接口的电气特性做出决定,不涉及插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。串口的技术简单成熟、性能可靠、价格低廉,所以要求的软硬件环境或者条件都很低,广泛应用与计算机及相关领域,遍及调制解调器、串行打印机、各种监控模块、PLC、数控机床、单片机及相关智能设备,甚至路由器也不例外(通过串口设置参数)。2.1.1数据发送 通信的主要目的是将数据从一端发送到另一端,以实现数据的交换。计算机与设备问的数据交换,计算机与计算机问的数据传输都属于通信的范畴。 一个完整的通信系统包括发送端、接收端、转换数据的接口及发送数据的实际信道或媒质。一般情况下,发送与接收的节点称为DTE(Data Terminal Equipment,数据终端设备)。数据在到达正确目的地之前,可能需要经过一系列中间节点,它们负责数据的转送工作,以送达目的地,这些中间节点称为DSE(Data Switching Equipment,数据交换设备)。终端设备发送数据时,必须先将数据转换为电气信号,以便在线路上传递,而负责数据与电气信号转换的设备称为DCE(Data Communication Equipment,数据通信设备)。DTE与DCE间的数据传输线路通常使用RS232串行通信,而DCE与DSE间的媒质则包括了双绞线、同轴电缆、光纤或无线电等。2.1.2信号定义 在计算机内部的记录中所有的数据都是0与l,任何数据都是这两个数字的组合。所有电子仪器的基础均来自“开”、“关”两个状态的改变,可以将它们表示为0与l或表示为“高电位”、“低电位”,不管表示方法如何,目的在于造成“状态的改变”,将很多的0与l组合成一大串的数字序列后,就可以定义它们所代表的意义了。传输过程就是在传输线上不断地产生高低电位的变化,发送端造成传输线上的电位变化,而接收端则是解读此高低电位变化而还原出原始的信息。2.2 RS232串行通信接口 串行通信端口在系统控制的范畴中一直占据了极其重要的地位,它不仅没有因为时代的进步而被淘汰,反而在规格上越来越完善,应用也越来越广泛。为了不同厂商的计算机和各种外围设备串行连接的需要,已经制定了一些串行物理接口的标准。其中,最著名和广泛采用的是EIA-RS-232C,现在,串行通信端口RS232是计算机上的标准配置,既可以用于计算机和设备之间近距离连接的直接通信,也可以用于连接调制解调器来进行远距离的串行数据传输11。1. 物理接口特性EIA-RS-232C是由美国电子工业协会EIA制订的一种串行物理接口标准,EIA-RS-232C关于机械特性的要求,规定使用一个25针的标准连接器,对该连接器的尺寸及每个插针的排列位置等都有明确的规定。随着使用的不断发展,演化出9针接口的RS 232端口,计算机上通常配备COM1端口,即以9针脚引出的RS232通信端口。表2.1给出了9针RS232端口引脚说明。2. 电气特性数字电路和计算机接口中大部分为5v的TTL或3.3v的CMOS电平,而RS-232的电平定义则不相同,它采用的是负逻辑。信号要被发送,一定要定义所谓的0或1的状态。在RS-232的标准中,电压在+3v+15v(一般使用+6V)之间称为0或Space,一般用途是作为011,电压在-3-15v(一般使用-6v)之间称为1或Mark,一般用途是作为Off。有时候以High和Low更能表现出其实际状态。表2.1 RS232端口引脚缩写功能说明引脚(9针)信号类型源类型描述1CDDCE控制接收信号检出,高电平有效。当CD=1,表示已经收到通信线路另一端Modem送来的信号。2RDDCE控制将远程的串行数据接收进来3TDDTE控制将计算机的数据发送出去4DTRDTE控制此引脚有计算机控制,当DTR=1时,表明可以传输数据。5GND控制接地端,信号地和保护地信号6DSRDCE控制数据装置准备准备好,当它为高电平时,Modem将通知计算机准备就绪,可以发送数据。7RTSDTE控制请求发送,用来表示DTE请求DCE发送数据,当它为高电平时,计算机向Modem请求发送数据。8CTSDTE控制清除发送,用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。9RIDCE控制响铃指示,RI=1时,表明Modem收到了交换台送来的振铃信号,用它来通知终端。2.3 RS485串行通信接口由于串行通信的简单易用,使工业领域大量使用串行通信来进行数据传输,可是工业环境通常会有噪声干扰传输线路,在以RS 232进行传输时经常会受到外界的电气干扰而使信号发生错误,RS485串行通信标准就是为了解决这个问题出现的。RS-485标准是RS-422标准的改进增强版本,因其技术性能先进,得到了广泛应用。RS485不仅传输距离远,通信可靠,而且使用单一+5V电源或+3V电源,逻辑电平与传统的TTL兼容。此外,它对传输介质没有任何严格的要求,只需将普通双绞线捆绑在一起即可简便地组成网络,除了点对点与广播通信方式外,还具有多点通信方式。RS-485标准的共模电压最大与最小值为+12V、-7v,差分输入电压范围为-7V+12V,接受器输入灵敏度为200mV。其特点是抗干扰能力强,传输速率高,距离远。在采用双绞线,不使用MODEM的情况下,在l00Kb/s的传输速率时,可以传送1200m,若速率为9600b/s,则传送距离可达1500m,它允许的最大速率为10Mb/s,传输距离为15m。RS485采用差分平衡输入模式,对共模信号有极好的抑制能力。信号将被发送出去时先分成正负两条线路,到达接收端之后,再将信号相减还原成原来的信号,保证了与原始信号的一致性。使用RS485网络可以有效的抑制噪声信号干扰。也因为这种特性,此种串行通信方式比较适合工业上的应用。2.4 其他串行通信接口2.4.1 USB接口 由于时代的进步,串行通信也朝向高速化发展。近年来个人计算机的快速发展,使串行通信技术发展出了通用串行总线(Universal Serial Bus,USB)接口。此种规格的目的在于集成一般计算机所使用的外围设备连接方式,而且其所采用的信号传输方式也是串行通信。到目前为止,USB接口已经有两种规范:1996年1月推出的标准版本USB1.0,最高传输速率为12Mb/s;1998年9月又推出USB1.1版本,全面修改了1.0版本2000年4月推出高速的USB2.0,数据传输速率可达480Mb/s。当前低速是指15Mb/s以下,15Mb/s以上至12Mb/s的设备称为全速设备。USB总线由VBUS(USB电源)、D+(数据)、D-(数据)和GND(USB地)4根线组成,用于传送信号和提供电源,线缆的最大长度不超过5m。按照USB1.0/1.1标准,USB的标准脉冲时钟频率为12MHz,而其总线脉冲时钟为1ms(1kHz),即每隔1ms,USB设备应为USB总线产生1个时钟脉冲序列,这个脉冲序列称为帧开始数据包(SOF)。高速外设长度为每帧12Kbit,而低速外设长度为每帧1.5Kbit,1个USB数据包可包含0-1023字节数据,每个数据包的传送都以1个同步字段开始。USB主控制器时钟产生每帧1ms的时间片,它是通过以1ms的间隔发送帧开始(SOF)的方法来建立帧的。SOF令牌是一个帧周期内第一个被传输的内容,在发送一个SOF令牌之后,帧周期所剩余的时间内,主控制器可以自由地发送其他处理操作。当主控制器处于正常工作状态时,不管有没有其他的总线操作,SOF令牌必须以1ms的周期连续产生。如果主控制器进入了一个它不能在总线上提供电源供应的状态,它就不能产生SOF,而且,如果主控制器不再生成SOF,它可以进入一个低功耗状态。SOF令牌具有访问总线的最高优先权,集线器中的串扰电路在帧结束(EOF)期间,从电气上对任意一个有效的发送器进行隔离,为SOF的传输提供一条空闲的总线。主机在每一个SOF令牌传输中会传送当前帧标号的低11bit,当主控制器发出请求时,当前的帧标号就是在该请求完成时已经存在的帧标号由主机(主控制器或HCD)所返回的当前帧标号至少为32bit,主控制器自身并不需要保留超过11bit的标号。在EOF期间,主控制器可以停止传输。当EOF间隔开始时,专门为刚刚通过的那一帧所安排的任一处理操作都会被重试。如果在遇到一个EOF时间问隔时。主控制器正在执行一项处理操作,它将中止该项处理。2.4.2 IEEE-1394 IEEE-1394(也称为FireWire,火线)也是一种高性能的串行总线标准,它与USB一样拥有PnP(即插即用)功能,也是用于解决计算机与外围设备复杂的连接问题,同样具有容易使用与高速等特点,并且也是使用串行通信的传输方式。IEEE-1394特别适用于高速传输的环境,现在已经达到的速度是400Mbps,下一个版本中将达到1000Mbps,最多可以串接63个外围设备,可以提供异步和同步两种传输模式。IEEE-1394和USB有很多相似之处,它一共使用6条线缆,其中两条线是直流供给线,电压范围8-40V,电流最大为1.5A。还有两对双绞线作为信号线:一对是差模时钟线,另一对是差模数据线。其设备连接也是很方便的,支持热插拔和即插即用,在增加或拆除后,IEEE-1394也会自动调整拓扑结构,重设整个外围设备的网络状态。IEEE-1394的标准开始是IEEE-l394-1995,后来发展成为IEEE-1394a-2000,目前实际使用的为1394a,数据传输速率有三档:l00Mb/s,200Mb/s,400Mb/s。IEEE-1394a又有升级版本lEEE-1394b-2002,它的速率为800Mb/s,1.6Gb/s和32Gb/s因为它们的通信协议和管理机制与USB不同,IEEE-1394设备的自动配置不需要主机的干预。 第3章 串行通信协议 在串行通信过程中,数据和联络信号时使用同一根信号线来传送的,所以收发双方必须考虑解决一下问题:1)双方约定以何种速率进行数据的发送和接收(波特率);2)约定采用何种数据格式(帧格式),如果包含控制信息,那么它的定义是什么;3)接收方如何得知一批数据的开始和结束(帧同步);4)接收方如何从位流中正确地采样到位数据(位同步);5)接收方如何判断收到数据的正确性(数据校验);6)收发出错时如何进行处理。显然,收发双方必须遵守一些共同的通信协议5(或称为通信控制规程),才能解决以上问题。在传输数字信号时接收端必须有与数据位脉冲具有相同频率的时钟脉冲来逐位将数据读入寄存器,这种在接收端使数据位与时钟脉冲在频率和相位上保持一致的机制称为同步。根据在接收端获取同步信号的方法不同,同步方式可分为位同步方式和字符同步方式,也称为同步传输方式和异步传输方式。3.1同步通信 同步通信即位同步方式,同步通信即位同步方式,是利用编码机制把时钟信息和数据放在一起发送给接收端,以保证每一位的正确性,但这种同步方式没有办法来区分字符之间的界限,从一个二进制位串中提取正确的字符信息。为此,在位同步的基础上,需要发送方在一组数据前附加一个或两个称为同步字符的特殊约定代码,去通知接收器串行数据第一位到达的时间。为了确保正确提取字符,字符之间不能有类似于异步传输那样的间隙,必须以连续的形式发送,每个时钟周期发送一位数据,数据信息后是两个错误校验字符。接收方在收到同步字符后,立即开始按事先约定的长度(5、6、7或者8位)从位串中逐个提出字符。同步通信采用的同步手段和同步字符的个数不同,字符的数据格式叫做单同步数据格式,数据格式。存在着不同的格式结构,具有一个同步有两个同步字符的数据格式叫做双同步异步通信中按字符成帧(从起始位到停止位)进行传送,而同步传送则采用数据块或帧进行传送6。图中所示为某同步协议的帧格式,在帧开头有同步字符SYNC,同步字符的格式和个数根据需要确定,其作用是通知接收器“消息到达”,并且接收器和发送器需要开始同步。同步字符后的第一个数据是消息头或称为报头,它包含有助于接收器如何处理后续数据的控制信息,如一帧内的字符计数等,再以后是以字符或者比特为单位的消息编码,也称为报文,最后是校验字符,常用CRC循环冗余校验码,校验字的作用是检测整个数据块在传送过程中是否有差错。表3.1给出了同步通信协议的帧格式。表3.1 同步通信协议的帧格式SYNCSYNCSYNC头数据(0或者更多字节)CRCSYNC同步通信的数据传输效率较异步通信高,传输速率也较高但是同步传送不仅要保持每个数据字符内各位以预定的固定时钟频率传送,而且还要求整个数据块内的位都按照预定的固定时钟频率传送,此外数据块之间不允许有间隙,若有间隙必须用同步字符填充。收发双方时钟严格同步是同步通信的基本要求,在技术上,这种要求必须用硬件从接收到的数据中分离出同步时钟来实现,所以硬件电路复杂是同步通信的缺点。3.2异步通信串行异步通信即异步传输方式是以字符为单位进行传输,其通信协议是起止式异步通信协议。一个字符正式发送之前,先发送一个起始位,宽度为1位的低电平;结束时发送一个宽度为l位,15位或者2位的高电平作为停止位;数据位为5-8位,可在数据位内设1位奇偶校验位,字符之间可以有空闲位,它们都是高电平。异步传输过程中的起始位和停止位起着重要的作用:起始位标志着每一个字符的开始,停止位标志着每一个字符的结束。由于串行通信采用起始位为同步信号,接收端总是在每个字符的头部即起始位处进行一次重新定位,保证每次采样对应一个数据位。所以异步传送的发送器和接收器不必用同一个时钟,而是各有自己的局部时钟,只要同一标称频率即可。异步传送以字符为单位,当接收方收到起始位之后,只要在一个字符的传输时问内能和发送器保持同步,就能完成正确的接收。如果接收器和发送器的时钟略有误差,两个字符之间的停止间隔将为这种误差提供一种缓冲,因此,异步通信方式允许有一定的频率漂移,一般发送器和接收器双方各自用晶振产生时钟即可满足要求,收发双方系统时钟的误差容限为5对时钟同步的要求不太严格,这是异步通信的突出优点,但是异步通信要求每个字符传送都有起始位和停止位,因此控制信息至少占总信息的20,这部分的额外开销使得传送效率相对比较低。3.3传输制式在串行通信中。按照同一时刻数据流的方向可分为三种基本传送制式:单工传送,半双工传送和全双工传送7,如图3.1所示。图3.1 传输制式示意图单工传送仅支持在一个方向上的数据传送。即由设备A传送到设备B,在这种传送模式中,A只作为发送器,B只作为接收器。半双工传送支持在设备A和设备B之间交替地传送数据。设备A可以作为发送器发送数据到设备B,设备B作为接收器。也可以设备B作为发送器发送数据到设备A,设备A为接收器。由于A、B之间仅有一根数据传输线,它们都有独立的发送器和接收器,所以在同一个时刻只能进行一个方向的传送。全双工传送支持数据在两个方向同时传送,即设备A可以发送数据到设备B,设备B也可以同时发送数据到设备A,它们都有独立的发送器和接收器,并有两条传输线。对于常用到的串行通信来说,可以利用的传输线路就决定了工作模式。RS232因为其引脚设计时就是接收与发送采用两个不同的引脚与线路,其信号标准电位是参考地线而得到的,两条数据线路可以分别作为数据的传送及接收,因此使用的是全双工的模式,这种参考到地线而得到信号标准电位的传输方式称为单接点式输入。RS485上的数据线路虽然也有两条,不过这两条线路却是一个信号标准电位的正负端,真正的信号必须是两条线路的相减而得到。因此在一个时间点内,只可以有一个方向的数据在传送,也就形成了半双工的工作模式这种不参考地线而由两条信号标准电位相减来得到实际信号标准电位的传输方式成为差动式输入。3.4硬件握手和软件握手握手信号实际上是控制信号,用来控制数据的传输。通过握手信号,发送端可以得知接收端是否有数据要发送。接收端通过握手信号通知发送端它是否已经准备好了接收信号8。当发送端和接收端处理数据的速度不一样时,可能就会造成数据丢失。在传输中,如果发送端的发送速度大于接收端的接收速度,同时若接收端处理数据的速度不够快的话,那么接收端的缓冲区必定在一定时间后溢出,从而造成以后发送过来的数据不能进入缓冲区而丢失。发送端何时可以继续发送数据,何时必须暂停发送,从而让接收端有时间处理数据,称为流量控制,必须靠握手信号来解决这个问题。3.4.1硬件握手 在硬件握手中,发送端通过将某一个导线拉到高电平或者低电平,来表示发送端可以发送数据。接收端已经准备好接收数据之后,也把某一个导线拉到高电平或者低电平,来通知发送端,发送端一直在检测这个信号。接收端可以在任何时候把这个信号变为无效,甚至是在接收一个数据块过程中。当发送端检测到这个信号变为无效之后,就必须停止本次发送。3.4.2软件握手 在软件握手中,以数据线上的数据信号来代替实际的硬件电路。这种方法用在直接连接或者通过调制解调器连接的两台计算机之间进行双向通信的场合。对于软件握手现在已经建立了一些标准协议,其中最常用的是XON/XOFF协议。3.5串行通信的基本参数串口的通信方式是将字节拆分成一个接着一个的位后再进行传输。接到此电位信号的一方将此一个一个的位组合成原来的字节,如此形成一个字节的完整传输。在传输进行过程中,双方明确传输信息的具体方式,否则双方就会没有一套共同的译码方式,从而无法了解对方所传输过来的信