本发明涉及一种uart数据传输,尤其是指一种uart数据传输方法。
背景技术:
1、uart(中文名为:通用异步收发器,即通常所说的串口)是电子产品中非常通用、非常传统的一个接口,一般用于产品的开发调试和测试,有时也用于要求不高的生产测试。
2、其优点就是简单、使用方便、成本非常低,只要产品的电路里有mcu或有集成类似mcu的soc,那么它都默认带有这个uart接口,因此使用该通信接口的成本可以忽略不计。
3、其缺点也是因为它简单,所以传输缺乏可靠性,一旦受干扰,就使得uart的通信出错,因此也就无法用于可靠性要求高、干扰大的通信场合。
4、现有技术中,当uart串口在传输过程中出现数据掉包时,数据接收方需要再通知发送方重发数据,而重发掉包数据以及硬件本身因素导致传输的平均效率不是很高,所以现有的uart数据传输的吞吐量十分有限,导致用户难以获得较好的用户体验。另外,现有的uart串口在传输过程中容易出现重复帧和帧失序的问题,导致数据传输不准确。
5、因此,本发明专利申请中,申请人精心研究了一种uart数据传输方法来解决上述问题。
技术实现思路
1、本发明针对上述现有技术所存在不足,主要目的在于提供一种uart数据传输方法,其能够减少丢帧、帧重复和帧失序的问题,继而确保传输数据的准确性和可靠性。
2、为实现上述之目的,本发明采取如下技术方案:
3、一种uart数据传输方法,包括有如下步骤:
4、步骤s1、发送端判断待发送的数据包是否超过预设长度,若是,则先将待发送的数据包按照预设长度分成若干片段,再进入步骤s2;否则,直接进入步骤s2;
5、步骤s2、将每个片段的前、后分别增加帧头、帧尾以形成数据帧;
6、步骤s3、先对每一数据帧进行编码,得到第一已编码数据帧;再于第一已编码数据帧的头尾处分别加上帧首定界符和帧末定界符,得到第二已编码数据帧;
7、步骤s4、发送端将所有第二已编码数据帧发送至接收端,接收端对所接收到的每一第二已编码数据帧解码后根据预设的数据校验方式判断其是否为正确数据帧,如果是,则针对每一正确数据帧分别回复一个回执帧且该回执帧复制被判断正确的第二已编码数据帧的帧头的帧id,并进入步骤s5,否则直接丢弃该帧且不做任何回复;
8、步骤s5、接收端判断是否已经收齐同一个数据包的所有校验正确的第二已编码数据帧,如果是,则进入步骤s6,否则,接收端继续等待,直至接收到所有被判断为正确数据帧的第二已编码数据帧后,再进入步骤s6;
9、步骤s6、将所有被判断为正确数据帧的的第二已编码数据帧进行组包,形成一个完整的数据包。
10、作为一种优选方案,在步骤s2中,帧头包括有帧类型、帧id、待发送的数据包的总帧数、帧序号和帧长度;
11、所述帧类型为数据帧;
12、所述帧id用于识别所在片段的唯一识别码;
13、所述待发送的数据包的总帧数用于表示待发送的数据包被拆分成片段的总数;
14、所述帧序号为当前片段在同一数据包的多个片段里的排序;
15、所述帧长度为当前数据帧的长度。
16、作为一种优选方案,在步骤s6中,将所有被判断为正确数据帧的的第二已编码数据帧进行组包,具体为:
17、将所有被判断为正确数据帧的的第二已编码数据帧按照各自的帧序号进行排序拼接。
18、作为一种优选方案,在步骤s2中,帧尾包括有帧校验码,所述帧校验码用于让接收端检验发送端的数据是否被篡改。
19、作为一种优选方案,在步骤s4中,发送端发送所有第二已编码数据帧至接收端后,发送端判断在发送第二已编码数据帧后是否在预设时间内接收到回执帧,如果是,则标记所对应的数据帧已经发送完毕;否则,重传未收到回执帧的第二已编码数据帧且重传的第二已编码数据帧始终保持该帧一开始的帧头的帧id不变,直到收到回执帧或者重传次数达到预设的最大重传次数。
20、作为一种优选方案,该回执帧包括有回执帧头和回执帧尾;
21、所述回执帧头包括有回执帧类型和回执帧id;所述回执帧类型为回执帧,所述回执帧id与所应答的第二已编码数据帧的帧id一致;
22、所述回执帧尾包括有回执帧校验码,所述回执帧校验码用于让回执帧接收端检验该回执帧的数据是否被篡改。
23、作为一种优选方案,在步骤s3中,帧首定界符和帧末定界符的编码取值范围不相同;而第一已编码数据帧的每一个字节的取值范围选择分别与帧首定界符或帧末定界符的取值范围没有交集的范围。
24、作为一种优选方案,在步骤s3中,帧首定界符和帧末定界符的取值范围不相同;而在形成第一已编码数据帧的过程中,原数据帧里取值与帧首定界符或帧末定界符的取值范围相同的每个字节前面加一个转义字符,从而形成第一已编码数据帧。
25、本发明与现有技术相比具有明显的优点和有益效果,具体而言:其主要是通过組帧、帧编码、帧同步、回执帧、重传以及分帧组包的配合,能够减少丢帧、帧重复和帧失序的问题,继而确保传输数据的准确性和可靠性。
26、为更清楚地阐述本发明的结构特征和功效,下面结合附图与具体实施例来对其进行详细说明。
1.一种uart数据传输方法,其特征在于:包括有如下步骤:
2.根据权利要求1所述的uart数据传输方法,其特征在于:在步骤s2中,帧头包括有帧类型、帧id、待发送的数据包的总帧数、帧序号和帧长度;
3.根据权利要求2所述的uart数据传输方法,其特征在于:在步骤s6中,将所有被判断为正确数据帧的第二已编码数据帧进行组包,具体为:
4.根据权利要求1所述的uart数据传输方法,其特征在于:在步骤s2中,帧尾包括有帧校验码,所述帧校验码用于让接收端检验发送端的数据是否被篡改。
5.根据权利要求1所述的uart数据传输方法,其特征在于:在步骤s4中,发送端发送所有第二已编码数据帧至接收端后,发送端判断在发送第二已编码数据帧后是否在预设时间内接收到回执帧,如果是,则标记所对应的数据帧已经发送完毕;否则,重传未收到回执帧的第二已编码数据帧且重传的第二已编码数据帧始终保持该帧一开始的帧头的帧id不变,直到收到回执帧或者重传次数达到预设的最大重传次数。
6.根据权利要求5所述的uart数据传输方法,其特征在于:该回执帧包括有回执帧头和回执帧尾;
7.根据权利要求1所述的uart数据传输方法,其特征在于:在步骤s3中,帧首定界符和帧末定界符的编码取值范围不相同;而第一已编码数据帧的每一个字节的取值范围选择分别与帧首定界符或帧末定界符的取值范围没有交集的范围。
8.根据权利要求1所述的uart数据传输方法,其特征在于:在步骤s3中,帧首定界符和帧末定界符的取值范围不相同;而在形成第一已编码数据帧的过程中,原数据帧里取值与帧首定界符或帧末定界符的取值范围相同的每个字节前面加一个转义字符,从而形成第一已编码数据帧。
