UART软件流控方法、装置、设备及介质与流程

文档序号:33185755发布日期:2023-02-04 06:23阅读:21来源:国知局
UART软件流控方法、装置、设备及介质与流程
uart软件流控方法、装置、设备及介质
技术领域
1.本技术涉及uart流控技术领域,特别涉及uart软件流控方法、装置、设备及介质。


背景技术:

2.uart(即universal asynchronous receiver/transmitter,通用异步收发传输器),是一种通用串行数据总线,用于异步通信,可双向通信,可以实现全双工传输和接收。常见的uart流控为通过添加硬件管脚,根据管脚电平高低通知发送方是否可以发送数据。比如,常用的cts,rts管脚,cts可用来通知接收方可以接收数据,rts可用来通知发送方可以发送数据。但这种硬件流控的方式,需要添加额外的硬件支持,如果没有硬件支持,串口无法流控,增加了设计成本,并且由于是硬件流控,无法做到跨平台使用,每个平台都需要适配驱动层接口。
3.目前,存在发送xon/xoff的uart软件流控方式,当接收方的输入缓冲区内数据量超过设定的高位时,就向数据发送方发出xoff字符,发送方收到xoff字符后就立即停止发送数据,当接收方的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出xon字符,发送方收到xon字符后就立即开始发送数据。但标志字符xon/xoff可能在数据流中出现而引起误操作,因此xon/xoff的方式至少要等待发送一个字节的时间,此时发送的数据无法确认收到,有可能造成数据丢失。


技术实现要素:

4.有鉴于此,本技术的目的在于提供uart软件流控方法、装置、设备及介质,能够避免数据丢失,保障数据收发的实时性和可靠性。其具体方案如下:
5.第一方面,本技术公开了一种uart软件流控方法,应用于接收方,包括:
6.接收发送方发送的数据帧;
7.若数据缓冲区已满,则向所述发送方返回携带第一预设确认帧标识的确认数据帧,以便所述发送方将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;
8.当已满的所述数据缓冲区出现可用空间,则向所述发送方返回携带第二预设确认帧标识的确认数据帧,以便所述发送方重新发送所述未成功发送数据帧。
9.可选的,所述接收发送方发送的数据帧之后,还包括:
10.若所述数据缓冲区未满,则将所述数据帧中携带的净荷数据存入所述数据缓冲区,并向所述发送方返回携带数据帧标识的确认数据帧;其中,所述数据帧标识为所述数据帧携带的帧标识。
11.可选的,所述将所述数据帧中携带的净荷数据存入所述数据缓冲区之前,还包括:
12.检验所述数据帧标识是否正确,若所述数据帧标识正确,则触发所述将所述数据帧中携带的净荷数据存入所述数据缓冲区的步骤。
13.可选的,还包括:
14.接收所述发送方发送的同步帧;其中,所述同步帧携带起始数据帧标识;
15.向所述发送方返回携带所述起始数据帧标识的确认同步帧,以便所述发送方基于所述起始数据帧标识发送起始数据帧,并在后续发送数据帧时,基于预设标识变化规则确定该数据帧所携带的数据帧标识。
16.可选的,所述检验所述数据帧标识是否正确,包括:
17.基于所述起始数据帧标识以及所述预设标识变化规则,检验所述数据帧标识是否正确。
18.可选的,所述确认数据帧、所述同步帧、所述确认同步帧以及数据帧均携带相应的帧类型信息。
19.第二方面,本技术公开了一种uart软件流控方法,应用于发送方,包括:
20.向接收方发送数据帧;
21.若接收到所述接收方返回的携带第一预设确认帧标识的确认数据帧,则将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;其中,所述第一预设确认帧标识表征所述接收方的数据缓冲区已满;
22.若接收到所述接收方返回的携带第二预设确认帧标识的确认数据帧,则重新发送所述未成功发送数据帧;其中,所述第二预设确诊帧标识表征已满的所述数据缓冲区出现空闲空间。
23.第三方面,本技术公开了一种uart软件流控装置,应用于接收方,包括:
24.帧接收模块,用于接收发送方发送的数据帧;
25.帧返回模块,用于若数据缓冲区已满,则向所述发送方返回携带第一预设确认帧标识的确认数据帧,以便所述发送方将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;当已满的所述数据缓冲区出现可用空间,则向所述发送方返回携带第二预设确认帧标识的确认数据帧,以便所述发送方重新发送所述未成功发送数据帧。
26.第四方面,本技术公开了一种电子设备,包括存储器和处理器,其中:
27.所述存储器,用于保存计算机程序;
28.所述处理器,用于执行所述计算机程序,以实现前述的uart软件流控方法。
29.第五方面,本技术公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述的uart软件流控方法。
30.可见,本技术接收发送方发送的数据帧;若数据缓冲区已满,则向所述发送方返回携带第一预设确认帧标识的确认数据帧,以便所述发送方将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;当已满的所述数据缓冲区出现可用空间,则向所述发送方返回携带第二预设确认帧标识的确认数据帧,以便所述发送方重新发送所述未成功发送数据帧。也即,本技术在接收数据帧时,若数据缓冲区已满,则向发送方返回携带标识信息的确认数据帧,以便发送方停止发送数据,在数据缓冲区出现可用空间后,向发送方返回携带标识信息的确认数据帧,以便发送方将未发送成功的数据帧再次发送,这样,通过接收数据帧以及返回确认数据帧,将未发送成功的数据帧在缓冲区出现可用空间时再次发送,能够避免数据丢失,保障数据收发的实时性和可靠性。
附图说明
31.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
32.图1为本技术公开的一种uart软件流控方法流程图;
33.图2为本技术公开的一种具体的uart软件流控示意图;
34.图3为本技术公开的一种uart软件流控方法流程图;
35.图4为本技术公开的一种uart软件流控装置结构示意图;
36.图5为本技术公开的一种电子设备结构图。
具体实施方式
37.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.目前,存在发送xon/xoff的uart软件流控方式,当接收方的输入缓冲区内数据量超过设定的高位时,就向数据发送方发出xoff字符,发送方收到xoff字符后就立即停止发送数据,当接收方的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出xon字符,发送方收到xon字符后就立即开始发送数据。但标志字符xon/xoff可能在数据流中出现而引起误操作,且xon/xoff的方式至少要等待发送一个字节的时间,此时发送的数据无法确认收到,有可能造成数据丢失。为此,本技术提供了uart软件流控方法,能够避免数据丢失,保障数据收发的实时性和可靠性。
39.参见图1所示,本技术实施例公开了一种uart软件流控方法,应用于接收方,包括:
40.步骤s11:接收发送方发送的数据帧。
41.在具体的实施方式中,本技术实施例可以先接收所述发送方发送的同步帧;其中,所述同步帧携带起始数据帧标识;向所述发送方返回携带所述起始数据帧标识的确认同步帧,以便所述发送方基于所述起始数据帧标识发送起始数据帧,并在后续发送数据帧时,基于预设标识变化规则确定该数据帧所携带的数据帧标识。
42.其中,预设标识变化规则为在预设数值范围内递增,并且在达到所述预设数据范围的最大值后,数据帧标识从预设数值范围的最小值开始递增。比如,起始数据帧标识为1,预设数值范围为取值范围为1至127,超过127,重新从1开始。
43.进一步的,在接收发送方发送的数据帧之后,若所述数据缓冲区未满,则将所述数据帧中携带的净荷数据存入所述数据缓冲区,并向所述发送方返回携带数据帧标识的确认数据帧;其中,所述数据帧标识为所述数据帧携带的帧标识。其中,净荷数据除去信头的纯数据。
44.并且,所述将所述数据帧中携带的净荷数据存入所述数据缓冲区之前,本技术实施例可以检验所述数据帧标识是否正确,若所述数据帧标识正确,则触发所述将所述数据帧中携带的净荷数据存入所述数据缓冲区的步骤。
45.在一种实施方式中,可以基于所述起始数据帧标识以及所述预设标识变化规则,检验所述数据帧标识是否正确。比如,接收方启动计数器,计数器初始值置为同步帧携带起始数据帧标识,并在每次将数据帧中携带的净荷数据存入数据缓冲区后基于预设标识变化规则进行值累加操作,比如加1,每次收到数据帧后,读取计数器的值与数据帧携带的数据帧标识比较,若读取计数器的值与数据帧携带的数据帧标识一致,则判定数据帧标识正确。
46.步骤s12:若数据缓冲区已满,则向所述发送方返回携带第一预设确认帧标识的确认数据帧,以便所述发送方将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧。
47.其中,所述第一预设确认帧标识表征所述接收方的数据缓冲区已满,比如,第一预设确认帧标识为0。
48.步骤s13:当已满的所述数据缓冲区出现可用空间,则向所述发送方返回携带第二预设确认帧标识的确认数据帧,以便所述发送方重新发送所述未成功发送数据帧。
49.在一种实施方式中,当数据缓冲区的空闲空间大于预设阈值时,判定缓冲区出现可用空间。
50.其中,所述第二预设确诊帧标识表征已满的所述数据缓冲区出现空闲空间,第二预设确诊帧标识与第一预设确诊帧标识为不同的标识,比如,第二预设确认帧标识为-1。
51.并且,本技术实施例中,所述确认数据帧、所述同步帧、所述确认同步帧以及数据帧均携带相应的帧类型信息。
52.也即,本技术实施例基于uart通信,重新定义了数据格式和交互方式。并且,帧定义可以为:|帧类型|帧id|帧长度|净荷数据。其中,帧类型:一个字节;帧id:一个字节;帧长度:两个字节(可选,数据帧才有);净荷数据:数据(可选,数据帧才有)。下面具体介绍各帧类型:
53.同步帧:用于同步收发双发的起始帧id,比如,|0|帧id|,其中,0表征帧类型为同步帧。
54.确认同步帧:用于确认同步帧,比如,|1|帧id|,其中,1表征帧类型为确认同步帧。
55.数据帧:用于发送数据,比如,|2|帧id|帧长度|净荷数据|,其中,2表征帧类型为数据帧。帧id:取值范围为1-127,超过127,重新从1开始,只有所有的帧都被确认,才能重新从1开始。
56.数据确认帧:用于确认收的数据帧,比如,|3|帧id|,其中,3表征帧类型为数据确认帧。帧id为1-127,为确认收到的帧的id,帧id为-1时表示可以继续发送数据,为0表示缓冲区满,停止发送。
57.例如,参见图2所示,图2为本技术实施例公开的一种具体的uart软件流控方法示意图。在进行数据发送前,发送方先发送携带起始数据帧标识,也即帧id为1的同步帧至接收方,接收方返回携带帧id为1的确认同步帧,发送方发送数据帧1,携带的帧id为1,接收方返回确认数据帧1,携带的帧id为1,发送方发送数据帧2,携带的帧id为2,接收方返回确认数据帧2,携带的帧id为2,发送方发送数据帧3,携带的帧id为3,接收方缓冲区满,返回确认数据帧,携带的帧id为0,当缓冲区可用,返回确认数据帧,携带的帧id为-1,发送方发送数据帧3,接收方返回确认数据帧3。
58.可见,本技术实施例接收发送方发送的数据帧;若数据缓冲区已满,则向所述发送
方返回携带第一预设确认帧标识的确认数据帧,以便所述发送方将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;当已满的所述数据缓冲区出现可用空间,则向所述发送方返回携带第二预设确认帧标识的确认数据帧,以便所述发送方重新发送所述未成功发送数据帧。也即,本技术实施例在接收数据帧时,若数据缓冲区已满,则向发送方返回携带标识信息的确认数据帧,以便发送方停止发送数据,在数据缓冲区出现可用空间后,向发送方返回携带标识信息的确认数据帧,以便发送方将未发送成功的数据帧再次发送,这样,通过接收数据帧以及返回确认数据帧,将未发送成功的数据帧在缓冲区出现可用空间时再次发送,能够避免数据丢失,保障数据收发的实时性和可靠性。
59.需要指出的是,本技术的流控方案可以应用于多种uart通信场景,比如在使用uart传送文件时,flash的写速度比uart慢时,可以使用该流控方案。在使用uart传送tcp数据时,tcp传输速度比uart慢时,可以使用该流控方案。本技术通过设计通信协议和交互过程,在软件层实现了uart流控,不依赖硬件驱动,可以跨平台使用,从而节省了硬件成本和软件开发成本。并且,部分场景下xon/xoff方式的软件流控,需要转义,本技术不需要转义,并能够保障数据收发的实时性和可靠性。
60.参见图3所示,本技术实施例公开了一种uart软件流控方法,应用于发送方,包括:
61.步骤s21:向接收方发送数据帧。
62.在具体的实施方式中,可以先向所述接收方发送同步帧;其中,所述同步帧携带起始数据帧标识;获取接收方返回携带所述起始数据帧标识的确认同步帧,然后基于所述起始数据帧标识发送起始数据帧,并在后续发送数据帧时,基于预设标识变化规则确定该数据帧所携带的数据帧标识。
63.其中,若接收到所述发送方返回的携带数据帧标识的确认数据帧;其中,所述数据帧标识为发送的数据帧携带的帧标识,则继续发一个数据帧。
64.步骤s22:若接收到所述接收方返回的携带第一预设确认帧标识的确认数据帧,则将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;其中,所述第一预设确认帧标识表征所述接收方的数据缓冲区已满。
65.步骤s23:若接收到所述接收方返回的携带第二预设确认帧标识的确认数据帧,则重新发送所述未成功发送数据帧;其中,所述第二预设确诊帧标识表征已满的所述数据缓冲区出现空闲空间。
66.可见,本技术实施例向接收方发送数据帧;若接收到所述接收方返回的携带第一预设确认帧标识的确认数据帧,则将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;其中,所述第一预设确认帧标识表征所述接收方的数据缓冲区已满;若接收到所述接收方返回的携带第二预设确认帧标识的确认数据帧,则重新发送所述未成功发送数据帧;其中,所述第二预设确诊帧标识表征已满的所述数据缓冲区出现空闲空间。也即,本技术实施例接收方在接收数据帧时,若数据缓冲区已满,则向发送方返回携带标识信息的确认数据帧,发送方停止发送数据,在数据缓冲区出现可用空间后,向发送方返回携带标识信息的确认数据帧,发送方将未发送成功的数据帧再次发送,这样,通过接收数据帧以及返回确认数据帧,发送方将未发送成功的数据帧在缓冲区出现可用空间时再次发送,能够避免数据丢失,保障数据收发的实时性和可靠性。
67.参见图4所示,本技术实施例公开了一种uart软件流控装置,应用于接收方,包括:
68.帧接收模块11,用于接收发送方发送的数据帧;
69.帧返回模块12,用于若数据缓冲区已满,则向所述发送方返回携带第一预设确认帧标识的确认数据帧,以便所述发送方将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;当已满的所述数据缓冲区出现可用空间,则向所述发送方返回携带第二预设确认帧标识的确认数据帧,以便所述发送方重新发送所述未成功发送数据帧。
70.可见,本技术实施例接收发送方发送的数据帧;若数据缓冲区已满,则向所述发送方返回携带第一预设确认帧标识的确认数据帧,以便所述发送方将所述数据帧确定为未成功发送数据帧,并停止向所述接收方发送数据帧;当已满的所述数据缓冲区出现可用空间,则向所述发送方返回携带第二预设确认帧标识的确认数据帧,以便所述发送方重新发送所述未成功发送数据帧。也即,本技术实施例在接收数据帧时,若数据缓冲区已满,则向发送方返回携带标识信息的确认数据帧,以便发送方停止发送数据,在数据缓冲区出现可用空间后,向发送方返回携带标识信息的确认数据帧,以便发送方将未发送成功的数据帧再次发送,这样,通过接收数据帧以及返回确认数据帧,将未发送成功的数据帧在缓冲区出现可用空间时再次发送,能够避免数据丢失,保障数据收发的实时性和可靠性。
71.进一步的,所述装置还包括数据缓存模块,用于在接收发送方发送的数据帧之后,若所述数据缓冲区未满,则将所述数据帧中携带的净荷数据存入所述数据缓冲区。相应的,帧返回模块12,还用于向所述发送方返回携带数据帧标识的确认数据帧;其中,所述数据帧标识为所述数据帧携带的帧标识。
72.并且,所述装置还包括帧标识检验模块,用于在数据缓存模块将所述数据帧中携带的净荷数据存入所述数据缓冲区之前,检验所述数据帧标识是否正确,若所述数据帧标识正确,则触发数据缓存模块执行所述将所述数据帧中携带的净荷数据存入所述数据缓冲区的步骤。
73.进一步的,帧接收模块11,还用于接收所述发送方发送的同步帧;其中,所述同步帧携带起始数据帧标识。
74.相应的,帧返回模块12,还用于向所述发送方返回携带所述起始数据帧标识的确认同步帧,以便所述发送方基于所述起始数据帧标识发送起始数据帧,并在后续发送数据帧时,基于预设标识变化规则确定该数据帧所携带的数据帧标识。
75.在一种实施方式中,帧标识检验模块,具体用于基于所述起始数据帧标识以及所述预设标识变化规则,检验所述数据帧标识是否正确。
76.并且,在一种实施方式中,所述确认数据帧、所述同步帧、所述确认同步帧以及数据帧均携带相应的帧类型信息。
77.参见图5所示,本技术实施例公开了一种电子设备20,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,前述实施例公开的uart软件流控方法。
78.关于上述uart软件流控方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
79.并且,所述存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
80.另外,所述电子设备20还包括电源23、通信接口24、输入输出接口25和通信总线
26;其中,所述电源23用于为所述电子设备20上的各硬件设备提供工作电压;所述通信接口24能够为所述电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
81.进一步的,本技术实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的uart软件流控方法。
82.关于上述uart软件流控方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
83.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
84.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
85.以上对本技术所提供的uart软件流控方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1