- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RCC串口通信協议
RCC串口通讯协议
1.介绍 3
2.本文目标 3
3.读者要求 3
4.系统构造图 3
5.RCC串口通讯协议概要说明 4
6.RCC串口通讯协议详细说明 5
6.1.帧格式 5
6.1.1.数据帧格式 5
6.1.2.应答帧、检测帧、检测应答帧、ABORT帧、系统错误帧格式 5
6.2.处理流程 6
6.2.1.数据分帧及数据重组 6
6.2.2.数据发送流程 7
6.2.3.数据接收流程 7
6.3.RCC状态 7
6.4.RCC帧类别 8
7.RCC内部结构图 9
7.1.重要数据结构、宏定义、消息及函数 10
7.2.数据处理模块 12
7.3.初始化/设置模块 12
7.4.状态查询模块 12
7.5.消息处理模块 12
7.6.内部处理函数 13
8.RCC串口读写线程及发送接收函数算法描述 13
8.1.串口读线程 13
8.2.串口写线程 14
8.2.发送函数 14
8.3.接收函数 15
9.RCC可靠性分析 17
9.1 对等通讯可靠性 18
9.2 异常对方通讯可靠性 18
10.RCC速度分析及可扩充性 19
10.1.RCC速度分析 19
10.2.RCC可扩充性 19
10.2.1.协议集扩充 19
10.2.2.参数协商 20
10.2.3.压缩数据方式: 20
10.2.4.异步传输方式: 20
11.附录(Appendix) 20
10.1参考(Reference) 20
1.介绍
串口通讯在客户端/服务器类型的应用程序设计中经常要使用到,目前串口通讯采用的一般是专用软件包或者标准串口通讯协议(如XMODEM、ZMODEM等),这样完整详细且免费的软件包比较少,所以在SPCOMM的基础之上建立了本文所描述的串口通讯协议,称之为RCC(表示为Reliable Comm Communication),其主要目标是在用串口进行通讯的客户端/服务器双方建立一条可靠的通讯链路,就象TCP(RFC793)一样。该协议的目前的开发是采用VC++,应用平台为WIN95/NT,但作为RCC协议的本身不受具体编程语言及操作系统所限制,
2.本文目标
本文的目标在于描述RCC串口通讯协议设计思路以及其详细设计说明,还有相关的串口通讯技术(WIN95/NT)。
3.读者要求
熟悉串口通讯方式
熟悉WIN95/NT线程机制及异步文件调用方式
对VC++有一定的了解
一般协议的描述方式
4.系统构造图
系统构架如下方式:
5.RCC串口通讯协议概要说明
RCC串口通讯协议设计思想是基于帧传输方式,即在向MODEM(RS232)发送数据时是一帧一帧地发送,对于应用程序来讲,应用程序所发送的和所接收的都是流式数据,即如果应用程序需要进行上层的协议解释的话,它将面对这些流数据的重新拼装。为保证可靠的传输,在RCC进行数据传输时,采用发送/应答/握手/失败方式,即发送一帧数据,一个应答,若应答没收到,重新进行协商握手,握手失败则向应用程序报告错误。
在利用RCC进行实际的应用程序设计时,首先第一步通过RCC进行串口初始化操作,在串口初始化成功时,RCC通过异步消息RCC_CONNECT向应用程序报告,此时一条通讯链路建立完毕。应用程序开始发送数据,这是通过Send调用实现的,RCC根据内部缓冲区的大小决定真正可发送的数据量返回给应用程序,数据将被存储在内部缓冲区内(此缓冲区大小可由应用程序调节),RCC将内部缓冲区的数据分割成一帧一帧,每一帧将调用内部线程通过WIN95/NT向MODEM/RS232发送数据,当数据全部发送完毕(即内部缓冲区为空),则向应用程序发送RCC_WRITE消息表示数据全部发送完毕,应用程序将可继续发送余下的数据,在接收方,如果数据到达了,由WIN95/NT通知RCC,由RCC接收到达的数据,当到达一帧时,对到达的数据进行解包,若发生错误则通过指定方式进行重发或协商ABORT,当通讯能继续则不向应用程序发送任何消息,继续保持链路,若通讯不能继续,则ABORT此链路,并且向应用程序发送RCC_ERROR的消息,应用程序将重新RESET此链路或进行其它相应的处理。当数据被解包到内部缓冲区时,将发送RCC_READ消息到应用程序,表示数据可用了,应用程序将调用Receive接收相应的数据(注意此时的数据并不是发送时的数据,而是被割成一帧一帧的),也可通过相应的调用查询所接收到的数据量。另外当有任何一方断开链接,应用程序将接收到RCC_CLOSE消息,表示此链路已经断开(MODEM挂机)。
6.RCC串口通讯协议详细说明
6.1.帧格式
帧格式包括帧头和数据区,其中对于任何帧而言,帧头固定为八个字节,若该帧类型需要数据才有数据区,否则只有帧头。
6.1.1.数据帧格式
帧头标志 版本号
文档评论(0)