基于spcp技术串口实现双机通信.docx
《基于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),它标志着传送的正文(数据块)开始。数据块就是被传送的正文内容,由多个字符组成。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 spcp 技术 串口 实现 双机 通信
链接地址:https://www.31ppt.com/p-1688223.html