控制数据的发送方法、装置、设备及存储介质与流程

专利2024-11-16  44



1.本发明涉及数据处理领域,具体涉及一种控制数据的发送方法、装置、设备及计算机可读存储介质。


背景技术:

2.区块链网络中的维护节点可以通过协助生成和确认新区块来获取一定量新增数字货币。当用户向网络中发布交易后,需要有人将交易进行记录和确认,形成新的区块,并串联到区块链中。在区块链领域,现有发送数据的方法:大多依赖现场可编程逻辑门阵列(field programmable gate array,fpga)来发送数据,或者通过系统软件的轮询调度方式来发送数据。但当下存在很多设备并不具备现场可编程逻辑门阵列(field programmable gate array,fpga),且区块链领域对于发送数据要求完整性较高的情况下,如果只通过系统软件来轮询调度,很容易出现发送数据过快导致数据被覆盖因而出现数据丢失的情况。因此,如何解决控制数据发送方法容易出现数据丢失成为了目前亟待解决的技术问题。


技术实现要素:

3.本发明的主要目的在于提供控制数据的发送方法、装置及计算机可读存储介质,旨在解决控制数据发送方法容易出现数据丢失的问题。
4.为实现上述目的,本发明提供一种控制数据的发送方法,所述方法:获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的存储速率;若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。
5.进一步地,所述根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据之前,还包括:
6.判断所述接收端是否存在可用缓冲区,其中所述可用缓冲区的可用存储空间大小不小于所述待发送数据的大小;
7.若所述接收端不存在所述可用缓冲区,则中断所述待发送数据的发送流程;
8.若所述接收端存在所述可用缓冲区,则执行:根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。
9.进一步地,所述获取发送速率以及存储速率之前,还包括:
10.在预设间隔时长达到预设时间阈值且所述发送端的轮询阶段检测到存在下一待发送数据时,则判断所述接收端是否存在所述可用缓冲区,其中,所述预设间隔时长为所述发送端完成一次数据发送后等待的时间;
11.若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;
12.若所述接收端不存在所述可用缓冲区,则退出所述轮询阶段。
13.进一步地,所述若所述接收端不存在所述可用缓冲区,则退出所述轮询阶段之后,包括:
14.进入定时中断阶段,通过所述发送时延对应的定时函数修改中断标志,并判断所述串口发送模块是否处于空闲中断状态,其中,所述中断标志为所述通用异步收发器中的串口发送模块中的标志;
15.若所述串口发送模块处于所述空闲中断状态,且存在所可用述缓冲区,则发送数据至所述可用缓冲区;
16.若所述串口发送模块未处于空闲中断状态或不存在所述可用缓冲区,则退出所述定时中断阶段。
17.进一步地,所述若所述串口发送模块未处于空闲中断状态或不存在所述可用缓冲区,则退出所述定时中断阶段之后,包括:
18.进入通用异步收发器中断阶段,判断所述接收端是否存在所述可用缓冲区;
19.若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;
20.若所述接收端不存在所述可用缓冲区,则退出所述通用异步收发器中断阶段。
21.进一步地,所述获取发送速率以及存储速率之后,还包括:
22.若所述发送速率不大于所述存储速率,则根据所述发送速率,计算得到所述发送端发送所述待发送数据的发送时间,作为所述发送时延。
23.进一步地,所述获取发送速率以及存储速率之前,还包括:
24.获取所述接收端的缓冲区转存数据至内存的转存速率作为所述存储速率。
25.此外,为实现上述目的,本发明还提供一种控制数据的发送装置,所述控制数据的发送装置包括:速率获取模块,用于获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的存储速率;发送时延计算模块,用于若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;控制数据发送模块,用于根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。
26.此外,为实现上述目的,本发明还提供一种控制数据的发送设备,所述控制数据的发送设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的控制数据的发送程序,其中所述控制数据的发送程序被所述处理器执行时,实现如上述控制数据的发送方法的步骤。
27.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有控制数据的发送程序,其中所述控制数据的发送程序被处理器执行时,实现如上述的控制数据的发送方法的步骤。
28.本发明提供一种控制数据的发送方法,所述方法获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的存储速率;若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。通过上述方式,该发明通过设置发送时延,确定了发送数据的时间,解决了可能由于发
送速率大于缓冲区的转存速率,导致数据被覆盖而无法发送一块完整数据的情况,保证了每一个待发送数据均可被完整发送。由此,通过设置发送时延确定发送数据的时间,保证了发送数据的完整性。
附图说明
29.图1为本发明实施例方案中涉及的控制数据的发送设备的硬件结构示意图;
30.图2为本发明一种控制数据的发送方法第一实施例的流程示意图;
31.图3为本发明一种控制数据的发送装置的功能模块示意图;
32.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
33.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
34.本发明实施例涉及的控制数据的发送方法主要应用于控制数据的发送设备,该控制数据的发送设备可以是pc、便携计算机、移动终端等具有显示和处理功能的设备。
35.参照图1,图1为本发明实施例方案中涉及的控制数据的发送设备的硬件结构示意图。本发明实施例中,控制数据的发送设备包括处理器1001(例如cpu),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003包括显示屏(display)、输入单元比如键盘(keyboard);网络接口1004可选的包括标准的有线接口、无线接口(如wi-fi接口);存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如内存存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
36.本领域技术人员可以理解,图1中示出的硬件结构并不构成对控制数据的发送设备的限定,包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
37.本发明实施例提供了一种控制数据的发送方法。
38.参照图2,图2为本发明控制数据的发送方法第一实施例的流程示意图。
39.本实施例中,所述控制数据的发送方法包括以下步骤:
40.步骤s10,获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的存储速率;
41.本实施例中,在步骤s10之前,获取所述接收端的缓冲区的转存速率作为所述存储速率,在预设间隔时长达到预设时间阈值且所述发送端的轮询阶段检测到存在下一待发送数据时,则判断所述接收端是否存在所述可用缓冲区,若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;若所述接收端不存在所述可用缓冲区,则退出所述轮询阶段。
42.本实施例中,在上述步骤之后,还有以下步骤:
43.进入定时中断阶段,通过所述发送时延对应的定时函数修改中断标志,并判断所述串口发送模块是否处于空闲中断状态,其中,所述中断标志为所述通用异步收发器中的串口发送模块中的标志;
44.若所述串口发送模块处于所述空闲中断状态,且存在所可用述缓冲区,则发送数
据至所述可用缓冲区;
45.若所述串口发送模块未处于空闲中断状态或不存在所述可用缓冲区,则退出所述定时中断阶段。
46.本实施例中,在上述步骤之后,还有以下步骤:
47.进入通用异步收发器中断阶段,判断所述接收端是否存在所述可用缓冲区;
48.若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;
49.若所述接收端不存在所述可用缓冲区,则退出所述通用异步收发器中断阶段。
50.本实施例中,在所述轮询阶段、所述定时中断阶段、所述通用异步收发器中断阶段交替过程中,所述接收端一直在向内存中转存数据,因此均需要判断所述接收端是否存在所述可用缓冲区。
51.本实施例中,在所述发送端发送数据之前,要通过配置所述通用异步收发器的比特率,以使所述发送端的所述发送速率和所述接收端的接收速率保持一致。波特率表示每秒钟传送的码元符号的个数,它是对符号传输速率的一种度量,它用单位时间内载波调制状态改变的次数来表示,1波特即指每秒传输1个符号。
52.具体地,轮询是基站为终端分配带宽的一种处理流程,这种分配可以是针对单个终端或是一组终端的。为单个终端和一组终端连接分配带宽,实际上是定义带宽请求竞争机制,这种分配不是使用一个单独的消息,而是上行链路映射消息中包含的一系列分配机制。轮询分为长轮询和短轮询,短轮询大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候并没有新的数据更新,因此绝大部分请求都是无效请求,且数据不一定是实时更新,要看设定的请求间隔,基本会有延迟;长轮询解决了轮询的两个大问题,数据实时更新,唯一的缺点是服务器在挂起的时候比较耗内存。
53.具体地,所述空闲中断,以stm32为例,当stm32的串口接收完一包数据后,会产生一个空闲中断。这个中断在串口其他任何状态都不产生,只会在接收完一包数据后才会产生,一包数据可以是1个字节或者多个字节。因此,我们可以在这个空闲中断函数中,设置一个接收完成标志位。那么,我们只需要在主程序中检测这个标志位就知道数据是否接收完成了。
54.具体地,通过配置波特率,使得所述发送速率与所述接收速率匹配,并获取所述存储速率,通过所述轮询阶段询问是否发送数据,判断是否存在所述缓冲区,当判定存在所述缓冲区时才会向所述缓冲区发送数据。
55.具体地,所谓中断就是程序执行的正常的时候,出现了突发事件,cpu停止当前的程序的执行,转去处理突发事件,处理完毕后又返回原程序被中断的位置继续执行;进入所述定时中断阶段时,要先清除中断标志,否则这一中断服务程序结束后由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况。
56.中断可以被分为内部中断和外部中断,内部中断的来源来自cpu内部(软件中断指令,溢出,除法错误等,例如操作系统从用户态切换到内核态需借助cpu内部的软件中断),外部中断的中断源来自cpu外部,由外设提出请求。
57.定时/计数器t0和t1分别是由两个8位的专用寄存器组成,即定时/计数器t0由th0和tl0组成,t1由th1和tl1组成。此外,其内部还有2个8位的特殊功能寄存器tmod和tcon,tmod负责控制和确定t0和t1的功能和工作模式,tcon用来控制t0和t1启动或停止计数,同
时包含定时/计数器的状态。tf1:定时器1溢出标志,定时/计数器溢出时由硬件置位,中断处理时由硬件清除或用软件清除;
58.tf0:定时器0溢出标志,定时/计数器溢出时由硬件置位,中断处理时由硬件清除,或用软件清除;
59.定时器中断是由单片机中的定时器溢出而申请的中断,例如51单片机中有两个定时器t0和t1:
60.tf0:定时器t0溢出中断请求,当定时器to产生溢出时,to中断请求标志tf0置1,请求中断处理。
61.tf1:定时器t1溢出中断请求,当定时器tl产生溢出时,t1中断请求标志tf1置1,请求中断处理。
62.定时器工作的流程可以按照这个顺序(以51为例用定时器0方式产生50毫秒的定时):
63.a,确定使用哪个定时器,使用哪种方式,这一步通过tmod设置,tmod的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的m0,m1是用来设置定时器工作在哪种方式,gate一般用不要设置,c/t是选择计数模式还是定时模式的,如:tmod=0x01,就说明定时器0工作在方式1;
64.b,接下来就要设置定时的时间,用定时器定时50毫秒,可以用这种方式th0=(65535-50000)/256,tl0=(65535-50000)%256;可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65535后就溢出产生中断;
65.c,第三步打开中断,使用ie寄存器,首先打开总中断ea=1,这一步是所有中断所必须的,然后打开定时器0中断,et0=1;
66.d,这时准备工作结束,启动定时器,使用tcon寄存器,tr0=1,实现了一个50毫秒的定时。
67.步骤s20,若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;
68.本实施例中,通过配置波特率,确定所述发送速率后,将所述发送速率与所述存储速率比较,若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为所述发送时延。
69.具体地,发送时延是主机或者路由器发送数据帧所需要的时间。也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需要的时间。
70.发送时延也称为传输时延;
71.发送时延=数据帧长度bit/发送速率bit/s;
72.发送时延发生在机器内部的发送器中(一般是网络适配器),与传输信道的长度无关。
73.步骤s30,根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据;
74.本实施例中,在步骤s30之前,还有以下步骤:
75.判断所述接收端是否存在可用存储空间不小于所述待发送数据的大小的缓冲区;
76.判断所述接收端是否存在可用缓冲区,其中所述可用缓冲区的可用存储空间大小
不小于所述待发送数据的大小;
77.若所述接收端不存在所述可用缓冲区,则中断所述待发送数据的发送流程;
78.若所述接收端存在所述可用缓冲区,则执行:根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。
79.本实施例中,所述定时中断阶段或所述通用异步收发器中断阶段退出,则返回步骤:在预设间隔时长达到预设时间阈值且所述发送端的轮询阶段检测到存在下一待发送数据时,则判断是否存在所述可用缓冲区。
80.本实施例中,所述定时函数先清除中断标志,判断是否存在待发送数据,如果无则退出所述定时中断阶段;如果有,判断所述串口发送模块是否为空闲中断状态,若不为空闲中断状态,则发送数据延时,等待下一阶段;若为空闲中断状态,则将发送数据状态置1,循环判断:是否存在所述可用缓冲区,如果无则退出;如果有,则发送数据至所述可用缓冲区。
81.具体地,当进入中断后,中断标志位会自动被置1,代表着“正在执行中断服务函数中”。当我们结束终端服务函数之前,一定要在函数中清除中断标志位。我们可以这样理解:中断标志位是满足中断条件的象征,当我们配置好中断发生的条件,一旦遇到中断标志位有效,就说明该执行中断服务函数了。如果我们不手动的清除中断标志位,那么系统会默认中断条件一直满足那就会一直执行中断服务函数跳不出来了。
82.具体地,高速设备与低速设备的不匹配,势必会让高速设备花时间等待低速设备,我们可以在这两者之间设立一个缓冲区。
83.缓冲区的作用:
84.1.可以解除两者的制约关系,数据可以直接送往缓冲区,高速设备不用再等待低速设备,提高了计算机的效率。例如:我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的cpu可以处理别的事情。
85.2.可以减少数据的读写次数,如果每次数据只传输一点数据,就需要传送很多次,这样会浪费很多时间,因为开始读写与终止读写所需要的时间很长,如果将数据送往缓冲区,待缓冲区满后再进行传送会大大减少读写次数,这样就可以节省很多时间。例如:我们想将数据写入到内存中,不是立马将数据写到内存中,而是先输入缓冲区中,当缓冲区满了以后,再将数据写入到内存中,这样就可以减少内存的读写次数,不然内存很容易坏掉。
86.简单来说,缓冲区就是一块内存区,它用在输入输出设备和cpu之间,用来存储数据。它使得低速的输入输出设备和高速的cpu能够协调工作,避免低速的输入输出设备占用cpu,解放出cpu,使其能够高效率工作。
87.具体地,串口中断方式相比查询方式效率要高,串口传输速率比较慢。比如对于系统时钟为100mhz的mcu,串口波特率为115200。传输一个字节大概需要10000个时钟周期,所以系统大部分的时间都是在等着收数据或者发数据。如果用中断方式,可以在系统接收和发送数据的间隙去处理一些其他的命令。串口中断方式相比查询方式设计要相对复杂,需要更大的堆栈空间和存储空间,例如接收和发送缓存,更大的代码量。
88.具体地,在系统设计中,为增加数据传输率、处理大量数据流、匹配具有不同传输率的系统为目的而广泛使用先进先出存储器(first input first output,fifo),从而提高了系统性能。先进先出存储器(first input first output,fifo)是一个先入先出的双
口缓冲器,即第一个进入其内的数据第一个被移出,其中一个是存储器的输入口,另一个口是存储器的输出口。对于单片先进先出存储器(first input first output,fifo)来说,主要有两种结构:触发导向结构和零导向传输结构。触发导向传输结构的先进先出存储器(first input first output,fifo)是由寄存器阵列构成的,零导向传输结构的先进先出存储器(first input first output,fifo)是由具有读和写地址指针的双口随机存取存储器(random access memory,ram)构成。
89.先进先出存储器(first input first output,fifo)是系统的缓冲环节,如果没有先进先出存储器(first input first output,fifo),整个系统就不可能正常工作,它主要有几方面的功能:
90.1)对连续的数据流进行缓存,防止在进机和存储操作时丢失数据;
91.2)数据集中起来进行进栈和存储,可避免频繁的总线操作,减轻cpu的负担;
92.3)允许系统进行直接存储器访问(direct memory access,dma)操作,提高数据的传输速度。这是至关重要的一点,如果不采用直接存储器访问(direct memory access,dma)操作,数据传输将达不到传输要求,而且大大增加cpu的负担,无法同时完成数据的存储工作。
93.本发明提供一种控制数据的发送方法,所述方法获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的存储速率;若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。通过上述方式,该发明通过设置发送时延,确定了发送数据的时间,解决了可能由于发送速率大于缓冲区的转存速率,导致数据被覆盖而无法发送一块完整数据的情况,保证了每一个待发送数据均可被完整发送。由此,通过设置发送时延确定发送数据的时间,保证了发送数据的完整性。
94.基于上述图2所示实施例,本实施例中,步骤s10之后还包括:
95.若所述发送速率不大于所述存储速率,则根据所述发送速率,计算得到所述发送端发送所述待发送数据的发送时间,作为所述发送时延。
96.本实施例中,若所述发送速率不大于所述存储速率,则对于所述待发送数据来说,发送时间不小于所述存储时间,为避免发送的数据被覆盖,则选择以所述发送时间作为所述发送时延。
97.本实施例提供一种控制数据的发送方法,所述方法获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的存储速率;若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。通过上述方式,该发明通过设置发送时延,确定了发送数据的时间,解决了可能由于发送速率大于缓冲区的转存速率,导致数据被覆盖而无法发送一块完整数据的情况,保证了每一个待发送数据均可被完整发送。由此,通过设置发送时延确定发送数据的时间,保证了发送数据的完整性。
98.此外,本发明实施例还提供一种控制数据的发送装置。
99.参照图3,图3为本发明一种控制数据的发送装置的功能模块示意图。
100.本实施例中,所述控制数据的发送装置包括:
101.速率获取模块10,用于获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的速率;
102.发送时延计算模块20,用于若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;
103.控制数据发送模块30,用于根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。
104.进一步地,所述速率获取模块10具体包括:
105.发送速率获取单元,用于获取所述发送速率;
106.存储速率获取单元,用于获取所述存储速率。
107.进一步地,所述发送时延计算模块20具体包括:
108.发送时间计算单元,用于根据所述待发送数据和所述发送速率,计算所述发送时间;
109.存储时间计算单元,用于根据所述待发送数据和所述存储速率,计算所述存储时间;
110.发送时延确定单元,用于若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延。
111.进一步地,所述控制数据发送模块30具体包括:
112.轮询中断单元,用于根据轮询阶段判断结果,控制所述发送端向所述接收端发送下一待发送数据;
113.定时中断单元,用于根据定时中断阶段判断结果,控制所述发送端向所述接收端发送下一待发送数据;
114.通用异步收发器中断单元,用于根据通用异步收发器中断阶段判断结果,控制所述发送端向所述接收端发送下一待发送数据。
115.进一步地,所述控制数据的发送装置还包括缓冲区判断模块,所述缓冲区判断模块包括:
116.可用缓冲区判断单元,用于判断所述接收端是否存在可用缓冲区,其中所述可用缓冲区的可用存储空间大小不小于所述待发送数据的大小;
117.发送流程中断单元,用于若所述接收端不存在所述可用缓冲区,则中断所述待发送数据的发送流程;
118.数据发送单元,若所述接收端存在所述可用缓冲区,则执行:根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。
119.进一步地,所述控制数据的发送装置还包括轮询模块,所述轮询模块包括:
120.可用缓冲区判断单元,用于在预设间隔时长达到预设时间阈值且所述发送端的轮询阶段检测到存在下一待发送数据时,则判断所述接收端是否存在所述可用缓冲区,其中,所述预设间隔时长为所述发送端完成一次数据发送后等待的时间;
121.数据发送单元,用于若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;
122.轮询退出单元,用于若所述接收端不存在所述可用缓冲区,则退出所述轮询阶段。
123.进一步地,所述控制数据的发送装置还包括定时中断模块,所述定时中断模块包括:
124.空闲中断状态判断单元,用于进入定时中断阶段,通过所述发送时延对应的定时函数修改中断标志,并判断所述串口发送模块是否处于空闲中断状态,其中,所述中断标志为所述通用异步收发器中的串口发送模块中的标志;
125.数据发送单元,用于若所述串口发送模块处于所述空闲中断状态,且存在所可用述缓冲区,则发送数据至所述可用缓冲区;
126.定时中断退出单元,用于若所述串口发送模块未处于空闲中断状态或不存在所述可用缓冲区,则退出所述定时中断阶段。
127.进一步地,所述控制数据的发送装置还包括通用异步收发器中断模块,所述通用异步收发器中断模块包括:
128.可用缓冲区判断单元,用于进入通用异步收发器中断阶段,判断所述接收端是否存在所述可用缓冲区;
129.数据发送单元,用于若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;
130.通用异步收发器中断退出单元,用于若所述接收端不存在所述可用缓冲区,则退出所述通用异步收发器中断阶段。
131.此外,本发明实施例还提供一种计算机可读存储介质。
132.本发明计算机可读存储介质上存储有控制数据的发送程序,其中所述控制数据的发送程序被处理器执行时,实现如上述的控制数据的发送方法的步骤。
133.其中,控制数据的发送程序被执行时所实现的方法可参照本发明控制数据的发送方法的各个实施例,此处不再赘述。
134.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
135.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
136.本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
137.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
138.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

技术特征:
1.一种控制数据的发送方法,其特征在于,所述方法包括:获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的速率;若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。2.根据权利要求1所述的控制数据的发送方法,其特征在于,所述根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据之前,还包括:判断所述接收端是否存在可用缓冲区,其中所述可用缓冲区的可用存储空间大小不小于所述待发送数据的大小;若所述接收端不存在所述可用缓冲区,则中断所述待发送数据的发送流程;若所述接收端存在所述可用缓冲区,则执行:根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。3.根据权利要求2中所述的控制数据的发送方法,其特征在于,所述获取发送速率以及存储速率之前,还包括:在预设间隔时长达到预设时间阈值且所述发送端的轮询阶段检测到存在下一待发送数据时,则判断所述接收端是否存在所述可用缓冲区,其中,所述预设间隔时长为所述发送端完成一次数据发送后等待的时间;若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;若所述接收端不存在所述可用缓冲区,则退出所述轮询阶段。4.根据权利要求3所述的控制数据的发送方法,其特征在于,所述若所述接收端不存在所述可用缓冲区,则退出所述轮询阶段之后,包括:进入定时中断阶段,通过所述发送时延对应的定时函数修改中断标志,并判断所述串口发送模块是否处于空闲中断状态,其中,所述中断标志为所述通用异步收发器中的串口发送模块中的标志;若所述串口发送模块处于所述空闲中断状态,且存在所可用述缓冲区,则发送数据至所述可用缓冲区;若所述串口发送模块未处于空闲中断状态或不存在所述可用缓冲区,则退出所述定时中断阶段。5.根据权利要求4所述的控制数据的发送方法,其特征在于,所述若所述串口发送模块未处于空闲中断状态或不存在所述可用缓冲区,则退出所述定时中断阶段之后,包括:进入通用异步收发器中断阶段,判断所述接收端是否存在所述可用缓冲区;若所述接收端存在所述可用缓冲区,则发送数据至所述可用缓冲区;若所述接收端不存在所述可用缓冲区,则退出所述通用异步收发器中断阶段。6.根据权利要求1所述的控制数据的发送方法,其特征在于,所述获取发送速率以及存储速率之后,还包括:若所述发送速率不大于所述存储速率,则根据所述发送速率,计算得到所述发送端发送所述待发送数据的发送时间,作为所述发送时延。
7.根据权利要求1-6中任一项所述的控制数据的发送方法,其特征在于,所述获取发送速率以及存储速率之前,还包括:获取所述接收端的缓冲区转存数据至内存的转存速率作为所述存储速率。8.一种控制数据的发送装置,其特征在于,所述控制数据的发送装置包括:速率获取模块,用于获取发送速率以及存储速率,其中,所述发送速率为通用异步收发器的发送端发送当前待发送数据的速率,所述存储速率为所述通用异步收发器的接收端存储所述当前待发送数据的速率;发送时延计算模块,用于若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;控制数据发送模块,用于根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。9.一种控制数据的发送设备,其特征在于,所述控制数据的发送设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的控制数据的发送程序,其中所述控制数据的发送程序被所述处理器执行时,实现如权利要求1-7中任一项所述的控制数据的发送方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有一种控制数据的发送程序,其中所述控制数据的发送程序被处理器执行时,实现如权利要求1-7中任一项所述控制数据的发送方法的步骤。

技术总结
本发明提供一种控制数据的发送方法,所述方法获取发送速率以及存储速率;若所述发送速率大于所述存储速率,则根据所述存储速率,计算得到所述接收端存储所述待发送数据的存储时间,作为发送时延;根据所述发送时延,控制所述发送端向所述接收端发送下一待发送数据。通过上述方式,该发明根据所述发送速率,设置发送时延,确定了发送数据的时间间隔,解决了可能由于发送速率大于缓冲区的转存速率,导致数据被覆盖而无法发送一块完整数据的情况,保证了每一个待发送数据均可被完整发送。由此,通过设置发送时延确定发送数据的时间,保证了发送数据的完整性。送数据的完整性。送数据的完整性。


技术研发人员:闫俊婷 张博文 赵晓雷 贾瀚森
受保护的技术使用者:北京比特大陆科技有限公司
技术研发日:2022.06.30
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-10342.html

最新回复(0)