1.一种应用于串口的可靠传输方法,其特征在于,包括以下步骤:S1:在需要通过串口进行数据传输的终端间通过数据帧发送连接请求,建立连接;
S2:在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
S3:任一终端发起断开请求,断开终端间的连接状态。
2.根据权利要求1所述的应用于串口的可靠传输方法,其特征在于,所述数据帧包括帧头、帧标志、数据、帧校验和帧尾,其中:帧头占用一个字节大小,值固定为0XFD;
帧标志占用一个字节大小,但只使用一个字节的后5个bit,前3个bit预留均为0,后5位bit依次为TAL、ACK、CON、RST、SHT,TAL表示原始数据被分帧后的最后一个帧,ACK表示该帧包含应答消息,CON表示发起连接请求,RST表示请求重置连接,SHT表示请求关闭连接;
数据最大占用255字节,上层原始数据大于255字节则会被分帧;原始数据中若包含协议中的特殊字符,则会在该字符前插入转义字符0XFE进行传输,即特殊字符在数据中表示为转义字符+特殊字符的形式;
帧校验占用2字节,采用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节进行填充;
帧尾占用一个字节大小,值固定为0XFF。
3.根据权利要求2所述的应用于串口的可靠传输方法,其特征在于,所述步骤S1中在需要进行数据传输的终端间建立连接,具体为:S11:第一终端向第二终端发起连接请求,连接请求的帧标志的CON位和TAL位置为1;
S12:第一终端接收第二终端返回的第一应答消息,第一终端转为连接状态,第一应答消息的帧标志ACK位和TAL位置为1;
S13:第一终端发送第二应答消息至第二终端,第二终端收到第二应答消息后转为连接状态,第二应答消息的帧标志ACK位和TAL位置为1。
4.根据权利要求3所述的应用于串口的可靠传输方法,其特征在于,所述步骤S11中,第一终端经过预设的等待时间内未收到第二终端的第一应答消息,则认为连接请求丢失,第一终端重新发送连接请求,最多进行4次重发,每次重发后的等待时间依次增加,第4次重发之后仍为收到第一应答消息,则取消连接请求,返回错误至上层调用者。
5.根据权利要求4所述的应用于串口的可靠传输方法,其特征在于,当第一终端在连接状态,第二终端在非连接状态时,执行以下步骤:第一终端发送非连接请求的任意帧至第二终端;
第一终端接收第二终端返回的请求重置连接帧;
第一终端发送建立连接的应答消息至第二终端,应答消息的ACK位和TAL位置为1,第二终端收到应答消息后,转为连接状态,若第二终端经过一定时间内未收到应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答,则取消该请求并结束流程,此时仍保持非连接状态。
6.根据权利要求4所述的应用于串口的可靠传输方法,其特征在于,当第一终端处于非连接状态,第二终端在连接状态时,执行以下步骤:第一终端发送连接请求至第二终端;
第一终端接收第二终端返回的请求重置连接帧,第一终端转为连接状态,若第一终端经过一定时间内未收到第二终端的请求重置连接帧,则认为消息丢失,将进行重新发送,最多进行4次重发,等待的时间间隔依次增加,当第4次重发之后如果未收到应答,则取消连接请求,并返回错误给上层调用者;
第一终端发送建立连接的应答消息至第二终端,若第二终端经过一定时间内未收到第一终端的应答消息,则认为消息丢失,将进行重新发送,最多进行4次重发,等待时间间隔为固定值,当第4次重发之后如果未收到应答,则取消该请求并结束流程,此时第二终端转为非连接状态。
7.根据权利要求3所述的应用于串口的可靠传输方法,其特征在于,所述步骤S2中发送数据的终端将需要发送的数据封装成数据帧进行传输,具体为:S201:由上层调用者传入原始数据;
S202:检查终端件是否已经连接,未建立连接则返回错误给上层调用者并退出发送流程,已建立连接则进入S203;
S203:检查数据是否大于255字节,若大于255字节则取数据的前255个字节并进入S204,若小于255字节则将帧标志中的TAL位置1再进入S204;
S204:替换S203传入的数据中的特殊字符为转义字符+特殊字符的形式;
S205:检查是否存在已从另一个终端接收了数据帧但未进行应答的情况,是则将帧标志中的ACK位置1,将应答帧与该帧合并;否则直接进入S206;
S206:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节对帧校验部分进行填充;
S207:对该帧添加帧头0XDF和帧尾0XFF;
S208:将封装完成的帧进行发送;
S209:此时从帧发送之后开始计时,若在一定的等待时间内未收到应答,则进行重发,等待时间间隔为固定值发送的次数最多为5次,若超过5次则返回错误给上层调用者并退出发送流程,此时该终端转为非连接状态;若在等待时间内收到应答,则进入S2010;
S2010:检查是否剩余有未发送的数据,若有则跳转到S203继续流程;否则结束流程。
8.根据权利要求7所述的应用于串口的可靠传输方法,其特征在于,所述步骤S2中接收数据的终端将接收到的数据帧进行检验后,具体为:S211:从串口接收一个包含帧头帧尾边界的完整的数据帧;
S212:使用循环冗余法计算从帧标志到数据共2个部分的全部字节得到两个字节,与该帧的帧校验数据进行对比,若一致则进入S213,否则丢弃该帧退出流程;
S213:检验该帧的帧标志ACK位是否为1,是则标志发送给另一终端的上一帧数据已经被收到;否则直接进入S214;
S214:检验该帧的帧标志TAL位是否为1,是则将数据存入缓存区末尾,进入S215;否则将数据存入缓存区末尾后退出流程;
S215:将缓存区所有数据提供至上层调用;
S216:清空缓存区,结束流程。
9.根据权利要求8所述的应用于串口的可靠传输方法,其特征在于,所述步骤S3中断开终端间的连接,分为正常断开和异常断开,正常断开具体为:S31:任意一终端发起第一断开请求至另一终端,第一断开请求的SHT位和TAL位置为1;
S32:发起第一断开请求的终端收到另一终端返回的第三应答消息;
S33:发起第一断开请求的终端收到另一终端返回的第二断开请求,第二断开请求的SHT位和TAL位置为1;
S34:发起第一断开请求的终端发送第四应答消息至另一终端,发起第一断开请求的终端转为非连接状态;另一终端收到第四应答消息后,另一终端转为非连接状态;
异常断开具体为:
在发送数据的流程中,若出现重发次数大于等于五次的情况,则发送数据的终端,自动转为未连接状态;接收端并未被影响,仍保持连接状态。
10.一种应用于串口的可靠传输系统,其特征在于,包括:
连接模块,所述连接模块用于在需要进行数据传输的终端间通过数据帧发送连接请求,建立连接;
传输模块,所述传输模块用于在连接状态下,发送数据的终端将需要发送的数据封装成数据帧进行传输,接收数据的终端将接收到的数据帧进行检验后,获得传输的数据;
断开模块,所述断开模块用于在数据传输完成后,断开终端间的连接。