一种数据写入方法、设备及存储介质与流程

文档序号:31632008发布日期:2022-09-24 02:13阅读:78来源:国知局
一种数据写入方法、设备及存储介质与流程

1.本技术涉及数据存储技术领域,具体而言,涉及一种数据写入方法、设备及存储介质。


背景技术:

2.航空航天为科学研究的发展做出了重要贡献,近年来,随着我国综合国力和科技水平的提高,我国的航天事业迅猛发展,各型号卫星需求强烈,由其对高集成度、小型化的卫星平台提出了更高的使用要求。
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.获取所述第一数据中剩余序列化数组的长度值;
30.计算所述第一数据中剩余序列化数组的长度值与所述预设长度值之间的差值;
31.根据所述差值从所述第二数据的首字节对第二数组的序列化数组长度值进行截取,得到与所述差值长度相等的首行数组。
32.结合第一方面的第一种可能的实施方式或第二种可能的实施方式,本技术实施例提供了第一方面的第六种可能的实施方式,其中,将所述第一数据中剩余序列化数组与从所述第二数据头部截取的首行数组在依次顺序写入存储器中,包括:
33.根据所述剩余序列化数组中字节的长度,确定所述剩余序列化数组每一帧的余帧数据;
34.根据所述首行数组中字节的长度,确定所述首行数组每一帧的首帧数据;
35.将所述剩余序列化数组的余帧数据和所述第二数据头部截取的首行数组的首帧数据依次顺序写入存储器中。
36.结合第一方面的第一种可能的实施方式或第二种可能的实施方式,本技术实施例提供了第一方面的第七种可能的实施方式,其中,依次根据所述预设长度值对所述第二数据中序列化数组中除所述首行数组外的数组进行截取,得到多段第二目标数组,包括:
37.从所述第二数据中序列化数组中除所述首行数组外的字节位置,读取第二数据的序列化数组;
38.对所述第二数据的序列化数组的总长度进行累加,得到第二目标长度值;
39.根据所述预设长度值对所述序列化数组的第二目标长度值进行截取,得到与所述预设长度值相等的多段第二目标数组。
40.结合第一方面的第一种可能的实施方式或第二种可能的实施方式,本技术实施例提供了第一方面的第八种可能的实施方式,其中,在每一个时钟周期内,分别将每段所述第二目标数组依次顺序写入存储器中,包括:
41.响应控制单元的传送指令,在每一个时钟周期内的开始时刻,从多段所述第二目标数组的首字节地址开始,依次顺序读取每段第二目标数组;
42.以数据流的形式将读取的每段所述第二目标数组依次顺序写入存储器中。
43.第三方面,本技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项的数据写入方法步骤。
44.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如数据写入方法步骤。
45.本技术实施例提供的一种数据写入方法,与相关技术cpu控制单元在写余帧数据操作时,为了满足写入要求,需要强制填充无效的空白数据才能满足写要求相比,本方法将导航数据包中第一数据的序列化数组写入第一数据缓冲区;根据预设长度值对第一数据的序列化数组进行截取,分别得到多段第一目标数组和小于预设长度值的剩余序列化数组;在每一个时钟周期内,分别将得到的多段第一目标数组依次顺序写入存储器中;将再次接收的新导航数据包中第二数据的序列化数组写入第二数据缓冲区;根据预设长度值与第一数据中剩余序列化数组的长度值之间的差值,从第二数据的头部截取与差值相等的首行数组;将第一数据中剩余序列化数组与从第二数据头部截取的首行数组在依次顺序写入存储器中;依次根据预设长度值对第二数据中序列化数组中除首行数组外的数组进行截取,得到多段第二目标数组;在每一个时钟周期内,分别将得到的多段第二目标数组依次顺序写
入存储器中。具体来说,地面星载计算机根据第一数据缓冲区和第二数据缓冲区的写入状态,将导航数据包分别写入第一数据缓冲区和第二数据缓冲区,通过两个数据缓冲区分别对写入数据的长度进行计算,再根据计算的长度值进行截取,得到满足写入要求的目标数组和剩余序列数组,然后根据两个数据缓冲区内设置的写指针和写平移量将剩余序列化数组与新的目标数组顺序写入存储器中,完成首尾数组的拼接,实现了通过两个数据缓冲区将剩余序列数组和新的目标数组的分别存储及首尾数据拼接,避免了剩余序列数组前移复制,占用存储空间的问题,提高了存储器的运行效率,节约了星地通信的频谱资源。
46.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
47.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
48.图1示出了本技术实施例所提供的一种数据写入方法的流程图。
49.图2示出了本技术实施例所提供的一种数据写入方法中结构框图。
50.图3示出了本技术实施例所提供的一种数据写入方法中实施例的示意图。
51.图4示出了本技术实施例所提供的一种计算机设备的结构示意图。
具体实施方式
52.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
53.考虑到导航数据包中的余帧数据在写入长度不能满足写入长度要求时,需填充空白数据,这就使得空白的无效数据会占用存储器的存储空间,使得存储器的运行效率低;基于此,本技术实施例提供了一种数据写入方法,下面通过实施例进行描述。
54.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
55.图1示出了本技术实施例所提供的一种数据写入方法流程示意图;如图1、图2所示,具体包括以下步骤:
56.步骤s10,响应控制单元的第一操作指令,将导航数据包中第一数据的序列化数组写入第一数据缓冲区,导航数据包中携带有地面星载计算机通过卫星下行链路获取的遥测数据。
57.步骤s10在具体实施时,卫星下行链路将不同时刻获取到的导航数据包发送至地
面星载计算机,地面星载计算机通过控制单元下发第一操作指令,根据控制单元的操作指令,从导航数据包中读取第一数据,根据控制单元内部编码器对第一数据进行编码,生成第一数据的序列化数组,将第一数据缓冲区内第一写指针以寻址方式加载到第一数据开始向后首字节地址,从第一数据首字节地址对序列化数组进行累加,直到达到序列化数组的尾字节,即得到当前第一数据从首地址到累加第一数据的序列化数组的写平移量,根据第一写指针和第一写偏移量将第一数据的序列化数组写入第一数据缓冲区,其中,第一个导航数据包为不同时刻卫星通过下行链路获取到的遥测数据。
58.步骤s20,根据预设长度值对第一数据的序列化数组进行截取,分别得到多段第一目标数组和小于预设长度值的剩余序列化数组。
59.步骤s20在具体实施时,将第一数据缓冲区内的第一写指针加载到第一数据的序列化数组开始向后首字节地址,该地址作为第一数据的写入地址,根据第一数据的首字节地址对序列化数组的总长度进行累加,得到第一目标长度值,根据预设长度值从该序列化数组的首字节地址作为起始位置,对第一数据的序列化数组进行截取,得到与预设长度值相等的多段第一目标数组。
60.步骤s30,在每一个时钟周期内,分别将得到的多段第一目标数组依次顺序写入存储器中。
61.步骤s30在具体实施时,响应控制单元的传送指令,在每一个时钟周期的开始时刻,读取每段第一目标数组的首字节地址开始,利用寻址函数从每段第一目标数组的首地址向该数组的尾字节处进行累加,得到每段第一目标数组的字节数量,根据每段第一目标数组的字节数量,计算每段第一目标数组的字节上每一帧的时间间隔,即得到每段第一目标数组的字节数量每一帧的数据,将每段第一目标数组从首字节到尾字节的每一帧数据依次顺序写入存储器中,这里采用随机访问函数从每段第一目标数组尾字节出返回到将要写入的第一目标数组的开始位置。
62.步骤s40,响应控制单元的第二操作指令,将再次接收的新导航数据包中第二数据的序列化数组写入第二数据缓冲区,新导航数据包中携带有地面星载计算机通过卫星下行链路获取的遥测数据。
63.步骤s40在具体实施时,新导航数据包为卫星获取到的遥测数据,卫星通过卫星下行链路将获取到的新导航数据包发送到地面星载计算机,地面星载计算机通过控制单元下发第二操作指令,根据控制单元的操作指令,控制单元从第二数据缓冲区中获取登录标识符的状态值,若第二数据缓冲区当前的登录标识符的状态值为0,则表示第二数据缓冲区为写入状态,此时控制单元以定时查询的方式从导航数据包中读取第二数据,根据控制单元内部编码器对第二数据进行编码,生成第二数据的序列化数组,再以寻址方式将第二数据缓冲区的第二写指针加载到第二数据开始向后首字节地址,从第二数据以首字节地址对序列化数组进行累加,直到达到序列化数组的尾字节,即得到第二数据从首字节地址到累加第二数据的序列化数组的第二写平移量,根据第二写指针和第二写偏移量将第二数据的序列化数组写入第二数据缓冲区。
64.步骤s50,根据预设长度值与所述第一数据中剩余序列化数组的长度值之间的差值,从第二数据的头部截取与差值相等的首行数组。
65.步骤s50在具体实施时,响应控制单元下发的传送指令,第一数据缓冲区将第一写
指针加载到第一数据中剩余序列化数组的首字节处,第一写指针从当前的首字节地址向剩余序列化数组的尾字节移动进行长度累加,计算剩余序列化数组的长度值,根据预设长度值减去剩余序列化数组的长度值,确定两者之间的差值,根据计算的差值,从第二数组的序列化数组的头部进行截取,得到与该计算差值相等长度的首行数组。
66.步骤s60,将第一数据中剩余序列化数组与从第二数据头部截取的首行数组在依次顺序写入存储器中,以完成剩余序列化数组和从第二数据头部截取的首行数组的拼接。
67.步骤60在具体实施时,将第一数据缓冲区内的第一写指针加载第一数据中剩余序列化数组的首字节地址,第一写指针从当前的首字节地址向剩余序列化数组的尾字节移动进行字节累加,得到第一数据中剩余序列化数组的字节数量,即得到剩余序列化数组的首字节地址到尾字节的移动的偏移量,根据第一数据中剩余序列化数组的字节数量上每一帧的时间间隔,确定第一数据中剩余序列化数组的余帧数据,根据剩余序列化数组的偏移量将每一传输帧的余帧数据写入存储器中,完成第一数据中剩余序列化数组写入后,然后将第二数据缓冲区内的第二写指针加载第二数据的首字节地址,从第二数据的首字节地址对第二数据的头部数组进行截取,得到第二数组的首行数组,根据首行数组的字节数量,得到首行数组的首字节地址到尾字节的移动的偏移量,根据第二数据的首行数组上每一帧的时间间隔,确定首行数组的每一帧的首帧数据,根据首行数组的偏移量将首行数组的每一帧的首帧数据写入存储器中;或者根据首行数组初始化一个双向读指针,通过双向读指针将剩余序列化数组和首行数组写入存储器中,在写入过程中完成了第一数据缓冲区中剩余序列化数组和第二数据缓冲区的数据拼接,该数据拼接长度与预设长度值相等。
68.步骤s70,依次根据预设长度值对所述第二数据中序列化数组中除首行数组外的数组进行截取,得到多段第二目标数组。
69.步骤70在具体实施时,完成数组拼接后,根据首行数组加载一个双向读指针,将双向读指针加载到第二数据截取首行数组向后的字节位置,双向读指针从第二数据的序列化数组的首字节地址向尾字节进行长度累加,计算第二数据中序列化数组的长度值,根据预设长度值对计算的第二数据中序列化数组的长度值进行截取,得到多段第二目标数组。
70.步骤s80,在每一个时钟周期内,分别将得到的多段第二目标数组依次顺序写入存储器中。
71.步骤80在具体实施时,第二数据缓冲区响应控制单元下发的传送指令,以时钟控制器每一个时钟周期的开始时刻,分别从每段第二目标数组的首字节地址开始,利用寻址函数或随机函数从每段第二目标数组的首地址向该数组的尾字节处进行累加,得到每段第二目标数组的字节数量,根据每段第二目标数组的字节数量,计算每段第二目标数组的字节上每一帧的时间间隔,即得到每段第二目标数组的字节数量每一帧的数据,再以数据流的形式,将每段第二目标数组依次顺序写入存储器中,这里采用随机访问函数从每段第二目标数组尾字节出返回到将要写入的第二目标数组的开始位置。
72.在一个可行的实现方案中,上述步骤s10中,响应控制单元的第一操作指令,将导航数据包中第一数据的序列化数组写入第一数据缓冲区,导航数据包中携带有地面星载计算机通过卫星下行链路获取的遥测数据,包括:
73.步骤101,在第一数据缓冲区处于写入状态下,以定时查询的方式从导航数据包中读取第一数据。
74.步骤102,对读取到的第一数据进行编码,生成第一数据的序列化数组。
75.步骤103,根据第一数据缓冲区内的第一写指针和第一写平移量,将第一数据的序列化数组写入第一数据缓冲区,第一写指针指示了导航数据包中第一数据的首字节地址,第一写偏移量表示从第一数据的首字节地址到每一帧的序列化数组移动距离。
76.步骤101、102、103在具体实施时,控制单元判断第一数据缓冲区是否满足数据写入要求,先从第一数据缓冲区中获取登录标识符的状态值,若第一数据缓冲区当前的登录标识符的状态值为0,则表示第一数据缓冲区为写入状态,根据控制单元的读取指令,将第一写指针加载到第一数据的首字节处,从第一数据的首字节开始向尾字节移动读取第一数据,根据控制单元内部编码器对读取的第一数据进行编码,生成第一数据的序列化数组,将第一数据缓冲区内第一写指针以寻址方式加载到第一数据开始向后首字节地址,从第一数据首字节地址对序列化数组进行累加,直到达到序列化数组的尾字节处,即得到当前第一数据从首地址到累加第一数据的序列化数组的写平移量,根据第一写指针和第一写偏移量将第一数据的序列化数组写入第一数据缓冲区,其中,第一个导航数据包为不同时刻卫星通过下行链路获取到的遥测数据。
77.例如:地面星载计算机中包含第一数据缓冲区和第二数据缓冲区,这里根据bufflag表示两个数据缓冲区的登录标识符的使用状态,如果第一数据缓冲区的登录标识符的状态值即bufflag=0,则第一数据缓冲区满足写入要求,如果第一数据缓冲区的登录标识符的状态值不为bufflag≠0,则跳转第二数据缓冲区。
78.在一个可行的实现方案中,上述步骤s20中,根据预设长度值对第一数据的序列化数组进行截取,分别得到多段第一目标数组和小于预设长度值的剩余序列化数组,包括:
79.步骤201,对第一数据的序列化数组的总长度进行累加,得到第一目标长度值。
80.步骤202,根据预设长度值对序列化数组的第一目标长度值进行截取,得到与预设长度值相等的多段第一目标数组和小于预设长度值的剩余序列化数组。
81.步骤201、202在具体实施时,将第一数据缓冲区内的第一写指针加载到第一数据的序列化数组开始向后首字节地址,该地址作为第一数据的写入地址,从序列化数组的首字节地址开始向后移动到序列化数组的尾字节进行累加,利用随机函数或哈希函数计算第一数据的序列化数组的总长度,根据计算的总长度,确定第一数据的序列化数组对应的第一目标长度值,根据预设长度值从第一数据的序列化数组的首字节地址作为起始位置,对第一数据的序列化数组进行截取,截取成与预设长度值相等长度的多段第一目标数组,同时将小于预设长度值的序列化数组的尾部数据作为剩余序列化数组。
82.在一个可行的实现方案中,上述步骤s30中,在每一个时钟周期内,分别将得到的多段第一目标数组依次顺序写入存储器中,包括:
83.步骤301,响应控制单元的传送指令,在每一个时钟周期内的开始时刻,从多段第一目标数组的首字节地址开始,依次顺序读取每段第一目标数组。
84.步骤302,以数据流的形式将读取的每段第一目标数组顺序写入存储器中。
85.步骤301、302在具体实施时,第一数据缓冲区响应控制单元下发的传送指令,以时钟控制器每一个时钟周期的开始时刻,从多段第一目标数组中顺序读取当前首字节地址开始,利用寻址函数从每段第一目标数组的首地址向该数组的尾字节处进行累加,得到每段第一目标数组的字节数量,根据每段第一目标数组的字节数量,计算每段第一目标数组的
字节上每一帧的时间间隔,即得到每段第一目标数组的字节数量每一帧的数据,再以数据流的形式,将每段第一目标数组依次顺序写入存储器中,这里采用随机访问函数从每段第一目标数组尾字节出返回到将要写入的第一目标数组的开始位置。
86.在一个可行的实现方案中,上述步骤s40中,响应控制单元的第二操作指令,将再次接收的新导航数据包中第二数据的序列化数组写入第二数据缓冲区,新导航数据包中携带有地面星载计算机通过卫星下行链路获取的遥测数据,包括:
87.步骤401,在第二数据缓冲区处于写入状态下,以定时查询的方式从新导航数据包中读取第二数据。
88.步骤402,对读取到的第二数据进行编码,生成第二数据的序列化数组。
89.步骤403,根据第二数据缓冲区内的第二写指针和第二写平移量,将第二数据的序列化数组写入第二数据缓冲区,第二写指针指示了新导航数据包中第二数据的首字节地址,第二写偏移量表示从第二数据的首字节地址到每一帧的序列化数组的移动距离。
90.步骤401、402、403在具体实施时,控制单元先判断第一数据缓冲区和第二数据缓冲区是否满足数据写入要求,控制单元分别从第一数据缓冲区中获取登录标识符的状态值,如果第一数据缓冲区的登录标识符的状态值为0则满足写入要求,如果第一数据缓冲区的登录标识符的状态值不为0 则跳转第二数据缓冲区,控制单元从第二数据缓冲区获取登录标识符的状态值,如果第二数据缓冲区的登录标识符的状态值为0则满足写入要求,将第二写指针加载到第二数据的首字节,从第二数据的首字节开始向尾字节移动读取第二数据,根据控制单元内部编码器对读取的第二数据进行编码,生成第二数据的序列化数组,将第二数据缓冲区内第二写指针以寻址方式加载到第二数据开始向后首字节地址,从第二数据首字节地址对序列化数组进行累加,直到达到序列化数组的尾字节处,即得到当前第二数据从首地址到累加第二数据的序列化数组的写平移量,根据第二写指针和第二写偏移量将第二数据的序列化数组写入第二数据缓冲区,其中,第二数据可以为地面星载计算机在不同时刻获取到的遥测数据。
91.例如:地面星载计算机中包含第一数据缓冲区和第二数据缓冲区,这里根据bufflag表示两个数据缓冲区的登录标识符的使用状态,如果第一数据缓冲区的登录标识符的状态值即bufflag=0,则第一数据缓冲区满足写入要求,如果第一数据缓冲区的登录标识符的状态值bufflag=1,则第一数据缓冲区不满足写入要求,跳转第二数据缓冲区,控制单元判断第二数据缓冲区获取登录标识符的状态值bufflag,如果第二数据缓冲区的登录标识符的状态值为bufflag=0,则第二数据缓冲区满足写入要求,如果第二数据缓冲区的登录标识符的状态值bufflag=1,则第二数据缓冲区不满足写入要求。
92.在一个可行的实现方案中,上述步骤s50中,根据预设长度值与第一数据中剩余序列化数组的长度值之间的差值,从第二数据的头部截取与差值相等的首行数组,包括:
93.步骤501,获取第一数据中剩余序列化数组的长度值。
94.步骤502,计算第一数据中剩余序列化数组的长度值与预设长度值之间的差值。
95.步骤503,根据差值从第二数据的首字节对第二数组的序列化数组长度值进行截取,得到与差值长度相等的首行数组。
96.步骤501、502、503在具体实施时,响应控制单元下发的传送指令,第一数据缓冲区将第一写指针加载到第一数据中剩余序列化数组的首字节处,利用寻址函数对第一写指针
从当前的首字节地址移动到剩余序列化数组的尾字节处进行累加,计算剩余序列化数组的长度值,再根据预设长度值减去剩余序列化数组的长度值,确定两者之间的差值,再将第二数据缓冲区内的第二写指针加载第二数据的首字节地址,根据预设长度值和剩余序列化数组的长度值之间的差值,从第二数据的首字节地址向后对第二数据的头部数组进行截取,得到与该计算差值相等长度的首行数组。
97.在一个可行的实现方案中,上述步骤s60中,将第一数据中剩余序列化数组与从第二数据头部截取的首行数组在依次顺序写入存储器中,包括:
98.步骤601,根据剩余序列化数组中字节的长度,确定剩余序列化数组每一帧的余帧数据。
99.步骤602,根据首行数组中字节的长度,确定首行数组每一帧的首帧数据。
100.步骤603,将剩余序列化数组的余帧数据和第二数据头部截取的首行数组的首帧数据依次顺序写入存储器中。
101.步骤601、602、603在具体实施时,将第一数据缓冲区内的第一写指针加载第一数据中剩余序列化数组的首字节地址,第一写指针从当前的首字节地址向剩余序列化数组的尾字节移动进行字节累加,得到第一数据中剩余序列化数组的字节数量,即得到剩余序列化数组的首字节地址到尾字节的移动的偏移量,根据第一数据中剩余序列化数组的字节数量上每一帧的时间间隔,确定第一数据中剩余序列化数组的余帧数据,根据剩余序列化数组的偏移量将每一传输帧的余帧数据写入存储器中,完成第一数据中剩余序列化数组写入后,然后将第二数据缓冲区内的第二写指针加载第二数据的首字节地址,从第二数据的首字节地址对第二数据的头部数组进行截取,得到第二数组的首行数组,根据首行数组的字节数量,得到首行数组的首字节地址到尾字节的移动的偏移量,根据第二数据的首行数组上每一帧的时间间隔,确定首行数组的每一帧的首帧数据,根据首行数组的偏移量将首行数组的每一帧的首帧数据写入存储器中;或者根据首行数组初始化一个双向读指针,通过双向读指针将剩余序列化数组和首行数组写入存储器中,在写入过程中完成了第一数据缓冲区中剩余序列化数组和第二数据缓冲区的数据拼接,该数据拼接长度与预设长度值相等。
102.在一个可行的实现方案中,上述步骤s70中,将第一数据中剩余序列化数组与从第二数据头部截取的首行数组在依次顺序写入存储器中,包括:
103.步骤701,从第二数据中序列化数组中除首行数组外的字节位置,读取第二数据的序列化数组。
104.步骤702,对第二数据的序列化数组的总长度进行累加,得到第二目标长度值。
105.步骤703,根据预设长度值对序列化数组的第二目标长度值进行截取,得到与预设长度值相等的多段第二目标数组。
106.步骤701、702、703在具体实施时,从第二数据中序列化数组中除首行数组向后的字节位置作为写入地址,根据首行数组加载一个双向读指针,将双向读指针加载到第二数据截取首行数组向后的字节位置,双向读指针从第二数据的序列化数组的首字节地址移动到尾字节处进行累加,得到第二数据的序列化数组的字节数量,根据该序列化数组的字节数量计算第二数据中序列化数组的长度值,根据预设长度值对计算的第二数据中序列化数组的长度值进行截取,截取成与预设长度值相等的多段第二目标数组。
107.在一个可行的实现方案中,上述步骤s80中,在每一个时钟周期内,分别将每段第二目标数组依次顺序写入存储器中,包括:
108.步骤801,响应控制单元的传送指令,在每一个时钟周期内的开始时刻,从多段第二目标数组的首字节地址开始,依次顺序读取每段第二目标数组。
109.步骤802,以数据流的形式将读取的每段第二目标数组依次顺序写入存储器中。
110.步骤801、802在具体实施时,第二数据缓冲区响应控制单元下发的传送指令,以时钟控制器每一个时钟周期的开始时刻,从多段第二目标数组中顺序读取当前首字节地址开始,利用寻址函数或随机函数从每段第二目标数组的首地址向该数组的尾字节处进行累加,得到每段第二目标数组的字节数量,根据每段第二目标数组的字节数量,计算每段第二目标数组的字节上每一帧的时间间隔,即得到每段第二目标数组的字节数量每一帧的数据,再以数据流的形式,将每段第二目标数组依次顺序写入存储器中,这里采用随机访问函数从每段第二目标数组尾字节出返回到将要写入的第二目标数组的开始位置。
111.在一个可行的实现方案中,图3示出了本技术实施例所提供的一种数据写入方法中的具体实施例的示意图;
112.实施例:地面星载计算机内设置有两个数据缓冲区,第一数据缓冲区中设有第一写指针和第一写偏移量,第二数据缓冲区中分别设有第二写指针和第二写偏移量,控制单元判断两个数据缓冲区的登录标识符是否满足使用状态,如果第一数据缓冲区的登录标识符的状态值bufflag=0,则满足写入要求,首先,将第一写指针加载到第一数据的首字节处,从第一数据的首字节开始向尾字节移动读取第一数据,根据控制单元内部编码器对读取的第一数据进行编码,生成第一数据的序列化数组,从第一数据首字节地址对序列化数组进行累加,直到达到序列化数组的尾字节处得到当前第一数据从首地址到累加第一数据的序列化数组的写平移量,根据第一写指针和第一写偏移量将第一数据的序列化数组写入第一数据缓冲区,控制单元将第一数据缓冲区的登录标识符的状态值修改bufflag=1;将第一数据缓冲区内的第一写指针加载到第一数据的序列化数组开始向后首字节地址,从序列化数组的首字节地址开始向后移动到序列化数组的尾字节进行累加,确定第一数据的序列化数组对应的第一目标长度值,根据预设长度值从第一数据的序列化数组的首字节地址作为起始位置,对第一数据的序列化数组进行截取,截取成与预设长度值相等长度的多段第一目标数组,以数据流的形式,将多段第一目标数组依次顺序写入存储器中,同时将和小于预设长度值的第一数据中的剩余序列化数组暂存在第一数据缓冲区中;
113.然后,当地面星载计算机再次接收到新导航数据包时,控制单元判断第二数据缓冲区的登录标识符的状态值是否满足写入状态,如果第二数据缓冲区的登录标识符的状态值bufflag=0,则第二数据缓冲区满足写入要求,将第二写指针加载到第二数据的首字节,从第二数据的首字节开始向尾字节移动读取第二数据,根据控制单元内部编码器对读取的第二数据进行编码,生成第二数据的序列化数组,从第二数据首字节地址对序列化数组进行累加,直到达到序列化数组的尾字节处,得到当前第二数据从首地址到累加第二数据的序列化数组的写平移量,根据第二写指针和第二写偏移量将第二数据的序列化数组写入第二数据缓冲区;然后,将第一数据缓冲区内的第一写指针加载第一数据中剩余序列化数组的首字节地址,第一写指针从当前的首字节地址向剩余序列化数组的尾字节移动进行字节累加,得到第一数据中剩余序列化数组的字节数量,该剩余序列化数组的字节数量作为剩
余序列化数组的首字节地址到尾字节的移动的偏移量,根据剩余序列化数组的偏移量将每一传输帧的余帧数据写入存储器中,完成第一数据中剩余序列化数组写入后,从第二数据的首字节地址对第二数据的头部数组进行截取,得到第二数组的首行数组,根据首行数组的字节数量,得到首行数组的首字节地址到尾字节的移动的偏移量,根据首行数组的偏移量将首行数组的每一帧的首帧数据写入存储器中,在写入过程中完成了第一数据缓冲区中剩余序列化数组和第二数据缓冲区的数据拼接;
114.最后,从第二数据中序列化数组中除首行数组向后的字节位置作为写入地址,双向读指针从第二数据的序列化数组的首字节地址移动到尾字节处进行累加,得到第二数据的序列化数组的字节数量,根据该序列化数组的字节数量计算第二数据中序列化数组的长度值,根据预设长度值对计算的第二数据中序列化数组的长度值进行截取,得到多段第二目标数组,再以数据流的形式,将每段第二目标数组依次顺序写入存储器中。
115.对应于图1中的数据写入方法,本技术实施例还提供了一种计算机设备90,如图4所示,该设备包括存储器901、处理器902及存储在该存储器901上并可在该处理器902上运行的计算机程序,其中,上述处理器902执行上述计算机程序时实现上述的方法。
116.响应控制单元的第一操作指令,将导航数据包中第一数据的序列化数组写入第一数据缓冲区,导航数据包中携带有地面星载计算机通过卫星下行链路获取的遥测数据;
117.根据预设长度值对第一数据的序列化数组进行截取,分别得到多段第一目标数组和小于预设长度值的剩余序列化数组;
118.在每一个时钟周期内,分别将得到的多段第一目标数组依次顺序写入存储器中;
119.响应控制单元的第二操作指令,将再次接收的新导航数据包中第二数据的序列化数组写入第二数据缓冲区,新导航数据包中携带有地面星载计算机通过卫星下行链路获取的遥测数据;
120.根据预设长度值与第一数据中剩余序列化数组的长度值之间的差值,从第二数据的头部截取与差值相等的首行数组;
121.将第一数据中剩余序列化数组与从第二数据头部截取的首行数组在依次顺序写入存储器中,以完成剩余序列化数组和从第二数据头部截取的首行数组的拼接;
122.依次根据预设长度值对第二数据中序列化数组中除首行数组外的数组进行截取,得到多段第二目标数组;
123.在每一个时钟周期内,分别将得到的多段第二目标数组依次顺序写入存储器中。
124.对应于图1中的数据写入方法,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行以下步骤:
125.响应控制单元的第一操作指令,将导航数据包中第一数据的序列化数组写入第一数据缓冲区,导航数据包中携带有地面星载计算机通过卫星下行链路获取的遥测数据;
126.根据预设长度值对第一数据的序列化数组进行截取,分别得到多段第一目标数组和小于预设长度值的剩余序列化数组;
127.在每一个时钟周期内,分别将得到的多段第一目标数组依次顺序写入存储器中;
128.响应控制单元的第二操作指令,将再次接收的新导航数据包中第二数据的序列化数组写入第二数据缓冲区,新导航数据包中携带有地面星载计算机通过卫星下行链路获取
的遥测数据;
129.根据预设长度值与第一数据中剩余序列化数组的长度值之间的差值,从第二数据的头部截取与差值相等的首行数组;
130.将第一数据中剩余序列化数组与从第二数据头部截取的首行数组在依次顺序写入存储器中,以完成剩余序列化数组和从第二数据头部截取的首行数组的拼接;
131.依次根据预设长度值对第二数据中序列化数组中除首行数组外的数组进行截取,得到多段第二目标数组;
132.在每一个时钟周期内,分别将得到的多段第二目标数组依次顺序写入存储器中。
133.基于上述分析可知,与相关技术中余帧数据在写入长度不能满足写入长度要求时,需填充空白数据相比,本技术实施例提供的地面星载计算机根据第一数据缓冲区和第二数据缓冲器的写入状态,将导航数据包分别写入第一数据缓冲区和第二数据缓冲区,通过两个数据缓冲区分别对写入数据的长度进行计算,再根据计算的长度值进行截取,得到满足写入要求的目标数组和剩余序列数组,然后根据两个数据缓冲区内设置的写指针和写平移量将剩余序列化数组与新的目标数组顺序写入存储器中,完成首尾数组的拼接,实现了通过两个数据缓冲区将剩余序列数组和新的目标数组的分别存储及首尾数据拼接,避免了剩余序列数组前移复制,占用存储空间的问题,提高了存储器的运行效率,节约了星地通信的频谱资源。
134.在本技术所提供的实施例中,应该理解到,所揭露设备和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
135.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
136.另外,在本技术提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
137.功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
138.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
139.最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术
的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围。都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1