已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要本次毕业设计是在windows系统下利用vc+开发工具进行开发,主要内容是基于串口的文件传输系统的设计。在设计过程中,做了以下几个方面的工作,首先,对于串口通信的应用前景、实际意义进行简单的概括;其次,对本次设计要用到的win32 api函数和mscomm控件进行介绍,熟悉各个函数的功能、意义;再次,对设计方案合理性和工程应用价值进行详细的阐述,对用到的技术进行介绍,对串口通信的特点,在特定领域的应用和开发技巧进行描述;最后,给出本次毕业设计的程序代码,供读者参考。串口通信在各个行业中都有广泛的应用。通过本次毕业设计对vc+开发环境会有更熟练的掌握,对于熟悉开发串口通信的基本原理,对串口在通信产品中的应用会有更加深刻的认识,并根据实际应用需求进行适当的扩展。关键字:win32 api,文件传输,串口通信,mscomm控件,vc+ abstractthis graduation design is developed with vc+ in windows system, the main content is file transfer system based on serial port. in the design process, we made the following aspects: first, to present the prospects for serial port communications applications, a summation of the engineering significance; secondly, to present the win32 api function and mscomm controls; again, to present the practical and the worth of scheme, and serial port communications features in the application and development skills in specific areas to be describe; finally, to give the code of current design for the reader reference. serial port communication have broad applications in various fields .we can understand the basic principles of serial port communication in engineering applications and communications products ,and master the development tools vc+ through this design.keywords: win32 api,file transfer, serial port communications, mscomm, vc+目录摘要1第一章 绪论41.1本次毕业设计的选题背景和应用前景41.2 windows平台下操作系统对串口的管理81.2.1 vc+中对多线程的支持81.2.2多线程在串口通信中的应用91.2.3 串口通信的重叠i/o方式101.3基于串口的文件传输系统设计的主要内容101.4 论文(设计)的整体结构10第二章 串口通信程序开发基础知识112.1 串口通信概述112.2 串行通信基础知识122.2.1 串行通信的优点122.2.2 串行通信工作方式132.2.3 串行通信检错与纠错142.2.4 串行通信的速率与传输距离142.2.5 串行通信协议152.2.6 串口通信工作原理162.3 本章小结18第三章 串口在通信产品中的应用及开发串口程序的方法193.1 串口在各种通信产品中的功能193.1.1 串口在单片机中的应用193.1.2 上位机与plc利用串口通信213.1.3 串口在modem中的应用213.2 利用vc+开发串口通信程序的方法和特点223.2.1 mscomm控件介绍233.2.2 windows的api函数介绍363.3 本章小结43第四章 本次文件传输系统设计方案444.1 通信协议分析444.1.1 通信流程444.1.2 数据包格式454.2 通信实现思路464.2.1 通信事件的处理方法474.2.2 各种操作状态的含义494.3 界面设计504.3.1 主界面设计514.3.2 参数设置对话框设计534.4 程序流程图设计544.4.1 发送操作各态流程图544.4.2 接收操作各态流程图574.5 串口下文件传输的特点594.5.1 通信工作方式594.5.2 双机间串口通信方式比较604.6 文件传输系统设计用到的编程技术624.7 程序运行的结果分析644.8 程序对串口上可能出现错误的处理684.9 本章小结68第五章 毕业设计个人总结70致谢72参考文献73附录74第一章 绪论1.1本次毕业设计的选题背景和应用前景串口通信在it、军事、物流、零售、终端产品、智能卡类产品和信息采集等领域都有广泛的应用,特别是在计算机技术飞速发展的今天,这种古老的传输方式仍然有其研究的必要性,串口在各种终端之间起到了信息传输过程中,比特流和电信号的转换作用,特别是在无线通信标准及无线网络建设不太完善的今天,串口通信在很长一段时间内还有广阔的应用前景,很多要求安全通信的场合都有串口通信的用武之地。串行通信技术长久以来一直稳定地应用在it和工业通信领域。在业界,人们一提到串行通信,无一不想到rs-232接口,这个接口历经了40年的风风雨雨,如今依然在it和工业通信领域广泛地应用着。最被人们熟悉的串行通信技术标准是eia232、eia-422和eia485,也就是以前所称的rs-232、rs-422和rs-485。eia232、eia-422和eia485都是串行数据接口标准,最初都是由电子工业协会(eia)制订并发布的,eia-232在1962年发布,后来陆续有不少改进版本,其中最常用的是eia-232-c版。目前eia-232是pc机与通信工业中应用最广泛的一种串行接口。eia-232被定义为一种在低速率串行通信中增加通信距离的单端标准。eia-232采取不平衡传输方式,即所谓单端通信。标准规定,eia232的传送距离要求可达50英尺(约15米),最高速率为20kbps。由于eia-232存在传输距离有限等不足,于是eia-422诞生了,它支持的是点对多点的双向通信。为扩展应用范围,eia于1983年在eia-422基础上制定了eia-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为tia/eia-485-a标准。由于eia-232、eia-422与eia-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,标准内容规定比较简单,在此标准基础上,用户可以建立自己的高层通信协议。因此,这些串行通信技术应用很广,如录像机、计算机以及许多工业控制设备上都配备有eia232串行通信接口3。 l usb技术几十年不变的串行通信技术近两年被打破了,打破坚冰的技术就是usb。usb接口的出现在工业通信领域的反映很冷淡,然而在it界的反响却十分强烈。如今在计算机外联的设备中,越来越多的设备开始使用usb接口。usb是英文 universal serial bus 的缩写,翻译成中文的含义是“通用串行总线”。 从技术上看,usb是一种串行总线系统,它的最大特性是支持即插即用和热插拔功能。在windows 2000的操作系统中,任何一款标准的usb设备可以在任何时间、任何状态下与计算机连接,并且能够马上开始工作。 usb诞生于1994年,是由康柏、ibm、intel和microsoft共同推出的,旨在统一外设接口,如打印机、外置modem、扫描仪、鼠标等的接口,以便于用户进行便捷的安装和使用,逐步取代以往的串口、并口和ps/2接口。 发展至今,usb共有三种标准:1996年发布的usb1.0,1998年发布的usb1.1以及刚刚发布的最新标准usb2.0。此三种标准最大的差别就在于数据传输速率方面,当然,在其他方面也有不同程度的改进。就目前的usb2.0而言,其传输速度可以达到480mbps,最多可以支持127个设备。 目前在it领域,usb接口可谓春风得意。人们在市场上可以看到,每一款计算机主板都带有不少于2个usb接口,usb打印机、usb调制解调器、usb鼠标、usb音箱、usb存储器等产品越来越多,usb接口已经占据了串行通信技术的垄断地位。 但是,在工业领域,使用usb接口的产品则甚为少见。在工业领域,人们更要求产品的可靠性和稳定性,目前,eia标准下的串行通信技术完全可以满足人们对工业设备传输的各种性能要求,而且,这些产品价格非常低廉。相比之下,usb价格较高,并且其即插即用的功能在工业通信中没有优势。因为工业设备一般连接好以后很少进行重复插拔,usb特性的优越性不能很好地被体现出来,也就得不到工业界的普遍认可。因此,在工业领域,eia标准依然占据统治地位。 目前,还有一项串行通信技术受到人们的关注,这就是ieee 1394,这项技术虽然还没有普及,但是,人们对它的前景十分看好。l 未来之星ieee 1394 ieee 1394是一种与平台无关的串行通信协议,标准速度分为100mbps、200mbps和400mbps,是ieee(电气与电子工程师协会)于1995年正式制定的总线标准。目前,1394商业联盟正在负责对它进行改进,争取未来将速度提升至800mbps、1gbps和1.6gbps这三个档次。相比于eia接口和usb接口,ieee 1394的速度要高得多,所以,ieee 1394也称为高速串行总线。 ieee 1394提供了一种高速的即插即用总线。接入这条总线,各种外设便不再需要单独供电,它也支持等时的数据传输,是将计算机和消费类电器连接起来的重要桥梁。例如,用户可以在计算机上接驳一部数字vcr,把它当作一个普通的外设使用,既可用来播放电影,亦可以录制在计算机上编辑视频流。除此以外,带有ieee 1394接口的dv(数字视频)摄影机和数字卫星接收器目前均已上市。由于速度非常快,所以它是消费类影音(a/v)电器、存储、打印、高分辨率扫描和其他便携设备的理想选择。 从技术上看,ieee 1394具有很多优点,首先,它是一种纯数字接口,在设备之间进行信息传输的过程中,数字信号不用转换成模拟信号,从而不会带来信号损失;其次,速度很快,1gbps的数据传输速度可以非常好地传输高品质的多媒体数据,而且设备易于扩展,在一条总线中,100mbps、200mbps和400mbps的设备可以共存;另外,产品支持热插拔,易于使用,用户可以在开机状态下自由增减ieee 1394接口的设备,整个总线的通信不会受到干扰。 也许有人会问,采用并行方式不是可以达到更高的传输速度吗?例如,包含了8根线芯的一条并行电缆和一条串行电缆相比,前者的速度可以是后者的8倍。从理论上看的确如此,但是在实际使用时,人们还要考虑其他许多因素。例如,在并行电缆的多股线芯之间,电子干扰比较厉害; 速度较高的时候,线芯之间的同步也是一个问题; 总线的问题则更加复杂。而各种ieee 1394可通过菊花链的形式连接成一个网络,当然,由于成本原因,它只适合组成一个小网,而且内含的设备都是家用电器和计算机外设之类的东西,不适合组建一个真正的“计算机网络”。但它在一条总线内可以连接大量设备(最多63个),数据的传输得到极大简化,不仅需要的命令集被精简了,而且只需针对一个地址直接进行读写。目前支持ieee 1394的产品有台式计算机、笔记本电脑、高精度扫描仪、数字视频(dv)摄影机、数码音箱(sa2.5)、数码相机等。 但要注意的是,ieee 1394只是一种数据传输标准,而非一种“内容”标准,要想真正全面地展开ieee 1394应用,通过它传输的内容格式也必须符合特定的标准。如今,索尼已定义了一种数字视频格式,专门在ieee 1394网络中传送;雅马哈也为ieee 1394制订了一种数字视频格式。随着越来越多的人们意识到ieee 1394的优势,传统串行通信技术将会有被全面取代的一天。在应用方面,在现存的工业通信中,串行通信技术依然有很大的生存空间。目前以太网基本上实现的是计算机设备与设备之间的互联,而在接入终端,很多设备与计算机的连接是通过串行通信接口来实现的。在计算机刚刚出现的时侯,设备连接问题就出现了。比如说银行最早的ibm大型机需要和终端连接,这个连接就是用串行通信技术来实现的。直到现在,串行通信技术被广泛地应用到it和工业通信领域。 目前,最常用的串行通信技术是eiars232,由于eiars232技术简单,产品设计成本很低,因此,在人们经常使用的信息产品中基本上都能见到eia-232的接口。对于那些与计算机相距不远的人机交换设备和串行存储的外部设备,如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据十分普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各cpu之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的通信接口。 随着互联网络技术的兴起,串行通信技术也得到新的发展空间。计算机常常通过串口连接modem或其他可在pstn公用电话网上使用的通信设备(网络控制器等),采用拨号或租用专线的方式入网,与远程的终端服务器、pos机、atm取款机等在广域网或城域网范围内通信。局域网lan中也可采用串行通信技术,计算机将串口直接连接到终端服务器上。在网络中的以太网交换机、路由器设备等主要的数据传输设备中,人们除了可以见到以太网接口、光纤接口以外,还可以见到一个控制口,即console口,这个接口使用的也是串行通信技术。 新的应用也改变了eia标准的命运。从前,eia-232由于传输距离的限制不能长距离传输数据,现在,通过一个小小的接入服务器进行转接,eia232的通信信息就可以连接到互联网或者以太网中,在整个网络的范围中实现数据传递。用于it领域的串口与用于工业领域的串口是有所区分的,商业设备可以要求在特定的机房环境中运转,这样的环境令商用设备像是温室里的花朵。而工控设备要求在室外任由日晒雨淋而必须保证正常工作,要求可以承受零下20摄氏度的低温,也可以承受50摄氏度的高温。因此,在it和工业通信各自的环境中,串行通信设备的性能各有侧重,从而生产商也因产品的侧重面不同而分化。有的生产商重在强调工业级设备,提供工业环境下能够可靠运行的连接设备,有的则重在商业领域发展,强调通信技术的先进性。 互联网的发展改变了it和工业通信网络的原有格局,人们开始考虑用远程监控的方法解决工作难题。城市交通道路拥塞问题的解决就是一个例子。按照传统的方法,交管局知道什么地方堵车,临时派遣交通警察去疏导。现在,交管局可以在每个路口设置数据采集器,将通过每个红绿灯的车流量数据传输到总部,经过计算机系统的模拟与计算,拿出最佳的疏通方案,通过改变每个红绿灯的变换周期,系统自动实现交通的疏导。这样的解决方法速度快,判断准确。再例如,银行系统全国联网后, atm机准确地将用户的取款信息与银行账务系统连接,人们可以随时到大街上的atm取款机上取款。还有气象数据采集与处理、铁路列车调控、电力数据采集与调配系统等等,这些系统后端可能是一个庞大的计算机网络系统,而前端则是放在大街或者恶劣环境下的设备,因此,前端设备需要的是工业级性能的产品。 新的应用引发了新的市场空间,一些企业开始在it和工业通信之间寻找发展生机。目前,有的企业提供一些接入服务器产品,这些产品可以将串行数据信息成功连接到以太网或者是互联网上,实现数据采集与管理网络的一体化。新的应用也改变了eia标准的命运。从前,eia-232由于传输距离的限制不能长距离传输数据,现在,通过一个小小的接入服务器进行转接,eia232的通信信息就可以连接到互联网或者以太网中,在整个网络的范围中实现数据传递。基于以上串口方面的应用和它的前景,我们本次毕业设计主要是选择设计一个基本的串口程序,即实现在串口下两台计算机之间文件的传输系统的设计。目的是掌握串口通信程序开发的基本流程,基本原理,把理论知识应用到实际生产生活中去。1.2 windows平台下操作系统对串口的管理在现代的各种实时监控系统和通信系统中,在windows 9x/nt下利用vc+对rs-232串口编程是常用的手段。windows 9x/nt是抢先式的多任务操作系统,程序对cpu的占用时间由系统决定。多任务指的是系统可以同时运行多个进程,每个进程又可以同时执行多个线程。进程是应用程序的运行实例,拥有自己的地址空间。每个进程拥有一个主线程,同时还可以建立其他的线程。线程是操作系统分配cpu时间的基本实体,每个线程占用的cpu时间由系统分配,系统不停的在线程之间切换。进程中的线程共享进程的虚拟地址空间,可以访问进程的资源,处于并行执行状态,这就是多线程的基本概念。1.2.1 vc+中对多线程的支持使用mfc开发是较普遍的vc+编程方法。在vc+6.0下,mfc应用程序的线程由cwinthread对象表示。vc+把线程分为两种:用户界面线程和工作者线程。用户界面线程能够提供界面和用户交互,通常用于处理用户输入并相应各种事件和消息;而工作者线程主要用来处理程序的后台任务。程序一般不需要直接创建cwinthread对象,通过调用afxbeginthread()函数就会自动创建一个cwinthread对象,从而开始一个进程。创建上述的两种线程都利用这个函数。线程的终止取决于下列事件之一:线程函数返回;线程调用exitthread()退出;异常情况下用线程的句柄调用terminatethread()退出;线程所属的进程被终止1。1.2.2多线程在串口通信中的应用(1) 串口通信对线程同步的要求因为同一进程的所有线程共享进程的虚拟地址空间,而在windows 9x/nt系统下线程是汇编级中断,所以有可能多个线程同时访问同一个对象。这些对象可能是全局变量,mfc的对象,mfc的api等。串口通信的几个特点决定了必须采用措施来同步线程的执行。串口通信中,对于每个串口对象,只有一个缓冲区,发送和接收都要用到,必须建立起同步机制,使得在一个时候只能进行一种操作,否则通信就会出错。进行串口通信处理的不同线程之间需要协调运行。如果一个线程必须等待另一个线程结束才能运行,则应该挂起该线程以减少对cpu资源的占用,通过另一进程完成后发出的信号(线程间通信)来激活。vc+提供了同步对象来协调多线程的并行,常用的有以下几种:csemaphore:信号灯对象,允许一定数目的线程访问某个共享资源,常用来控制访问共享资源的线程数量。cmutex:互斥量对象,一个时刻至多只允许一个线程访问某资源,未被占用时处于有信号状态,可以实现对共享资源的互斥访问。cevent:事件对象,用于使一个线程通知其他线程某一事件的发生,所以也可以用来封锁对某一资源的访问,直到线程释放资源使其成为有信号状态。适用于某一线程等待某事件发生才能执行的场合。ccriticalsection:临界区对象,将一段代码置入临界区,只允许最多一个线程进入执行这段代码。一个临界区仅在创建它的进程中有效。(2) 等待函数 win32 api提供了能使线程阻塞其自身执行的等待函数,等待其监视的对象产生一定的信号才停止阻塞,继续线程的执行。其意义是通过暂时挂起线程减少对cpu资源 的占用。在某些大型监控系统中,串口通信只是其中事务处理的一部分,所以必须考虑程序执行效率问题,当串口初始化完毕后,就使其处于等待通信事件的状态, 减少消耗的cpu时间,提高程序运行效率。常用的等待函数是waitforsingleobject()和waitformultipleobjects(),前者可监测单个同步对象,后者可同时监测多个同步对象。1.2.3 串口通信的重叠i/o方式mfc对于串口作为文件设备处理,用createfile()打开串口,获得一个串口句柄。打开后setcommstate()进行端口配置,包括缓冲 区设置,超时设置和数据格式等。成功后就可以调用函数readfile()和writefile()进行数据的读写,用waitcommevent()监 视通信事件。closehandle()用于关闭串口3。在readfile()和writefile()读写串口时,可以采取同步执行方式,也可以采取重叠i/o方式。同步执行时,函数直到执行完毕才返回,因而同步执行的其他线程会被阻塞,效率下降;而在重叠方式下,调用的读写函数会 立即返回,i/o操作在后台进行,这样线程就可以处理其他事务。这样,线程可以在同一串口句柄上实现读写操作,实现重叠3。使用重叠i/o方式时,线程要创建overlapped结构供读写函数使用,该结构最重要的成员是hevent事件句柄。它将作为线程的同步对象使用,读写函数完成时hevent处于有信号状态,表示可进行读写操作;读写函数未完成时,hevent被置为无信号。1.3基于串口的文件传输系统设计的主要内容本次毕业设计主要研究的内容有:1. 进行文件传输技术的分析,包括通信流程、通信方式的确定、数据包的格式分析;2. 通信思路的设计,包括互相拷贝文件功能的描述、通信事件的处理方法和流程、消息响应函数的设计和流程图以及各种操作状态的含义定义;3. 界面设计,包括主界面和对话框设计;4. 程序设计;5. 程序调试和预期效果的检验;6. 程序设计的延伸和可扩展性的分析。1.4 论文(设计)的整体结构第一章,主要介绍毕业设计的主要内容、选题背景和应用前景;第二章,主要介绍串口通信程序开发的基础知识;第三章,主要介绍本次毕业设计的设计方案和相关领域串口通信程序开发的技巧;第四章,对串口可能出现的问题提出解决的办法;第五章,对本次毕业设计提出宝贵意见的人表示感谢;第六章,给出本次毕业设计的参考文献,希望通过阅读能够全面了解利用vc+进行程序开发的原理。第二章 串口通信程序开发基础知识2.1 串口通信概述在工业控制中,串口是常用的计算机与外部串行设备之间的数据传输通道。由于串行通信结构简单、可靠性强、实现及使用成本低、通讯标准统一,因此在测控系统和工程中应用十分广泛。目前windows在工业生产监控管理系统中已成为主流平台 ,windows环境下的上、下位机之间的串行通信是设计与开发监控管理系统和集散控制系统的重要组成部分。microsoft公司的vc+6.0是一种高级编程语言,其基础类库 (mfc)封装了win32api中的标准通信函数,可方便地支持串口通信。介绍串行通信,有必要先介绍一下并行通信。所谓并行通信,是在一些联络信号的控制下,一次将8位、16位或32位数据同时传送的通信方式。在并行通信中,传输线数量没有限制,除了数据线之外还应设置有通信联络控制线。这种通信方式的优点是通信速率高,适用于告诉的通信场合,但缺点也很明显,首先随着通信联络控制线数量的增加,通信的成本越来越高;其次随着通信距离的增加,受到通信联络控制线间及外界的电磁干扰越趋严重,通信的质量明显下降3。为解决这些问题,可以采取串行通信方式。串行通信,只需要一队传输线,数据的各位按照时间顺序依次传送,如8位数据分8次传送。显然,串行通信的速度要比并行通信慢的多,但其优点也很明显,通信成本底,距离远。计算机系统的应用和微机网络日益发展,通信功能越来越显的重要。这里所说的通信是指计算机与外界的信息交换。因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。对于那些与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各cpu之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。2.2 串行通信基础知识2.2.1 串行通信的优点串行通信之所以被广泛采用,其中一个主要原因是可以在现有的电话网络上进行信息的远距离传输。只要增加modem,边可以在电话网络实行远程通信。一般来说,串行通信具有如下四个优点:(1)由于在一条传输线路上既有传输数据信息,又有传输控制联络信息,着就需要一系列约定,从而识别一条线上传诵的信息流中,哪一部分是数据信号,哪一部分是联络信号。(2)串行通信的信息格式有异步和同步信息格式,与此对应,有异步串行通信和同步串行通信两重方式。(3)串行通信由于西西中逻辑定义与ttl不兼容,故需要逻辑电平转换,以提高信息传输的可靠性。(4)为了降低通信线路的成本和简化通信设备,可用现存信道(如电话、电报信道),配以适当的通信接口,在任意两点之间实现串行通信。时间证明,微型计算机通过modem和电话线进行远程串行通信,是当今很手欢迎的廉价的一种通信方式。2.2.2 串行通信工作方式在串行通信中,数据通常是在两个站(如微机、终端)之间进行传输,按照数据流的方向及对线路的是用方式可分为如下几种基本传输方式:(1) 单工传输方式这种方式,在传输线路上,数据只能按照一个固定的方向,且是交互式的。有的系统是单工传输,但可以利用另一线路将接收方的监视信号返回到发送方,通常用于差错检测。这种单向连接的用途较窄,仅适用于一些简单的单向通信或数据传送的场合。(2)半双工方式当使用同一根传输线既作为输入又作为输出时,虽然数据可以在两个方向上传输,但通信双方不能同时收发数据,这种传输方式就是半双工传输方式。通信系统每一端的发送器和接收器,通过收/发开关接到通信线,利用收/发切换开关进行通信的方向的切换。(3)全双工传输方式当数据的发送和接受分别由两根不同的传输线传输时,通信双方都能在同一时刻进行发送和接受操作,即相当于将两个方向相反的单工传输方式组合在一起,这样的传输方式就是全双工传输方式。在全双工传输方式下,通信的每一端都设置了发送器接收器,因此能控制数据信息在两个方向同时传送,所以,特别适合于那些不能有时间延迟的交互式应用系统。串行通信的过程是将通信双方的数据序列变成电信号,在选顶的通信线路上完成传递。通常,将通信方式分为信号传输方式和线路传输方式两部分。信号传输方式是指信号原样传输的基波传输或是利用原信号调治成高频载波的载波信号。线路传输方式是指通信双方的设备的线路可选择单工、半双工、全双工和多工方面传输。(4)信号传输方式在近距离传输时,广泛使用的是按信号原样传输的基波传输方式。如rs-32、rs-485等通信方式,这种方式实现简单,但对通信距离有一定的限制。在远距离传输时,通常需要使用modem。通过modem,可以将原信号调治为高频的模拟信号,然后通过电话网络,进行远距离传输。(5)线路传输方式线路传输方式使用复用技术,将一个信道划分为若干个频带或时间片,从而使多路信号同时共享信道,这就是多双工传输方式。使用复用器和集中器可以降低成本,提高通信网的传输效率。2.2.3 串行通信检错与纠错串行通信的最终目的是将发送端要发送的数据正确无误的传动到接收端。由于突发性干扰(电器干扰、天气干扰),从而引起传输信号的误码是在所难免的,这将直接影响通信系统的可靠性。所以,对通信差错控制能力是衡量一个通信系统的主要指标。通常,将如何发现传输中的错误叫检错。当发现错误后,如何消除和纠正错误叫纠错。在基本通信规程中一般采用奇偶校验或方阵检错。当发现错误后,如何消除和纠正叫纠错。在高级通信控制规程中,一般采用循环冗余码crc(cycle redundancy code)检验,以自动纠错方式来纠错。2.2.4 串行通信的速率与传输距离传输速率和距离是衡量串行通信的两个重要方面,通常串行通信涉及以下两个方面:1 波特率在并行通信中,传输速率以每秒传诵的字节(b/s)来表示数据传输速率。此时可以用波特率来表示数据传输速率,即1波特=1bit/s。波特率是衡量通信线路基本电信号发送率的一种量度,它仅仅是电学上的量度单位,而不是信息的量度单位。换言之,拨特率是指发送到通信线路上的电脉冲速率。常用的标准波特率是110、300、1200、2400、4800、9600、和19200等。随着技术的进步,某些串行通信可以支持更高的波特率,如38400、57600等。2 发送接收时钟在串行通信中,二进制系列是以数字信号波形的形式出现的,对这些连续的数字波形的死尸发送和接受是在发送/接收时钟的控制下进行的。在发送数据时,发送器在发送时钟的有效沿(下降沿)作用下将移位寄存器的数据按位移位串行输出。在接收数据时,接收器在接受时钟的有效沿(上升沿)作用下对接收数据按位采样,并按位串行移入移位寄存器。可见,发送/接收时钟是对数据信号的每一位惊醒同步控制,而发送/接收时钟的快慢将直接影响通信设备发送/接收数据的速度。发送/接收时钟频率与波特率的关系如下:发送/接收时钟频率=n * 发送/接收波特率表达式中的n=1,16,64。例如,求传输速率为1200波特的发送/接收时钟频率,则:当n=1时,发送/接收时钟频率=1.2khz。当n=16时,发送/接收时钟频率=19.2khz。当n=64时,发送/接收时钟频率=76.8khz。在实际应用中,可根据要求的传输波特率和错选择的倍数n来确定发送/接收时钟频率。3传输距离与传输速率的关系串行接口或终端直接传送串行信息流的最大距离与传输速率及传输线的电器特性有关,传输距离随传输速率的增加而减少。rs-232c标准规定,当数据传输速度小于20kbit/s,并且电缆的电容负荷小于2500pf时,传诵距离小于30m。由于电缆的电容没有那么大,当传输速度较慢时,传输距离将超过这个距离。在实际应用中,对远距离传输,一干都需要加入modem3。2.2.5 串行通信协议所谓通信协议是指通信双方的一种约定。在约定中对数据格式、同步方式、传送速度、传送步骤、检错方式以及控制字符定义等做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称为传输控制规程,它属于isososi(国际标准化组织提出的开放系统互联参考模型)七层参考模型中的数据链路层。目前,采用的串行通信协议有两类:异步通信和同步通信。同步协议又分为面向字符、面向比特和面向字节计数3种。面向字节计数的同步协议主要用于dec公司的网络结构中。l 异步通信协议的特点异步传输格式也称为起止式异步协议,其特点式通信双方以一个字符(包括特定附加位)作为数据传输单位,且发送方传送字符的间隔时间是不定的。在传输一个字符时总是以起始位开始,以停止位结束。由于线路或程序出错等原因,使得通信过程中产生了传送错误。因为异步通信的实质是字符的发送是随机的,接收方通常可检测到如下一些错误:(1)奇偶错。在通信线路上因噪声干扰而引起的某些数据位的改变,则会引起奇偶校验错。一般,接收方检测到奇偶错时,则要求发送方重新发送。(2)超越错。在上一个字符还未被处理器读出前,本次又接收到一个字符,则会引起超越错。如果处理器周期检测“接收数据就绪”的速率小于串行接口从通信线路上接收字符的速率,就会引起超越错。通常,接收方检测到超越错时,可提高处理器周期检测的速率或接收和发送双方重新修改后的数据传输速率。超越错也称为溢出错。(3)帧格式错。若接收方在停止的位置上检测到一个空号,则会引起一个帧格式错。一般来说,帧格式错的原因比较复杂,可能时双方协议的数据格式不匹配、线路噪声改变了停止位的状态或因时钟不匹配或不稳定未能按照协议装配成一个完整的字符帧等。通常,当接收方检测到一个帧格式时,应按照各种可能性做相应处理,例如,要求重发。l 面向字符的同步传输方式这种协议的典型代表是ibm公司在20世纪60年代制定的二进制同步通信协议bsc,它是按照对话习惯,为半双工传输设计的面向字符的同步通信协议。它的特点是一次传送由若干个字符著称的数据块,并规定了10个特殊字符作为这个数据块的开头和结束标志以及整个传输过程的控制信息,它们也叫通信控制字。本次毕业设计所采用的通信协议就是基于该种协议。l 面向字节的同步传输方式面向比特的同步传输协议又成为二进制同步传输。最有代表性的同步协议有三种:1.同步数据链路控制规程sdlc2.高级数据链路控制规程hdlc3.先进数据通信规程adccp这些协议的特点是所传输的一侦数据可以是任意位,是靠约定的位组合模式,不是靠特定字符来标志侦的开始和结束3。2.2.6 串口通信工作原理前面我们知道了所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。由于cpu与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串并)和“发送移位寄存器”(并串)。在数据输入过程中,数据1位1位地从外设进入接口的“接收移位寄存器”,当“接收移位寄存器”中已接收完1个字符的各位后,数据就从“接收移位寄存器”进入“数据输入寄存器”。cpu从“数据输入寄存器”中读取接收到的字符。(并行读取,即d7d0同时被读至累加器中)。“接收移位寄存器”的移位速度由“接收时钟”确定。在数据输出过程中,cpu把要输出的字符(并行地)送入“数据输出寄存器”,“数据输出寄存器”的内容传输到“发送移位寄存器”,然后由“发送移位寄存器”移位,把数据1位1位地送到外设。“发送移位寄存器”的移位速度由“发送时钟”确定。接口中的“控制寄存器”用来容纳cpu送给此接口的各种控制信息,这些控制信息决定接口的工作方式。“状态寄存器”的各位称为“状态位”,每一个状态位都可以用来指示数据传输过程中的状态或某种错误。例如,用状态寄存器的d5位为“1”表示“数据输出寄存器空”,用d0位表示“数据输入寄存器满”,用d2位表示“奇偶检验错”等。能够完成上述“串并”转换功能的电路,通常称为“通用异步收发器”(uart:universal asynchronous receiver and transmitter),典型的芯片有:intel 8250/8251,16550。串行通信具有连接简单、使用灵活方便、数据传递可靠等优点,在工业监控、数据采集和实时控制系统中得到了广泛应用。但由于windows 98对系统底层操作采取了屏蔽的策略,不允许用户对硬件i/o口进行直接操作,进行串行通信只能通过调用api函数来完成;同时windows 9x通过消息队列驱动管理程序,dos中断服务例程在其下面也很难实现,且实时性和可靠性都得不到保证;通过基于线程和消息的多任务处理编程可以有效地解决这一问题,且能提高数据传输的吞吐量和应用程序的可靠性。windows 9x支持基于线程的抢先式多任务处理。进程(process)是应用程序的执行实例,而线程(thread)则是进程内部执行的路径。每个进程至少有一个主线程,还可包括若干子线程,线程间独立运行。从根本上说,线程是可由系统调度的一个最简单的代码单元,同一进程的每个线程有自己的一组cpu指令、一组cpu寄存器和一个堆栈,由windows 9x分配cpu时间片,需要小心处理线程的同步问题。基于线程的多任务使得同一程序的两个或多个部分可以同时运行。一个多线程的应用程序实际上在其内部实现了多任务扩展,为代码赋予了并行执行的特性,因而可以执行某些实时性或随机性很强的操作,提高对cpu的利用率,加快通信程序的信息处理速度。操作系统在给各个线程分配cpu时间片时,通过其本身的调度机制来评价各个活动线程的优先级,优先执行优先级别高的活动线程,挂起优先级别低的活动线程;当活动线程优先级别相同时,系统调度程序则以轮转方式分配cpu时间片。在抢先式多任务处理中,只要系统调度程序确定有一个优先级别更高的线程准备运行,则系统立刻会将优先级别低的线程挂起(即使处于运行状态),而把cpu时间片分配给优先级别高的线程。windows 9x系统提供的开放式通用功能增强接口win32 api(应用编程接口)是一个复杂函数、消息的集合。windows 9x下把对串口和其它通信设备的支持与基本输入输出驱动程序集成为一体,串口的打开、关闭、读取和写入所用的函数与操作文件的函数相同,系统通过被称为设备控制块dcb的数据结构对串行口和串口通信驱动程序进行配置。在开发微机控制系统的过程中,我们经常需要通过rs-232串行接口与外部设备进行通信。例如分级控制系统中上位机与下位机的数据交换以及数据采集系统中计算机与数字仪表的通信等。在dos时代,编写串行通信程序是一件相当复杂的工作,程序员需要具备相当的硬件知识,对可编程串行通信接口芯片的内部寄存器定义、工作方式、指令字等相关内容有所了解,才有可能着手编写程序,大量的时间和精力都花在了如何与硬件打交道上,而不是花在我们的主要目的获取与处理数据上;在windows下,win32api提供了使用createfile/writefile等文件i/o函数进行串行口操作的方法,但是在实现上仍然是相当烦琐的。幸运的是,windows平台先进的activex技术使我们在对串行口编程时不再需要处理烦琐的细节。利用已有的activex控件,我们只需要编写少量的代码,就可以轻松高效地完成任务4。 activex是windows下进行应用程序开发的崭新技术,它的核心内容是组件对象模型com(component object model)。activex控件包括一系列的属性、方法和事件,使用activex控件的应用程序和activex控件之间的工作方式是客户服务器方式,即应用程序通过activex控件提供的接口来访问activex控件的功能5。 microsoft communications control(以下简称mscomm)是microsoft公司提供的简化windows下串行通信编程的activex控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(eventdriven)方法,一是查询法。我们在后面将详细介绍。2.3 本章小结本章首先介绍了串口通信的概念和它的应用领域,其次为了全面了解串口知识,从串口在通信中的优缺点、串口的工作方式、数据传输的正确性控制、速率与传输距离的关系、通信协议和工作原理等方面加以阐述,希望通过这几个方面的论述能够对串口的基础知识进行总结和回顾,为后面的文件传输系统设计打下基础。第三章 串口在通信产品中的应用及开发串口程序的方法3.1 串口在各种通信产品中的功能3.1.1 串口在单片机中的应用单片机作为嵌入式系统的一种,已在自动化控制以及家电产品等领域得到了广泛的应用。常见的单片机系统都具备一个串行口(如80c51系列),有的还具备了两个串行口(如ds80c320系列)甚至多个串行口。随着单片机技术的成熟,单片机异步串行通信已经广泛应用于点对点通信以及单片机对pc机的通信中6。串行通信虽然有其自身优点:如适合长距离通信,有一定的纠错能力等,但并行通信在短距离(数米范围内)传输过程中的优点是显而易见的。首先串行通信时要设置串口数据,如:串口号(com1、com2或者其他串口)、波特率、数据位数、停止位、校验位等等。而且单片机与pc机的串口数据必须一一对等,否则不能传输。而并行传输时,无需上述过程。其次,pc机的串口电平值为+12v-12v,单片机是ttl电平(0-+5v),两者必须要经过电平转换芯片进行电平间的转换。而进行并行传输时,由于双方都是ttl电平,所以pc的并口可以与单片机或其他芯片直接相连;另外,串行传输速度慢,每次只能传送一位,而并行每次可以传送8位,速度上的差异显而易见。而对于单片机,串口(uart)是最常用的端口,尤其对于存在两个或多个串口的单片机来说,充分利用串口进行通信是非常重要的。a输出输入接口的扩展单片机串口实现并行通信,其原理就是将pc机传过来的并行数据转换成串行数据,送入单片机的串口再由其进行相应处理。实质上就是一个数据串-并、并-串转换的过程。pc的并口为一个标准的25针插座,包含一个八位二进制数据端口(地址为378h),即第2脚到第9脚;一个输入控制端口(地址为379h),即第15脚、13脚、12脚、10脚、11脚,其另外低三位无定义;一个输出控制口(地址为37ah),即第1脚、14脚、16脚、17脚,其另外高四位无定义。由此可见后面两个端口都不是完全的8位7。b输出接口电路扩展这里使用常用的移位寄存器74ls164与单片机的rxd口构成输出接口电路。 双列直插式74ls164引脚定义,其中:qa-qh为并行输出的数据,送入pc机并口378h端口(接收数据的8个数据位);单片机串口输出的数据从ab输入;clr信号用于清除输出数据(通常用在移位完成时);内部数据移位依靠时钟clk信号上升沿(由单片机tx提供)控制。c输入接口电路扩展使用常用的移位寄存器74ls165与单片机的rxd口构成输入接口电路。双列直插式74ls165引脚定义,其中:a-h为并行输入的数据,接pc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专用:婚内财产分割协议
- 2024-2025学年沪粤版物理八年级上册导学案:2.3怎样区分声音(响度)
- 航空公司反恐安全培训制度
- 2024年区块链技术在物流行业的应用合同
- 2024-2025学年人教版物理八年级8.3《摩擦力》教案
- 中班语言教案:钓星星
- 《确定位置(一)》(导学案)北师大版五年级下册数学
- 大班健康教案《小耳朵本领大》
- 2024-2025学年 苏科版 八年级下册 物理 第六章:6.3物质的密度 教案
- 大班主题详案教案及教学反思《美丽的太空》
- 系统集成项目管理工程师(基础知识、应用技术)合卷软件资格考试(中级)试题及解答参考(2025年)
- 广东省珠海市第十六中学2024-2025学年上学期期中质量监测九年级数学试题(无答案)
- 2024新信息科技七年级《第一单元 探寻互联网新世界》大单元整体教学设计2022课标
- 成语积累竞赛试题
- 2024焊接工艺规程
- 2024年巴黎奥运会
- 人教版(2024)七年级全一册体育与健康第6课《识别界限 拒绝性骚扰》教学设计
- 第六单元(整体教学设计)九年级语文上册大单元教学名师备课系列(统编版)
- DB1331T 080-2024 雄安新区零碳建筑技术标准
- 基于区块链的车联网安全研究综述
- MOOC 创业基础-暨南大学 中国大学慕课答案
评论
0/150
提交评论