基于spcp技术串口实现双机通信.docx

上传人:小飞机 文档编号:1688223 上传时间:2022-12-14 格式:DOCX 页数:47 大小:354.92KB
返回 下载 相关 举报
基于spcp技术串口实现双机通信.docx_第1页
第1页 / 共47页
基于spcp技术串口实现双机通信.docx_第2页
第2页 / 共47页
基于spcp技术串口实现双机通信.docx_第3页
第3页 / 共47页
基于spcp技术串口实现双机通信.docx_第4页
第4页 / 共47页
基于spcp技术串口实现双机通信.docx_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《基于spcp技术串口实现双机通信.docx》由会员分享,可在线阅读,更多相关《基于spcp技术串口实现双机通信.docx(47页珍藏版)》请在三一办公上搜索。

1、目 录摘要IIIAbstractV第一章 串行通信的介绍11.1 串行通信方式11.2 串行通信的传送方向21.3 串行输入/输出21.4 串行接口标准2第2章 串口编程技术52.1 串口实现双机互联系统功能概述52.2 VB串口查询法的实现方法5第3章 SPCP通信协议设计93.1 串行通信协议93.2 SPCP协议的发送格式13第4章 双机互联程序的实现154.1 创建标准的项目文件154.2 加入串口通信控件154.3 设计程序主窗体16第5章 程序的测试与运行215.1 软件及硬件测试215.2 总结24附录25串口实现双机通信摘要计算机串口编程在通信软件中有着十分广泛的应用,如电话、

2、传真、视频和控制等。很多行业会涉及到串口通信技术。串行通信中分为异步通信和同步通信两种基本串行通信方式,串行通信在两个设备之间传输,有单工、半双功、全双工三种形式。在本论文中,串口实现双机互联是通过串口线直接连接两台计算机,按照自定义的串口通信协议(简称为SPCP)进行信息交换。通过VB中MSComm控件处理底层串口通信细节,根据自定义串口通信协议建立连接,实现聊天和文件传输功能。关键字:VB,串口通信,SPCP,数据交换。Vserial communicationAbstractSerial computer programming in the communications softwar

3、e has a very wide range of applications, such as telephone, fax, video and control. Many industries would involve serial communication technologies. Serial communication is divided into asynchronous communications and synchronous communication are two basic serial communication, serial communication

4、 between the two transmission equipment, a single-workers, half-duplex, full-duplex three forms.In this paper, to achieve double-serial-line Internet directly through the serial port to connect two computers, in accordance with the custom of serial communication protocol (referred to as SPCP) for in

5、formation exchange. VB MSComm control through treatment in the bottom of serial communication details, according to custom serial communication protocol to connect, and chat and file transfer feature.Keyword: VB, serial communication, SPCP, data exchange.第一章 串行通信的介绍1.1 串行通信方式 在计算机与外设之间的信息传送中,按照一次传送数

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

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

8、同步:发送方先传送1个同步字符,再传送数据块,接收方检测到同步字符后接收数据;双同步:发送方先传送2个同步字符,再传送数据块,接收方检测到同步字符后接收数据;外同步:用一条专用线来传送同步字符,以实现收发双方同步操作。三种同步方式,均以2个字节的冗余检验码CRC作为一帧信息的结束。面向位型:根据IBM的同步数据链路控制规程SDLC,SDLC数据格式,同步传送,接收和发送时钟对于收/发双方之间的数据传送达到同步是至关重要的。在发送方,一般都是在发送时钟的下降沿将数据串行移位输出;在接收方,一般都是在接收时钟的上升沿将数据串行移位输入。1.2 串行通信的传送方向 串行通信在两个站(或设备)A和B之

9、间传送,有单工、半双工、全双工三种形式。 单工:仅能进行一个方向的传送,即A只能作为发送器,B只能作为接收器; 半双工: 能交替地进行双向数据传送,但两设备之间只有一根传输线,因此两个方向的数据传送不能同时进行; 全双工: A、B之间有两条传输线,能在两个方向上同时进行数据传送。1.3 串行输入/输出 串行输入的特点:串行数据传输中,每次只传送一位数据,速度比并行传输慢。但是,实现串行传输的硬件具有经济性和实用性的特点。 1.4 串行接口标准RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的.RS-232、RS-422与RS-485标准只

10、对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。 RS-232串行接口标准目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。收、发端的数据信号是相对于信号地.典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V,负电平在-5-15V电平。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3+12V与-3

11、-12V。由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k。所以RS-232适合本地设备之间的通信。 39第2章 串口编程技术在Microsoft Windows 下开发串行通信目前通常有如下几种方法:一是利用Windows API通信函数;二是利用 windows 的读写端口函数_inp、_inpw、_inpd、_outp、_outpw、_outpd、(Windows95系列下)或开发驱动程序(WindowsNT系列操

12、作系统下)直接对串口进行操作;三是利用第三方提供或自己编写的通信;四是使用串口通信组件,如ActiveX控件MSComm 。MSComm控件:(Microsoft Communication Control)是微软公司提供的简化windows下串口通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法,在VisualBasic、VC、Delphi等语言均可使用。以上几种方法中第一种使用面较广,但由于比较复杂,使用较困难;第二种需要了解硬件电路结构原理,深入驱动层次,专业化程度较高;第三种方法使用面向对象技术封装Win32API函数,提供一个用于串行通信的类,只要理解这种

13、类的几个成员函数,就能方便的使用,但能普遍应用的这种类相当困难;第四种方法较简单,对于 Visual Basic,常用的方法就是使用第四种方法。本文将用第四种方法实现双机通信。2.1 串口实现双机互联系统功能概述双机互联程序通过串口将两台计算机连接起来,按照自定义的串口通信协议(简称为SPCP)进行信息交换,实现通过串口进行聊天、文件和收发的功能。SPCP协议设计思想基于帧传输方式,即在向串口发送数据时是一帧一帧地发送。对于上层应用(如文件传输)来说,应用程序所发送的和所接收的都是流式数据,即如果应用程序需要进行上层的协议解释的话,它将面对的这些流数据重新拼装。为保证可靠的传输,在传输开始前,

14、通过协议建立连接。来确定是否要接收数据,是否保存等。2.2 VB串口查询法的实现方法2.2.1 串口查询法的机理 VB的串口查询法是一种主要工作在查询方式下的实现方法。当通信程序工作在“查询”方式时,可以不考虑Win95的进程和线程的问题。仅在串口有数据时,去读串口缓冲区就可以了。这种方法下确定串口读取的时机、握手协议及软件纠错的实现是程序员应考虑的主要问题。以下是读取接收缓冲区数据时的流程图:获取当前通信设备的数据缓冲区中有无数据读数据结束无有 由于这种方法主要工作在查询方式。程序员必须完成相当一部分通信状态的检测工作,许多细节(甚至包括通信过程中的字符属性的转换)也必须通过程序代码完成。因

15、而相比较通信控件方法而言,这种查询方法对通信双方协议的依赖性尤其大。双方通信协议的约定对程序实现的难易程度影响很大。串口查询法中,一般串口初始化的流程如下:设置设备控制块打开串口设置通信参数设置缓冲区大小值得注意的一点是,此方法下协议的约定必须满足以下条件:即甲方发送时,乙方必须在甲方发送动作之前进入循环接收状态,直到接收到字符后通过对串口读取函数ReadFile返回值的判断跳出循环状态。 同时,一般为了不使系统因循环等待接收而进入“死循环”状态,可以人为设置读取串口的循环次数,一般100010000次即可。VB是一种极为灵活的高级语言,因而在这种方法下可以方便地引入汇编语言的思维,利用其Go

16、To转向语句方便地控制程序的流程。非常灵活方便。2.2.2 与通信线程法的比较 通信线程法通过在应用程序的主线程外再创建一个通信线程来监视通信设备,其最大优点是程序对接收数据具有自主觉察能力。一旦通信线程查询到数据已发送到串口上,线程自动向应用程序发送一个数据接收到的消息,应用程序可用该消息来读取通信设备传来的数据。并且使用通信线程还不占用CPU时间。这样系统实际上具有了同时控制多个通信设备(如MODEM)的能力。通信线程法在C+的开发系统中用得较多,这与C+的特点和优势密切相关。由于VB自身的特点,创建通信线程的方法对VB而言,实现上有相当的难度。而且这样做,也无异于牺牲VB的简单方便性而去

17、迁就程序的复杂性,很不经济。串口查询法容易地引入了汇编语言的一些思维,实现了最精简的程序代码。它不一定是最完善,但对一般VB程序员来说,这种方法确实达到了简化思路和降低难度的目的,因而实现简单。第3章 SPCP通信协议设计以下设计的串口通信协议用于完成本文双机互联程序的文件传输功能,简称为SPCP(Serial Port Communication Protocol)。SPCP设计思想基于帧传输方式,即在向串口发送数据时是一帧一帧地发送。对于上层应用(如文件传输)来说,应用程序所发送的和所接收的都是流式数据,即如果应用程序需要进行上层的协议解释的话,它将面对这些流数据的重新拼装。为保证可靠的传

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

19、这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起始式协议。传送时,数据的低位在前,高位在后,图3.2表示了传送一个字符E的ASCAII码的波形1010001。当把它的最低有效位写到右边时,就是E的ASCII码1000101=45H。图3.2 ASCAII码的波形起止位的作用:起始位实际上是作为联络信号附加进来的,当它变为低电平时,告诉收方传送开始。它的到来,表示下面接着是数据位来了,要准备接收。而停止位标志一个字符的结束,它的出现,表示一个字符传送完毕。这样就为通信双方提供了何时开始收发,何时结束的标志。传送开始前,发收双方把所采用的起止式格式(包括字符的数据位长度,停止位位数,有

20、无校验位以及是奇校验还是偶校验等)和数据传输速率作统一规定。传送开始后,接收设备不断地检测传输线,看是否有起始位到来。当收到一系列的“1”(停止位或空闲位)之后,检测到一个下跳沿,说明起始位出现,起始位经确认后,就开始接收所规定的数据位和奇偶校验位以及停止位。经过处理将停止位去掉,把数据位拼装成一个并行字节,并且经校验后,无奇偶错才算正确的接收一个字符。一个字符接收完毕,接收设备有继续测试传输线,监视“0”电平的到来和下一个字符的开始,直到全部数据传送完毕。由上述工作过程可看到,异步通信是按字符传输的,每传输一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的

21、时钟频率略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以异步串行通信的可靠性高。但由于要在每个字符的前后加上起始位和停止位这样一些附加位,使得传输效率变低了,只有约80%。因此,起止协议一般用在数据速率较慢的场合(小于19.2kbit/s)。在高速传送时,一般要采用同步协议。3.1.2 面向字符的同步协议特点与格式:这种协议的典型代表是IBM公司的二进制同步通信协议(BSC)。它的特点是一次传送由若干个字符组成的数据块,而不是只传送一个字符,并规定了10个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信控制字。由于被传送的

22、数据块是由字符组成,故被称作面向字符的协议。 特定字符(控制字符)的定义:由上面的格式可以看出,数据块的前后都加了几个特定字符。SYN是同步字符(synchronous Character),每一帧开始处都有SYN,加一个SYN的称单同步,加两个SYN的称双同步设置同步字符是起联络作用,传送数据时,接收端不断检测,一旦出现同步字符,就知道是一帧开始了。接着的SOH是序始字符(Start Of Header),它表示标题的开始。标题中包括源地址、目的地址和路由指示等信息。STX是文始字符(Start Of Text),它标志着传送的正文(数据块)开始。数据块就是被传送的正文内容,由多个字符组成。

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

24、ETX)000001100000011同步(SYN)001011000110010送毕(EOT)000010000110111询问(ENQ)000010100101101确认(ACK)000011000101110否认(NAK)001010100111101转义(DLE)001000000010000数据透明的实现:面向字符的同步协议,不象异步起止协议那样,需要在每个字符前后附加起始和停止位,因此,传输效率提高了。同时,由于采用了一些传输控制字,故增强了通信控制能力和校验功能。但也存在一些问题,例如,如何区别数据字符代码和特定字符代码的问题,因为在数据块中完全有可能出现与特定字符代码相同的数据

25、字符,这就会发生误解。比如正文有个与文终字符ETX的代码相同的数据字符,接收端就不会把它当作为普通数据处理,而误认为是正文结束,因而产生差错。因此,协议应具有将特定字符作为普通数据处理的能力,这种能力叫做“数据透明”。为此,协议中设置了转移字符DLE(Data Link Escape)。当把一个特定字符看成数据时,在它前面要加一个DLE,这样接收器收到一个DLE就可预知下一个字符是数据字符,而不会把它当作控制字符来处理了。DLE本身也是特定字符,当它出现在数据块中时,也要在它前面加上另一个DLE。这种方法叫字符填充。字符填充实现起来相当麻烦,且依赖于字符的编码。正是由于以上的缺点,故又产生了新

26、的面向比特的同步协议。3.1.3 面向比特的同步协议特点与格式:面向比特的协议中最具有代表性的是IBM的同步数据链路控制规程SDLC(Synchronous Data Link Control),国际标准化组织ISO(International Standard Organization)的高级数据链路控制规程HDLC(High Level Data link Control),美国国家标准协会(Americal National Standard Institute)的先进数据通信规程ADCCP(Advanced Data Communication Control Procedure)。这

27、些协议的特点是所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称“面向比特”的协议。这中协议的一般帧格式如图所示:-图4.2 帧格式帧信息的分段:由图4.2可见,SDLC/HDLC的一帧信息包括以下几个场(Filed),所有场都是从有效位开始传送。(1)SDLC/HDLC标志字符:SDLC/HDLC协议规定,所有信息传输必须以一个标志字符开始,且以同一个字符结束。这个标志字符是01111110,称标志场(F)。从开始标志到结束标志之间构成一个完整的信息单位,称为一帧(Frame)。所有的信息是以帧的形传输的,而标志字符提供了每一帧的边界。接收端

28、可以通过搜索“01111110”来探知帧的开头和结束,以此建立帧同步。(2)地址场和控制场:在标志场之后,可以有一个地址场A(Address)和一个控制场C(Control)。地址场用来规定与之通信的次站的地址。控制场可规定若干个命令。SDLC规定A场和C场的宽度为8位或16位。接收方必须检查每个地址字节的第一位,如果为“0”,则后面跟着另一个地址字节;若为“1”,则该字节就是最后一个地址字节。同理,如果控制场第一个字节的第一位为“0”,则还有第二个控制场字节,否则就只有一个字节。(3)信息场:跟在控制场之后的是信息场I(Information)。I场包含有要传送的数据,并不是每一帧都必须有信

29、息场。即信息场可以为0,当它为0时,则这一帧主要是控制命令。(4)帧校验信息:紧跟在信息场之后的是两字节的帧校验,帧校验场称为FC(Frame Check)场或称为帧校验序列FCS(Frame check Squence)。SDLC/HDLC均采用16位循环冗余校验码CRC(Cyclic Redundancy Code)。除了标志场和自动插入的“0”以外,所有的信息都参加CRC计算。实际应用时的两个技术问题:(1)“0”位插入/删除:如上所述,SDLC/HDLC协议规定以01111110为标志字节,但在信息场中也完全有可能有同一种模式的字符,为了把它与标志区分开来,所以采取了“0”位插入和删除

30、技术。具体作法是发送端在发送所有信息(除标志字节外)时,只要遇到连续5个“1”,就自动插入一个“0”,当接收端在接收数据时(除标志字节)如果连续收到5个“1”,就自动将其后的一个“0”删除是,以恢复信息的原有形式。这种“0”位的插入和删除过程是由硬件自动完成的。(2)SDLC/HDLC异常结束:若在发送过程中出现错误,则SDLC/HDLC协议常用异常结束(Abort)字符,或称为失效序列使本帧作废。在HDLC规程中,7个连续的“1”被作为失效字符,而在SDLC中失效字符是8个连续的“1”。当然在试销序列中不使用“0”位插入/删除技术。SDLC/HDLC协议规定,在一帧之内不允许出现数据间隔。在

31、两帧之间,发送器可以连续输出标志字符序列,也可以输出连续的高电平,它被称为空闲(Idle)信号。3.2 SPCP协议的发送格式 01/2D1D2D3D4D5D6D7D83数据尾头标志数据类发送过程中的约定:当收信方收到0时为开始发送的开始标志,在此之后又收到1则表示是文本文件,如果收了2则表示是文件类型,当收到3时则表示发送完毕。串口发送过来的数据作为一个数据流按SPCP协议进行处理,并加上控制字符进行发送;在接收端,根据接收到的数据进行处理,接收完成后在发送到显示窗口。第4章 双机互联程序的实现4.1 创建标准的项目文件创建一个基于标准.EXE的项目,打开 Visual Basic,从“ 文

32、件”菜单中选择“新建工程”,然后选择建立标准.EXE项目即可。图4.1新建工程对话框4.2 加入串口通信控件默认的控件工具栏中没有MSComm控件,因此首先要把它加入到控件工具栏中。为了在实现文件传送功能时能够方便地选择文件路径,还应添加一个标准对话框,这在默认的控件工具栏中也是没有的。选择“Project”菜单下的“ Components ”选项,在弹出的对话框中选取“controls”选项卡,选中“ Microsoft Comm Control 6.0”和“ Microsoft Common Dialog Control 6.0 ”,单击“确定”按钮将它们加入到控件工具栏中来,这时就可以看

33、到控件工具栏出现 MSComm控件图标(形状与电话相似)和标准对话框控件图标。图4.2 外接程序管理器4.3 设计程序主窗体4.3.1 主窗体的功能分析本文的程序仅包含两个窗体,即主窗体和参数设置窗体。参数设置仅完成对MSComm进行参数设置,其他功能几乎均从主窗体中进行响应。本文将完成以下功能:整个程序的初始化。对各标志变量的设置与响应。对各个按钮的响应。短语的输入功能。程序的主界面应当能够响应各种操作,并调用程序的各个模块和功能,因此,主界面主要实现的功能就是调用本系统的所有其他功能,包括打开串行口、关闭串行口、启动参数设置、发送消息、或显示文件传送界面等功能。本程序的基本功能是依靠MSC

34、omm控件实现的,首先要将其添加到窗体中,由于该控件在程序运行时是不可见的,我把它们放在窗体的底部即可。同样,标准对话框控件也只需放在窗体底部即可。为了实现对串行口的操作,我利用组合框定制了一个简单的选择框,和两个按钮来实现对串口设置能改变到程序中和能将收到的信息清空以保证能把接下来收到的信息显示在窗口上,当在发送文件时会显示发送信息内容及文件路径。4.3.2 主窗体的界面设计窗体及其控件的主要属性和作用如表所示:表4.1frmMain 窗体及其控件的主要属性和作用名称控件类型主要属性主要属性frmMainFormCaption=双机互联标题栏显示程序CtrMSCommMSCommSettin

35、gs和CommPort两属性运行时设置用于操作串行口的控序控制启用和关闭SendDataCommandButtonCaption=发送控制发送一条消息rtfReceiveRichTextBox显示信息记录CmdSendTextCommandButtonCaption=发送文件选择发送文件SendFileDialOle调用发送对话框cboBaudComboBoxList=9600,24001200设置波特率cboDataComboBoxList=8、7、6设置数据位cboStopComboBoxList=1设置停止位cboOutBufferSizeComboBoxList=256、512、102

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

37、“发送文件”按钮,将自动弹出文件对话框,从中选择待发送文件,则程序在互联的另一方发送文件请求接收时自动打开文件对话框,要求用户选择文件保存路径和名称,然后将文件保存。系统的加构方式所示。程序间交换数据发送端应用程接收端应用 文件传输短信息其它其它短信息文件传输缓冲区spcp串口通信协议SPCP串行通讯协议缓冲区spcp串口通信协议SPCP串行通讯协议omm控件Windows APIindows APIomm控件Windows APIindows API串行口串行口串口线本系统中关注的重点是SPCP协议的设计和实现,而建立在SPCP协议上的两种上层应用,文件传输和短信息传输则是程序的主要目标。第

38、5章 程序的测试与运行5.1 软件及硬件测试本程序的测试运行需要把两台计算机用串口线连接起来进行,或者在把一台机器上的两个串行口连接起来,本论文采用的是前一种方式。5.1.1 发送消息时发送方和收信方见下图。图5.1 发送方窗口输入中文“04级通信工程毕业设计”点“发送”收信方窗口如图5.2:图5.2 收信方窗口同时发送方也可以作为接受方,例如输入中文“于向阳”点“发送”如图5.1。5.1.2 发送文件时当发送方选定文件路径即文件名后,接收端将弹出一个标准的“另存为”对话框由接收方选择存盘路径,如果所选择的路径指向的文件已存在,则程序会询问是否覆盖原有的文件,确定后即可开始接收。图5.3 选择

39、要发送的文件图5.4 发送方窗口图5.4 保存收到的文件图5.5 收信方窗口至此,完成了双机通信程序的发送消息和发送文件两个功能,达到了预期的效果。5.2 总结随着计算机应用领域的不断扩展,计算机之间的远程通信用得也越来越广泛。作为RAD开发工具代表的VisualBasic同样提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem)、还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件等,可以满足通常情况下的串口通信需求。如果在实际应用过程中,能够很好的掌握MSComm控件的特性,灵活变通,就可以达到安全、稳定、高效通信的目的。在本文

40、中,以控件作为底层接口,在此基础上建立了一个简单的串行通信协议SPCP,并由此实现了实时通信和文件传输功能。当然还有一些缺点,比如文件传输效率较低,安全性也较差,由于是做聊天和数据的传输,为了减少传输的负担,就没有设置校验位,还有待于进一步的完善和优化。附录(1)相关代码Dim RHead, RType, One, IsStr As BooleanDim RStr, Sendstr As StringDim b(0 To 1) As ByteDim strSet As String Dim intPort As Long Dim intOutBuffer As Long Private Sub

41、 OpenPort_Click() If frmMain.ctrMSComm.PortOpen = False Then Call CommPortOpen Sendstr = 设置:打开串行口! Else Sendstr = 设置:串行口已经打开! End IfEnd SubPrivate Sub ClearRecV_Click()RecV.Text = End SubPrivate Sub CommPortClose_Click() If ctrMSComm.PortOpen = True Then ctrMSComm.PortOpen = False Sendstr = MsgBox(串

42、行口已关闭!, 0 + vbExclamation) Else Sendstr = MsgBox(串行口已关闭!, 0 + vbExclamation) End IfEnd SubPrivate Sub Form_Load()If ctrMSComm.PortOpen = True Then ctrMSComm.PortOpen = FalseEnd IfRecV.Locked = True RecvHead = False RecvType = FalseOne = FalseIsStr = FalseRStr = SaveFileDial.CancelError = TrueSendFil

43、eDial.CancelError = TrueEnd SubPrivate Sub ctrMSComm_OnComm()Dim RecVStr As StringIf ctrMSComm.PortOpen = True ThenDim RecVByte() As ByteDim RecvLen, i As IntegerOn Error GoTo ErrorHandlerRecVByte = ctrMSComm.InputFor i = LBound(RecVByte) To UBound(RecVByte) If RHead Then If RType Then If IsStr Then

44、 If RecVByte(i) = 3 Then RecV.Text = RecV.Text & 收到: & RStr & vbCrLf RStr = RHead = False RType = False IsStr = False One = False Else If One Then b(1) = RecVByte(i) RStr = RStr & StrConv(b, vbUnicode) One = False Else If RecVByte(i) 127 Then b(0) = RecVByte(i) One = True Else RStr = RStr & Chr(RecVByte(i) End If End If

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号