基于spcp技术串口实现双机通信_第1页
基于spcp技术串口实现双机通信_第2页
基于spcp技术串口实现双机通信_第3页
基于spcp技术串口实现双机通信_第4页
基于spcp技术串口实现双机通信_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录TOC o 1-2 h z u HYPERLINK l _Toc201730061 摘要 PAGEREF _Toc201730061 h III HYPERLINK l _Toc201730062 Abstract PAGEREF _Toc201730062 h V HYPERLINK l _Toc201730063 第一章 串行行通信的介绍绍1 HYPERLINK l _Toc201730064 1.1 串行通通信方式1 HYPERLINK l _Toc201730065 1.2 串行通通信的传送方方向2 HYPERLINK l _Toc201730066 1.3 串行输输入/输出2

2、HYPERLINK l _Toc201730067 1.4 串行接接口标准2 HYPERLINK l _Toc201730068 第2章 串口编编程技术5 HYPERLINK l _Toc201730069 2.1 串口实实现双机互联联系统功能概概述5 HYPERLINK l _Toc201730070 2.2 VB串串口查询法的的实现方法5 HYPERLINK l _Toc201730071 第3章 SPCCP通信协议议设计9 HYPERLINK l _Toc201730072 3.1 串行通通信协议9 HYPERLINK l _Toc201730073 3.2 SPCCP协议的发发送格式1

3、3 HYPERLINK l _Toc201730074 第4章 双机互互联程序的实实现15 HYPERLINK l _Toc201730075 4.1 创建标标准的项目文文件15 HYPERLINK l _Toc201730076 4.2 加入串串口通信控件件15 HYPERLINK l _Toc201730077 4.3 设计程程序主窗体16 HYPERLINK l _Toc201730078 第5章 程序的的测试与运行行21 HYPERLINK l _Toc201730079 5.1 软件及及硬件测试21 HYPERLINK l _Toc201730080 5.2 总结24 HYPERLI

4、NK l _Toc201730081 附录25PAGE 50PAGE VII串口实现双机通通信摘要计算机串口编程程在通信软件件中有着十分分广泛的应用用,如电话、传传真、视频和和控制等。很很多行业会涉涉及到串口通通信技术。串串行通信中分分为异步通信信和同步通信信两种基本串串行通信方式式,串行通信信在两个设备备之间传输,有有单工、半双双功、全双工工三种形式。在本论文中,串串口实现双机机互联是通过过串口线直接接连接两台计计算机,按照照自定义的串串口通信协议议(简称为SSPCP)进进行信息交换换。通过VBB中MSCoomm控件处处理底层串口口通信细节,根根据自定义串串口通信协议议建立连接,实实现聊天和

5、文文件传输功能能。关键字:VB,串口通通信,SPCCP,数据交交换。serial commuunicattionAbstracctSerial compuuter pprograammingg in tthe coommuniicatioons sooftwarre hass a veery wiide raange oof appplicattions, suchh as ttelephhone, fax, videoo and contrrol. MMany iindusttries wouldd invoolve sseriall commmunicaation technnologii

6、es. SSeriall commmunicaation is diividedd intoo asynnchronnous ccommunnicatiions aand syynchroonous commuunicattion aare twwo bassic seerial commuunicattion, seriaal commmuniccationn betwween tthe twwo traansmisssion equippment, a siingle-workeers, hhalf-dduplexx, fulll-dupplex tthree formss.In this

7、s papeer, too achiieve ddoublee-seriial-liine Innterneet dirrectlyy throough tthe seerial port to coonnectt two compuuters, in aaccorddance with the ccustomm of sseriall commmunicaation protoocol (referrred tto as SPCP) for inforrmatioon excchangee. VB MSCommm conntrol throuugh trreatmeent inn the b

8、ottoom of seriaal commmuniccationn detaails, accorrding to cuustom seriaal commmuniccationn prottocol to coonnectt, andd chatt and file transsfer ffeaturre.Keywordd: VB, seriial coommuniicatioon, SPPCP, ddata eexchannge.PAGE 49第一章 串行行通信的介绍绍 串行通信方方式 在计算机与外设设之间的信息息传送中,按按照一次传送送数据的位数数分类,可分分为:并行传传送方式和串串行

9、传送方式式。并行传送送方式为数据据的各位同时时传送;串行行传送方式为为数据的各位位按一定的顺顺序逐位分时时传送。串行行传送适用于于长距离通信信系统及各类类计算机网络络。由于信息息在一个方向向上传输只占占用一根传输输线,而这根根线上既传送送数据,又传传送联络信号号,为此为区区分这根线传传送的信息流流中,哪一部部分是联络信信号,哪一部部分是数据,就就必须引出串串行通信的一一系列约定。于于是,在串行行通信中就有有异步通信和和同步通信两两种基本串行行通信方式。 异步通信 异步通信有字符符格式和波特特率两项约定定。字符格式:传送送一个字符总总是从传送一一位起始位(00)开始,接接着传输字符符本身(58位

10、),传传送字符从最最低位开始,逐逐位传送,直直至到传送最最高位,接着着传送奇/偶偶校验位,最最后传送1位位或1个半位位或2位停止止位(1)。从从起始位开始始到停止位结结束,构成一一帧信息。一一帧信息传送送完毕后,可可传送不定长长度的空闲位位(1),作作为帧与相邻邻帧之间的间间隔,也可以以没有空闲位位间隔。 波特率:是单位位时间内传送送二进制数据据的位数,以以位/秒为单单位,即波特特。异步通信信传送速度一一般在509600波波特范围内,用用于传送信息息量不大,传传送速度要求求较低场合。 同步通信 同步通信中使用用的数据格式式根据所采用用的控制规程程(通信双方方就如何交换换信息所建立立的一些规定定

11、和过程称为为通信控制规规程)又可分分为面向字符符型和面向位位(比特)型型两种。面向字符型的数数据格式又有有单同步、双双同步、外同同步之分。单同步:发送方方先传送1个个同步字符,再再传送数据块块,接收方检检测到同步字字符后接收数数据;双同步:发送方方先传送2个个同步字符,再再传送数据块块,接收方检检测到同步字字符后接收数数据;外同步:用一条条专用线来传传送同步字符符,以实现收收发双方同步步操作。三种种同步方式,均均以2个字节节的冗余检验验码CRC作作为一帧信息息的结束。面向位型:根据据IBM的同同步数据链路路控制规程SSDLC,SSDLC数据据格式,同步步传送,接收收和发送时钟钟对于收/发发双方

12、之间的的数据传送达达到同步是至至关重要的。在在发送方,一一般都是在发发送时钟的下下降沿将数据据串行移位输输出;在接收收方,一般都都是在接收时时钟的上升沿沿将数据串行行移位输入。 串行通信的的传送方向 串行通通信在两个站站(或设备)AA和B之间传传送,有单工工、半双工、全全双工三种形形式。 单工:仅能进行行一个方向的的传送,即AA只能作为发发送器,B只只能作为接收收器; 半双工工: 能交替替地进行双向向数据传送,但但两设备之间间只有一根传传输线,因此此两个方向的的数据传送不不能同时进行行; 全双工工: A、BB之间有两条条传输线,能能在两个方向向上同时进行行数据传送。 串行输入/输出 串行输入的

13、特点点:串行数据据传输中,每每次只传送一一位数据,速速度比并行传传输慢。但是是,实现串行行传输的硬件件具有经济性性和实用性的的特点。 串行接口标标准RS-232、RRS-4222与RS-4485都是串串行数据接口口标准,最初初都是由电子子工业协会(EEIA)制订订并发布的.RS-2332、RS-422与RRS-4855标准只对接接口的电气特特性做出规定定,而不涉及及接插件、电电缆或协议,在在此基础上用用户可以建立立自己的高层层通信协议。 RS-232串串行接口标准准目前RS-232是PPC机与通信信工业中应用用最广泛的一一种串行接口口。RS-2232被定义义为一种在低低速率串行通通讯中增加通通

14、讯距离的单单端标准。RRS-2322采取不平衡衡传输方式,即即所谓单端通通讯。收、发发端的数据信信号是相对于于信号地.典典型的RS-232信号号在正负电平平之间摆动,在在发送数据时时,发送端驱驱动器输出正正电平在+55+15VV,负电平在在-5-115V电平。当当无数据传输输时,线上为为TTL,从从开始传送数数据到结束,线线上电平从TTTL电平到到RS-2332电平再返返回TTL电电平。接收器器典型的工作作电平在+33+12VV与-3-12V。由由于发送电平平与接收电平平的差仅为22V至3V左左右,所以其其共模抑制能能力差,再加加上双绞线上上的分布电容容,其传送距距离最大为约约15米,最最高速

15、率为220kb/ss。RS-2232是为点点对点(即只只用一对收、发发设备)通讯讯而设计的,其其驱动器负载载为37kk。所以RSS-232适适合本地设备备之间的通信信。 串口编程技技术在Microssoft WWindowws 下开发发串行通信目目前通常有如如下几种方法法:一是利用用Windoows APPI通信函数数;二是利用用 winddows 的的读写端口函函数_inpp、_inppw、_innpd、_ooutp、_outpww、_outtpd、(WWindowws95系列列下)或开发发驱动程序(WWindowwsNT系列列操作系统下下)直接对串串口进行操作作;三是利用用第三方提供供或自

16、己编写写的通信;四四是使用串口口通信组件,如如ActivveX控件MMSCommm 。MSComm控控件:(Miicrosooft Coommuniicatioon Conntrol)是是微软公司提提供的简化wwindowws下串口通通信编程的AActiveeX控件,它它为应用程序序提供了通过过串行接口收收发数据的简简便方法,在在VisuaalBasiic、VC、DDelphii等语言均可可使用。以上几种方法中中第一种使用用面较广,但但由于比较复复杂,使用较较困难;第二二种需要了解解硬件电路结结构原理,深深入驱动层次次,专业化程程度较高;第第三种方法使使用面向对象象技术封装WWin32AAPI

17、函数,提提供一个用于于串行通信的的类,只要理理解这种类的的几个成员函函数,就能方方便的使用,但但能普遍应用用的这种类相相当困难;第第四种方法较较简单,对于于 Visuual Baasic,常常用的方法就就是使用第四四种方法。本本文将用第四四种方法实现现双机通信。 串口实现双双机互联系统统功能概述双机互联程序通通过串口将两两台计算机连连接起来,按按照自定义的的串口通信协协议(简称为为SPCP)进进行信息交换换,实现通过过串口进行聊聊天、文件和和收发的功能能。SPCP协议设设计思想基于于帧传输方式式,即在向串串口发送数据据时是一帧一一帧地发送。对对于上层应用用(如文件传传输)来说,应应用程序所发发

18、送的和所接接收的都是流流式数据,即即如果应用程程序需要进行行上层的协议议解释的话,它它将面对的这这些流数据重重新拼装。为为保证可靠的的传输,在传传输开始前,通通过协议建立立连接。来确确定是否要接接收数据,是是否保存等。 VB串口查查询法的实现现方法 串口查询法法的机理 VB的的串口查询法法是一种主要要工作在查询询方式下的实实现方法。当当通信程序工工作在“查询”方式时,可可以不考虑WWin95的的进程和线程程的问题。仅仅在串口有数数据时,去读读串口缓冲区区就可以了。这这种方法下确确定串口读取取的时机、握握手协议及软软件纠错的实实现是程序员员应考虑的主主要问题。以下是读取接收收缓冲区数据据时的流程

19、图图:获取当前通信设备的数据获取当前通信设备的数据缓冲区中有无数据读数据结束无有有 由于这这种方法主要要工作在查询询方式。程序序员必须完成成相当一部分分通信状态的的检测工作,许许多细节(甚甚至包括通信信过程中的字字符属性的转转换)也必须须通过程序代代码完成。因因而相比较通通信控件方法法而言,这种种查询方法对对通信双方协协议的依赖性性尤其大。双双方通信协议议的约定对程程序实现的难难易程度影响响很大。串口查询法中,一一般串口初始始化的流程如如下:设置设备控制块设置设备控制块打开串口设置通信参数设置缓冲区大小值得注意的一点点是,此方法法下协议的约约定必须满足足以下条件:即甲方发送送时,乙方必必须在甲

20、方发发送动作之前前进入循环接接收状态,直直到接收到字字符后通过对对串口读取函函数ReaddFile返返回值的判断断跳出循环状状态。 同时时,一般为了了不使系统因因循环等待接接收而进入“死循环”状态,可以以人为设置读读取串口的循循环次数,一一般10000100000次即可。VVB是一种极极为灵活的高高级语言,因因而在这种方方法下可以方方便地引入汇汇编语言的思思维,利用其其GoTo转转向语句方便便地控制程序序的流程。非非常灵活方便便。 与通信线程程法的比较 通信线线程法通过在在应用程序的的主线程外再再创建一个通通信线程来监监视通信设备备,其最大优优点是程序对对接收数据具具有自主觉察察能力。一旦旦通

21、信线程查查询到数据已已发送到串口口上,线程自自动向应用程程序发送一个个数据接收到到的消息,应应用程序可用用该消息来读读取通信设备备传来的数据据。并且使用用通信线程还还不占用CPPU时间。这这样系统实际际上具有了同同时控制多个个通信设备(如如MODEMM)的能力。通通信线程法在在C+的开开发系统中用用得较多,这这与C+的的特点和优势势密切相关。由由于VB自身身的特点,创创建通信线程程的方法对VVB而言,实实现上有相当当的难度。而而且这样做,也也无异于牺牲牲VB的简单单方便性而去去迁就程序的的复杂性,很很不经济。串串口查询法容容易地引入了了汇编语言的的一些思维,实实现了最精简简的程序代码码。它不一

22、定定是最完善,但但对一般VBB程序员来说说,这种方法法确实达到了了简化思路和和降低难度的的目的,因而而实现简单。 SPCP通通信协议设计计以下设计的串口口通信协议用用于完成本文文双机互联程程序的文件传传输功能,简简称为SPCCP(Serrial PPort CCommunnicatiion Prrotocool)。SPPCP设计思思想基于帧传传输方式,即即在向串口发发送数据时是是一帧一帧地地发送。对于于上层应用(如如文件传输)来来说,应用程程序所发送的的和所接收的的都是流式数数据,即如果果应用程序需需要进行上层层的协议解释释的话,它将将面对这些流流数据的重新新拼装。为保保证可靠的传传输,在传输

23、输开始前,通通过握手建立立连接与TCCP/IP协协议类似。 串行通信协协议 异步通信协协议的实例起止式异异步协议图3.1. 起起止式异步协协议特点与格式:起止式异步协议议的特点是一一个字符一个个字符传输,并并且传送一个个字符总是以以起始位开始始,以停止位位结束,字符符之间没有固固定的时间间间隔要求。其其格式如图33.1所示。每每一个字符的的前面都有一一位起始位(低低电平,逻辑辑值0),字字符本身有557位数据据位组成,接接着字符后面面是一位校验验位(也可以以没有校验位位),最后是是一位,或者者一位半,或或二位停止位位,停止位后后面是不定长长度的空闲位位。停止位和和空闲位都规规定为高电平平(逻辑

24、值11),这样就就保证起始位位开始处一定定有一个下跳跳沿。从图中可以看出出,这种格式式是靠起始位位和停止位来来实现字符的的界定或同步步的,故称为为起始式协议议。传送时,数数据的低位在在前,高位在在后,图3.2表示了传传送一个字符符E的ASCCAII码的的波形10110001。当当把它的最低低有效位写到到右边时,就就是E的ASSCII码110001001=45HH。图3.2 AASCAIII码的波形起止位的作用用:起始位实实际上是作为为联络信号附附加进来的,当当它变为低电电平时,告诉诉收方传送开开始。它的到到来,表示下下面接着是数数据位来了,要要准备接收。而而停止位标志志一个字符的的结束,它的的

25、出现,表示示一个字符传传送完毕。这这样就为通信信双方提供了了何时开始收收发,何时结结束的标志。传传送开始前,发发收双方把所所采用的起止止式格式(包包括字符的数数据位长度,停停止位位数,有有无校验位以以及是奇校验验还是偶校验验等)和数据据传输速率作作统一规定。传传送开始后,接接收设备不断断地检测传输输线,看是否否有起始位到到来。当收到到一系列的“11”(停止位位或空闲位)之之后,检测到到一个下跳沿沿,说明起始始位出现,起起始位经确认认后,就开始始接收所规定定的数据位和和奇偶校验位位以及停止位位。经过处理理将停止位去去掉,把数据据位拼装成一一个并行字节节,并且经校校验后,无奇奇偶错才算正正确的接收

26、一一个字符。一一个字符接收收完毕,接收收设备有继续续测试传输线线,监视“00”电平的到到来和下一个个字符的开始始,直到全部部数据传送完完毕。由上述述工作过程可可看到,异步步通信是按字字符传输的,每每传输一个字字符,就用起起始位来通知知收方,以此此来重新核对对收发双方同同步。若接收收设备和发送送设备两者的的时钟频率略略有偏差,这这也不会因偏偏差的累积而而导致错位,加加之字符之间间的空闲位也也为这种偏差差提供一种缓缓冲,所以异异步串行通信信的可靠性高高。但由于要要在每个字符符的前后加上上起始位和停停止位这样一一些附加位,使使得传输效率率变低了,只只有约80%。因此,起起止协议一般般用在数据速速率较

27、慢的场场合(小于119.2kbbit/s)。在在高速传送时时,一般要采采用同步协议议。 面向字符的的同步协议特点与格式:这这种协议的典典型代表是IIBM公司的的二进制同步步通信协议(BSC)。它它的特点是一一次传送由若若干个字符组组成的数据块块,而不是只只传送一个字字符,并规定定了10个字字符作为这个个数据块的开开头与结束标标志以及整个个传输过程的的控制信息,它它们也叫做通通信控制字。由由于被传送的的数据块是由由字符组成,故故被称作面向向字符的协议议。 特定字字符(控制字字符)的定义义:由上面的的格式可以看看出,数据块块的前后都加加了几个特定定字符。SYYN是同步字字符(synnchronno

28、us CCharaccter),每每一帧开始处处都有SYNN,加一个SSYN的称单单同步,加两两个SYN的的称双同步设设置同步字符符是起联络作作用,传送数数据时,接收收端不断检测测,一旦出现现同步字符,就知道是一一帧开始了。接接着的SOHH是序始字符符(Starrt Of Headeer),它表表示标题的开开始。标题中中包括源地址、目的的地址和路由由指示等信息息。STX是是文始字符(Startt Of TText),它它标志着传送送的正文(数数据块)开始始。数据块就就是被传送的的正文内容,由由多个字符组组成。数据块块后面是组终终字符ETBB(End Of Trransmiissionn Blo

29、cck)或文终终字符ETXX(End Of Teext),其其中ETB用用在正文很长长、需要分成成若干个分数数据块,分别在不同同帧中发送的的场合,这时时在每个分数数据块后面用用文终字符EETX。一帧帧的最后是校校验码,它对对从SOH开开始到ETXX(或ETBB)字段进行行校验,校验验方式可以是是纵横奇偶校校验或CRCC。另外,在在面向字符协协议中还采用用了一些其他他通信控制字字,它们的名名称如下表所所示:表3.1 通通信控制字名称ASCIIEBCDIC序始(SOH)00000011000000001文始(STX)00000100000000110组终(ETB)00101111001001110

30、文终(ETX)00000111000000111同步(SYN)00101100001100110送毕(EOT)00001000001101111询问(ENQ)00001011001011001确认(ACK)00001100001011110否认(NAK)00101011001111001转义(DLE)00100000000100000数据透明的实现现:面向字符符的同步协议议,不象异步步起止协议那那样,需要在在每个字符前前后附加起始始和停止位,因因此,传输效效率提高了。同同时,由于采采用了一些传传输控制字,故故增强了通信信控制能力和和校验功能。但但也存在一些些问题,例如如,如何区别别数据字符代代

31、码和特定字字符代码的问问题,因为在在数据块中完完全有可能出出现与特定字字符代码相同同的数据字符符,这就会发发生误解。比比如正文有个个与文终字符符ETX的代代码相同的数数据字符,接接收端就不会会把它当作为为普通数据处处理,而误认认为是正文结结束,因而产产生差错。因因此,协议应应具有将特定定字符作为普普通数据处理理的能力,这这种能力叫做做“数据透明明”。为此,协协议中设置了了转移字符DDLE(Daata Liink Esscape)。当把一个个特定字符看看成数据时,在在它前面要加加一个DLEE,这样接收收器收到一个个DLE就可可预知下一个个字符是数据据字符,而不不会把它当作作控制字符来来处理了。D

32、DLE本身也也是特定字符符,当它出现现在数据块中中时,也要在在它前面加上上另一个DLLE。这种方方法叫字符填填充。字符填填充实现起来来相当麻烦,且且依赖于字符符的编码。正正是由于以上上的缺点,故故又产生了新新的面向比特特的同步协议议。 面向比特的的同步协议特点与格式:面面向比特的协协议中最具有有代表性的是是IBM的同同步数据链路路控制规程SSDLC(SSynchrronouss Dataa Linkk Conttrol),国际标准化化组织ISOO(Inteernatiional Standdard OOrganiizatioon)的高级级数据链路控控制规程HDDLC(Hiigh Leevel

33、DData llink CControol),美国国国家标准协协会(Ameericall Natiional Standdard IInstittute)的的先进数据通通信规程ADDCCP(AAdvancced Daata Coommuniicatioon Conntrol Proceedure)。这些协议议的特点是所所传输的一帧帧数据可以是是任意位,而而且它是靠约约定的位组合合模式,而不不是靠特定字字符来标志帧帧的开始和结结束,故称“面面向比特”的的协议。这中中协议的一般般帧格式如图图所示:-图4.2 帧帧格式帧信息的分段:由图4.22可见,SDDLC/HDDLC的一帧帧信息包括以以下几个场

34、(Filedd),所有场场都是从有效效位开始传送送。(1)SDLCC/HDLCC标志字符:SDLC/HDLC协协议规定,所所有信息传输输必须以一个个标志字符开开始,且以同同一个字符结结束。这个标标志字符是011111110,称称标志场(FF)。从开始始标志到结束束标志之间构构成一个完整整的信息单位位,称为一帧帧(Framme)。所有有的信息是以以帧的形传输输的,而标志志字符提供了了每一帧的边边界。接收端端可以通过搜搜索“0111111100”来探知帧帧的开头和结结束,以此建建立帧同步。(2)地址场和和控制场:在在标志场之后后,可以有一一个地址场AA(Addrress)和和一个控制场场C(Con

35、ntrol)。地址场用用来规定与之之通信的次站站的地址。控控制场可规定定若干个命令令。SDLCC规定A场和和C场的宽度度为8位或116位。接收收方必须检查查每个地址字字节的第一位位,如果为“00”,则后面面跟着另一个个地址字节;若为“1”,则则该字节就是是最后一个地地址字节。同同理,如果控控制场第一个个字节的第一一位为“0”,则则还有第二个个控制场字节节,否则就只只有一个字节节。(3)信息场:跟在控制场场之后的是信信息场I(IInformmationn)。I场包包含有要传送送的数据,并并不是每一帧帧都必须有信信息场。即信信息场可以为为0,当它为为0时,则这这一帧主要是是控制命令。(4)帧校验信

36、信息:紧跟在在信息场之后后的是两字节节的帧校验,帧帧校验场称为为FC(Frrame CCheck)场或称为帧帧校验序列FFCS(Frrame ccheck Squennce)。SSDLC/HHDLC均采采用16位循循环冗余校验验码CRC(CCyclicc Reduundanccy Codde)。除了了标志场和自自动插入的“00”以外,所所有的信息都都参加CRCC计算。实际应用时的两两个技术问题题:(1)“0”位位插入/删除除:如上所述述,SDLCC/HDLCC协议规定以以011111110为标标志字节,但但在信息场中中也完全有可可能有同一种种模式的字符符,为了把它它与标志区分分开来,所以以采取

37、了“00”位插入和和删除技术。具具体作法是发发送端在发送送所有信息(除除标志字节外外)时,只要要遇到连续55个“1”,就就自动插入一一个“0”,当当接收端在接接收数据时(除除标志字节)如如果连续收到到5个“1”,就就自动将其后后的一个“00”删除是,以以恢复信息的的原有形式。这这种“0”位位的插入和删删除过程是由由硬件自动完完成的。(2)SDLCC/HDLCC异常结束:若在发送过过程中出现错错误,则SDDLC/HDDLC协议常常用异常结束束(Aborrt)字符,或或称为失效序序列使本帧作作废。在HDDLC规程中中,7个连续续的“1”被被作为失效字字符,而在SSDLC中失失效字符是88个连续的“

38、11”。当然在在试销序列中中不使用“00”位插入/删除技术。SSDLC/HHDLC协议议规定,在一一帧之内不允允许出现数据据间隔。在两两帧之间,发发送器可以连连续输出标志志字符序列,也也可以输出连连续的高电平平,它被称为为空闲(Iddle)信号号。 SPCP协协议的发送格格式 01/2D1D2D3D4D5D6D7D83数据尾头标志数据类数据尾头标志数据类发送过程中的约约定:当收信信方收到0时时为开始发送送的开始标志志,在此之后后又收到1则则表示是文本本文件,如果果收了2则表表示是文件类类型,当收到到3时则表示示发送完毕。串口发送过来的的数据作为一一个数据流按按SPCP协协议进行处理理,并加上控

39、控制字符进行行发送;在接接收端,根据据接收到的数数据进行处理理,接收完成成后在发送到到显示窗口。 双机互联程程序的实现 创建标准的的项目文件创建一个基于标标准.EXEE的项目,打打开 Vissual BBasic,从从“ 文件”菜单中选择择“新建工程”,然后选择择建立标准.EXE项目目即可。图4.1新建工工程对话框 加入串口通通信控件默认的控件工具具栏中没有MMSCommm控件,因此此首先要把它它加入到控件件工具栏中。为为了在实现文文件传送功能能时能够方便便地选择文件件路径,还应应添加一个标标准对话框,这这在默认的控控件工具栏中中也是没有的的。选择“Projeect”菜单下的“ Comppon

40、entts ”选项,在弹弹出的对话框框中选取“contrrols”选项卡,选选中“ Miccrosofft Commm Conntrol 6.0”和“ Micrrosoftt Commmon Diialog Contrrol 6.0 ”,单击“确定”按钮将它们们加入到控件件工具栏中来来,这时就可可以看到控件件工具栏出现现 MSCoomm控件图图标(形状与与电话相似)和和标准对话框框控件图标。图4.2 外接接程序管理器器 设计程序主主窗体主窗体的功能分分析本文的程序仅包包含两个窗体体,即主窗体体和参数设置置窗体。参数数设置仅完成成对MSCoomm进行参参数设置,其其他功能几乎乎均从主窗体体中进行

41、响应应。本文将完完成以下功能能:整个程序的初初始化。对各标志变量量的设置与响响应。对各个按钮的的响应。短语的输入功功能。程序的主界面应应当能够响应应各种操作,并并调用程序的的各个模块和和功能,因此此,主界面主主要实现的功功能就是调用用本系统的所所有其他功能能,包括打开开串行口、关关闭串行口、启启动参数设置置、发送消息息、或显示文文件传送界面面等功能。本程序的基本功功能是依靠MMSCommm控件实现的的,首先要将将其添加到窗窗体中,由于于该控件在程程序运行时是是不可见的,我我把它们放在在窗体的底部部即可。同样样,标准对话话框控件也只只需放在窗体体底部即可。为为了实现对串串行口的操作作,我利用组组

42、合框定制了了一个简单的的选择框,和和两个按钮来来实现对串口口设置能改变变到程序中和和能将收到的的信息清空以以保证能把接接下来收到的的信息显示在在窗口上,当当在发送文件件时会显示发发送信息内容容及文件路径径。主窗体的界面设设计窗体及其控件的的主要属性和和作用如表所所示:表4.1ffrmMaiin 窗体及及其控件的主主要属性和作作用名称控件类型主要属性主要属性frmMainnFormCaptionn=双机互联联标题栏显示程序序CtrMSCoommMSCommSettinggs和CommmPortt两属性运行行时设置用于操作串行口口的控序控制制启用和关闭闭SendDattaCommanddButto

43、onCaptionn=发送控制发送一条消消息rtfReceeiveRichTexxtBox显示信息记录CmdSenddTextCommanddButtoonCaptionn=发送文件件选择发送文件SendFilleDiallOle调用发送对话框框cboBauddComboBooxList=96600,2440012000设置波特率cboDataaComboBooxList=8、77、6设置数据位cboStoppComboBooxList=1设置停止位cboOutBBufferrSizeComboBooxList=2556、5122、10244、20466设置缓冲区cboComPPortComb

44、oBooxList=1,2,3,44设置串口号SettinggOkCommanddButtoonCaptionn=打开串口口设置打开串口CommPorrtClosseCommanddButtoonCaptionn=关闭串口口设置关闭串口SaveFilleDiallOle调用保存对话框框frmMainn 窗体的设设计界面如图图所示:图4.3 整体体控件图图4.4 主窗窗体左上部分负责聊聊天功能(收收短信息),右右下部分负责责信息的发送送,“发送“按钮实现文文本的发送,“发送文件“按钮,实现文件传输功能。右上方的几个选择框可以实现配置串口参数功能,按钮分别完成打开串口、关闭串口。如果需要发送文文件

45、,点击“发送文件”按钮,将自自动弹出文件件对话框,从从中选择待发发送文件,则则程序在互联联的另一方发发送文件请求求接收时自动动打开文件对对话框,要求求用户选择文文件保存路径径和名称,然然后将文件保保存。系统的加构方式式所示。程序间交换数据发送端应用程接收端应用 程序间交换数据发送端应用程接收端应用文件传输短信息其它其它短信息文件传输文件传输短信息其它其它短信息文件传输缓冲区spcp串口通信协议SPCP串行通讯协议缓冲区spcp串口通信协议SPCP串行通讯协议缓冲区spcp串口通信协议SPCP串行通讯协议缓冲区spcp串口通信协议SPCP串行通讯协议omm控件Windows APIomm控件Wi

46、ndows APIindows APIomm控件Windows APIindows API串行口串行口串行口串行口串口线本系统中关注的的重点是SPPCP协议的的设计和实现现,而建立在在SPCP协协议上的两种种上层应用,文文件传输和短短信息传输则则是程序的主主要目标。 程序的测试试与运行 软件及硬件件测试本程序的测试运运行需要把两两台计算机用用串口线连接接起来进行,或或者在把一台台机器上的两两个串行口连连接起来,本本论文采用的的是前一种方方式。 发送消息时时发送方和收信方方见下图。图5.1 发送送方窗口输入中文“044级通信工程程毕业设计”点“发送”收信方窗口口如图5.22:图5.2 收信信方窗

47、口同时发送方也可可以作为接受受方,例如输输入中文“于向阳”点“发送”如图5.11。 发送文件时时当发送方选定文文件路径即文文件名后,接接收端将弹出出一个标准的的“另存为”对话框由接接收方选择存存盘路径,如如果所选择的的路径指向的的文件已存在在,则程序会会询问是否覆覆盖原有的文文件,确定后后即可开始接接收。图5.3 选选择要发送的的文件图5.4 发发送方窗口图5.4 保保存收到的文文件图5.5 收收信方窗口至此,完成了双双机通信程序序的发送消息息和发送文件件两个功能,达达到了预期的的效果。 总结随着计算机应用用领域的不断断扩展,计算算机之间的远远程通信用得得也越来越广广泛。作为RRAD开发工工具

48、代表的VVisuallBasicc同样提供了了一系列标准准通信命令的的接口,它允允许建立串口口连接,可以以连接到其他他通信设备(如如Modemm)、还可以以发送命令、进进行数据交换换以及监视和和响应在通信信过程中可能能发生的各种种错误和事件件等,可以满满足通常情况况下的串口通通信需求。如如果在实际应应用过程中,能能够很好的掌掌握MSCoomm控件的的特性,灵活活变通,就可可以达到安全全、稳定、高高效通信的目目的。在本文中,以控控件作为底层层接口,在此此基础上建立立了一个简单单的串行通信信协议SPCCP,并由此此实现了实时时通信和文件件传输功能。当然还有一些缺点,比如文件传输效率较低,安全性也较

49、差,由于是做聊天和数据的传输,为了减少传输的负担,就没有设置校验位,还有待于进一步的完善和优化。附录(1)相关代码码Dim RHeead, RRType, One, IsSttr As BooleeanDim RSttr, Seendstrr As SStringgDim b(00 To 11) As ByteDim strrSet AAs Strring Dim inttPort As Loong Dim inttOutBuuffer As Loong Privatee Sub OpenPPort_CClick() If frmMaain.cttrMSCoomm.PoortOpeen = F

50、False Then Calll CommmPortOOpen Senddstr = 设置:打开串行口口! Elsse Senddstr = 设置:串行口已经经打开! Endd IfEnd SubbPrivatee Sub ClearrRecV_Clickk()RecV.Teext = End SubbPrivatee Sub CommPPortCllose_CClick() If ctrMSSComm.PortOOpen = Truee Thenn ctrMMSCommm.PorttOpen = Fallse Sendsstr = MsgBoox(串行行口已关闭!, 0 + vbEExcla

51、mmationn) Elsse Senddstr = MsgBBox(串串行口已关闭闭!, 00 + vbbExclaamatioon) Endd IfEnd SubbPrivatee Sub Form_Load()If ctrMMSCommm.PorttOpen = Truue Theen ctrMMSCommm.PorttOpen = FallseEnd IfRecV.Loocked = Truue RecvHeaad = FFalse RecvTyppe = FFalseOne = FFalseIsStr = FalsseRStr = SaveFilleDiall.CanccelErrr

52、or = TrueSendFilleDiall.CanccelErrror = TrueEnd SubbPrivatee Sub ctrMSSComm_OnCommm()Dim ReecVStrr As SStringgIf ctrMMSCommm.PorttOpen = Truue TheenDim ReccVBytee() Ass ByteeDim ReccvLen, i Ass InteegerOn Erroor GoTTo ErrrorHanndlerRecVBytte = cctrMSCComm.IInputFor i = LBouund(ReecVBytte) Too UBouun

53、d(ReecVBytte) If RHeadd Thenn If RRType Then If IssStr TThen IIf ReccVBytee(i) = 3 Thhen ReecV.Teext = RecV.Text & 收到到: & RStr & vbbCrLf RSStr = RHHead = Falsse RTType = Falsse IssStr = Falsse Onne = FFalse EElse Iff One Then b(11) = RRecVByyte(i) RSttr = RRStr & StrCConv(bb, vbUUnicodde) Onee = Faa

54、lse Ellse If RecVBByte(ii) 1127 Thhen b(0) = ReecVBytte(i) One = Truue Elsse RStrr = RSStr & Chr(RRecVByyte(i) Endd If Ennd If EEnd Iff Else IIf ReccVBytee(i) = 3 Thhen ReecV.Teext = RecV.Text & 现在在收到文件请请选择保存路路径: & vbCrrLf SaaveFilleDiall.FileeName = Daata.Txxt SaaveFilleDiall.DiallogTittle = 保存文件件

55、SaaveFilleDiall.DefaaultExxt = Txt SaaveFilleDiall.Filtter = *.txxt|*.ttxt|*.*|*.* SaaveFilleDiall.Actiion = 2 Oppen SaaveFilleDiall.FileeName For OOutputt As #2 Prrint #2, RSStr ReecV.Teext = RecV.Text & 收到到文件保存在在: & SaveFFileDiial.FiileNamme & vvbCrLff Cllose #2 RSStr = RHHead = Falsse RTType = Fa

56、lsse IssStr = Falsse Onne = FFalse EElse Iff One Then b(11) = RRecVByyte(i) RSttr = RRStr & StrCConv(bb, vbUUnicodde) Onee = Faalse Ellse If RecVBByte(ii) 1127 Thhen b(0) = ReecVBytte(i) One = Truue Elsse RStrr = RSStr & Chr(RRecVByyte(i) Endd If Ennd If EEnd Iff End IIf Elsee If ReecVBytte(i) = 1 T

57、Then RRType = Truue IIsStr = Truue ElseIIf ReccVBytee(i) = 2 Thhen SaveFFile.EEnableed = TTrue RRType = Truue IIsStr = Fallse Else RRHead = Fallse End IIf End If Elsse If RRecVByyte(i) = 0 Then RHeadd = Trrue End If Endd IfNext iErrorHaandlerr:Select Case Err.NNumberrCase 322755 ReccV.Texxt = RRecV.

58、TText & 你没有有保存收到的的文件! & vbCCrLf RSttr = RHeead = Falsee RTyype = Falsee IsSStr = Falsee Onee = FaalseEnd SellectElse MsggBox (请打开串串口)End IfEnd SubbPrivatee Sub SendDData_CClick()Dim strr() Ass ByteeSendstrr = Chhr(0) + Chrr(1) + SenddD.Texxt + CChr(133) + CChr(100) + CChr(3) str = SStrConnv(Senndstr

59、, vbFrromUniicode) ctrMSCoomm.Ouutput = strr End SubbPrivatee Sub SendFFile_CClick()Dim InpputDatta, Seendstrr As SStringgDim SenndDataa() Ass ByteeSendFilleDiall.FileeName = Daata.TxxtSendFilleDiall.DefaaultExxt = TxtSendFilleDiall.Filtter = *.txxt|*.ttxt|*.*|*.*On Erroor GoTTo ErrrorHanndlerSendFi

60、lleDiall.Actiion = 1Sendstrr = Open SeendFilleDiall.FileeName For IInput As #11Do Whille Nott EOF(1) Linne Inpput #11, InpputDatta Senndstr = Senndstr + InpputDatta + vvbCrLff LoopClose #1Sendstrr = Chhr(0) + Chrr(2) + Senddstr + Chr(3) SendDatta = SStrConnv(Senndstr, vbFrromUniicode) ctrMSCoomm.Ouu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论