文档介绍:RCC串口通讯协议•介绍 3•本文目标 3•读者要求 3•系统构造图 串口通讯协议概要说明 串口通讯协议详细说明 5帧格式 . 、检测帧、检测应答帧、ABORTM系统借谋帧格式 562处理流程 6数据分帧及数据重组 . 7数据接收流程. 状态 帧类别 内部结构图 9重要数据结构、宏定义、消息及函数 1072数据处理模块 12初始化/设置模块 12状态查询模块 12消息处理模块 12内部处理函数 串口读写线程及发送接收函数算法描述 13串口读线程 13串口写线程 1482发送函数 14接收函数 可靠性分析 179」对等通讯可靠性 速度分析及可扩充性 速度分析 可扩充性 19102丄协议集扩充. 19参数协商. ■压缩数据方式: : 2011•附录(APPENDIX) (Reference) 201•介绍串口通讯在客户端/服务器类型的应用程序设计屮经常要使用到,目前串口通讯采用的—•般是专用软件包或者标准串口通讯协议(如XMODEM、ZMODEM等),这样完整详细且免费的软件包比鮫少,M的基础Z上建立了本文所描述的串口通讯协议,(munication),其主要目标是在用串口i!t行通讯的客八端/服务器双方建立一条可靠的通讯链路,就象TCP(RFC793)一样。该协议的目前的开发是采用VC++,应用平台为WIN95/NT,协议的本身不受具体编程语言及操作系统所限制,•串口通讯协议设计思路以及其详细设计说明,还冇相关的串口通讯技术(WIN95/NT)O•读者要求熟悉串口通讯方式熟悉WIN95/NT线程机制及界步文件调用方式对VC++有一定的了解一般协议的描述方式•系统构造图系统构架如下方式:串口通讯协议 ,即在向MODEM(RS232)发送数据时是一帧一帧地发送,对于应用程序来讲,应用程序所发送的和所接收的都是流式数据,即如果应用程序需要进行上层的协议解释的话,它将而对这些流数据的更新拼装。为保证可靠的传输,进行数据传输时,采用发送/应答/握手/失败方式,即发送一帧数据,一个应答,若应答没收到,重新进行协商握手,握手失败则向应用程序报告错误。进行实际的应用程序设计时,进行串口初始化操作,在串口初始化成功时,_CONNECT向应用程序报告,此吋一条通讯链路建立完毕。应用程序开始发送数据,这是通过Send调用实现的,RCC根据内部缓冲区的人小决定真正可发送的数据最返回给应用程序,数据将被存储在内部缓冲区内(此缓冲区人小可由应川程序调节),RCC将内部缓冲区的数据分割成一帧一帧,每一帧将调川内部线程通过WIN95/NT向MODEM/RS232发送数据,当数据金部发送完毕(即内部缓冲区为空),_WRITE消息表示数据全部发送完毕,应用程序将可继续发送余下的数据,在接收方,如果数据到达了,由WIN95/,接收到达的数据,当到达一帧时,对到达的数据进行解包,若发生错谋则通过指定方式进行重发或协商ABORT,当通讯能继续则不向应用程序发送任何消息,继续保持链路,若通讯不能继续,则ABORT此链路,_ERROR的消息,应用程序将重新RESET此链路或进行其它相应的处理。当数据被解包到内部缓冲区吋,_READ消息到应用程序,表示数据可用了,应用程序将调用Receive接收相应的数据(注意此时的数据并不是发送时的数据,而是被割成一帧一帧的),也可通过相应的调用查询所接收到的数据最。另外当有任何一方断开链接,_CLOSE消息,表示此链路己经断开(MODEM挂机)。,其中对于任何帧而言,帧头固定为八个字节,若该帧类型需要数据才有数据区,否则只有帧头。•数据帧格式帧头标志版本号类別帧头校验和帧号数据总长度保留数据CRC校验数据区数据区帧头标志(1Byte),串口通讯协议,为字母0x12。版本号(4Bit)数据帧的版本号,目両为零,意为零版类别(4Bit),此帧的类别,目前冇四种类别,0表示数据帧,1表示应答帧,2检测帧(用于检测对方是否在线),3为检测应答帧,4为ABORT帧,5为系统错误帧(接收方发出通讯底层系统错误,指示对方发送刚发送的任何一帧,包括应答帧、检测帧、检测应答帧),其它帧类别目前保留。头校验和(lByte),Checksum是对帧头八个字节进行的校验,类似于IP协议帧头,只是对帧头另外七个字节的累加,填入。帧号(lByte),帧号是发送的顺序号,可用值为1-255,0保留用作其它用途CRC检验是指对整个数据区进行的CRC校验,首先将此域清为零,然后生成CRC校验填入,