一种接口数据存储方法、装置和计算机可读存储介质
文献发布时间:2023-06-19 11:11:32
技术领域
本申请涉及嵌入式软件接口技术领域,特别涉及一种接口数据存储方法、装置、电子设备和计算机可读存储介质。
背景技术
目前汽车嵌入式软件平台一般使用OSEK、AUTOSAR构架,两种都包含接口模块,用来生成对各个模块的数据、标志、信息等接口。相关技术中,一个接口需要用一个接口变量来存储接口数据,因此,接口越多,需要的接口变量越多,所需要的读写操作函数也越多,控制器所需的ROM和RAM空间就越高,软件的稳定性和可移植性不高。
发明内容
本申请的目的是提供一种接口数据存储方法,能够节省控制器资源,降低整个系统的成本、提高软件的可靠性和可移植性。其具体方案如下:
第一方面,本申请公开了一种接口数据存储方法,包括:
获取各个接口的接口信息;
根据所述接口信息中的接口长度和接口数量,生成接口数组;
调用所述接口数组的读函数,读取所述各个接口的接口数据;
调用所述接口数组的写函数,将所述各个接口的接口数据写入所述接口数组中所述各个接口对应的接口数据区域。
可选的,在将所述各个接口的接口数据写入所述接口数组中所述各个接口对应的接口数据区域之前,还包括:
设置所述接口数组中所述各个接口对应的接口数据区域的长度与所述各个接口的接口长度一致。
可选的,将所述各个接口的接口数据写入所述接口数组中所述各个接口对应的接口数据区域,包括:
对所述各个接口的接口数据进行位移操作以及逻辑运算,写入所述接口数组中所述各个接口对应的接口数据区域。
可选的,在将所述各个接口的接口数据写入所述接口数组中所述各个接口对应的接口数据区域之前,还包括:
将所述接口数组中所述各个接口对应的接口数据区域的数据清零。
可选的,在生成所述接口数组之前,还包括:
获取所述各个接口的接口名称和接口业务功能,将所述各个接口的接口名称和接口业务功能存储于所述接口数组。
第二方面,本申请公开了一种接口数据存储装置,包括:
获取模块,用于获取各个接口的接口信息;
生成模块,用于根据所述接口信息中的接口长度和接口数量,生成接口数组;
读取模块,用于调用所述接口数组的读函数,读取所述各个接口的接口数据;
写入模块,用于调用所述接口数组的写函数,将所述各个接口的接口数据写入所述接口数组中所述各个接口对应的接口数据区域。
可选的,还包括:
设置模块,用于设置所述接口数组中所述各个接口对应的接口数据区域的长度与所述各个接口的接口长度一致。
可选的,所述写入模块,包括:
写入单元,用于对所述各个接口的接口数据进行位移操作以及逻辑运算,写入所述接口数组中所述各个接口对应的接口数据区域。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述接口数据存储方法的步骤。
第四方面,本申请公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述接口数据存储方法的步骤。
本申请提供一种接口数据存储方法,包括:获取各个接口的接口信息;根据所述接口信息中的接口长度和接口数量,生成接口数组;调用所述接口数组的读函数,读取所述各个接口的接口数据;调用所述接口数组的写函数,将所述各个接口的接口数据写入所述接口数组中所述各个接口对应的接口数据区域。
可见,本申请通过生成接口数组,将读取的各个接口的接口数据存储于接口数组中,即使用一个接口数组来代替各个接口变量,存储所有接口的接口数据,且仅需两个读写函数来读取写入接口数据,避免了相关技术中由于一个接口对应一个接口变量,接口越多,所需接口变量越多,且读写操作函数也越多,导致控制器所需的ROM和RAM空间就越高,软件的稳定性和可移植性不高的缺陷,节省了控制器资源,降低了整个系统的成本、提高了软件的可靠性和可移植性。本申请同时还提供了一种接口数据存储装置、一种电子设备和计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种接口数据存储方法的流程图;
图2为本申请实施例所提供的一种具体接口数组的示意图;
图3为本申请实施例所提供的一种具体的接口5右移5位的示意图;
图4为本申请实施例所提供的一种具体的接口1右移5位的示意图;
图5为本申请实施例所提供的一种将Buffer[1]和Buffer[0]组合成临时变量Temp6的示意图;
图6为本申请实施例所提供的一种接口定义模块定义每个接口对应的信息的具体示意图;
图7为本申请实施例所提供的一种分配数值空间安装buffer的字节位置依次分布示意图;
图8为本申请实施例所提供的一种接口数据存储装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前嵌入式平台软件接口模块,每个接口对应一个变量,且每个接口对应一组函数(读操作函数、写操作函数),其中数据大小可以从1、2…、32…位数据,但是变量只有8、16、32位。假如需要传递一个2位的数据,控制器需要用一个8位的变量来存储相关信息,其中有6位数据未用到,浪费控制器资源。还有由于接口越多,对应的变量和读、写函数就越多,使用过程中控制器所需要的RAM、ROM的空间就越多,需要设置的变量多,变量初始化或者模式切换就越麻烦,容易遗漏。该设计软件编写复杂、对控制器资源要求很高、软件的稳定性和可移植性不高。基于上述技术问题,本实施例提供一种接口数据存储方法,具体请参考图1,图1为本申请实施例所提供的一种接口数据存储方法的流程图,具体包括:
S101、获取各个接口的接口信息。
本实施例并不限定接口信息的具体内容,可以包含接口长度,可以包含接口数量,也可以包含其他接口信息。
S102、根据接口信息中的接口长度和接口数量,生成接口数组。
本实施例中接口信息可以包含接口长度即各个接口的数据位数和接口数量,本实施例并不限定接口长度的具体大小,可以是3位,可以是3位,也可以其他位数。相应的,本实施例也不限定接口数量的具体个数,可以是3个,可以是4个,可以是任意个数的接口。可以理解的是,本实施例中根据接口信息的接口个数和接口长度来设置生成接口数组。其中,可根据接口数量来设置接口数组中接口数据区域的个数,即一个接口对应一个接口数据区域;根据接口长度设置各自对应的接口数据区域的长度。
在一种具体的实施例中,为了便于运维人员后期维护,在生成接口数组之前,还可以包括:
获取各个接口的接口名称和接口业务功能,将各个接口的接口名称和接口业务功能存储于接口数组。
即本实施例中获取到各个接口的接口名称和接口业务功能,并将这些信息存储到接口数组中,可以便于运维人员根据这些信息进行后期维护,也便于对数据的读写操作。
S103、调用接口数组的读函数,读取各个接口的接口数据。
本实施例中通过调用接口数组的读函数来读取各个接口的接口数据。可以理解的是,本实施例中仅利用一个读函数,即接口数组对应的读函数,可以读取各个接口的接口数据,降低了内存资源占用,避免了相关技术中每个接口均对应一个读函数,导致占用ROM、RAM内存较大的缺陷。
S104、调用接口数组的写函数,将各个接口的接口数据写入接口数组中各个接口对应的接口数据区域。
本实施例中通过调用接口数组的写函数来将各个接口的接口数据写入接口数组各个接口对应的接口数据区域。本实施例仅利用接口数组的写函数来将各个接口的接口数据写入接口数组,即仅利用一个写函数就能将所有接口的接口数据全部写入接口数组,有效减小读写函数占用的内存资源。
本实施例中并不限定将各个接口的接口数据写入接口数组中各个接口对应的接口数据区域的具体操作。在一种具体的实施例中,将各个接口的接口数据写入接口数组中各个接口对应的接口数据区域,可以包括:
对各个接口的接口数据进行位移操作以及逻辑运算,写入接口数组中各个接口对应的接口数据区域。
本实施例中通过对各个接口的接口数据进行位移操作以及逻辑运算,写入接口数组各个接口对应的接口数据区域。本实施例并不限定位移的具体位数,根据具体的接口数据而定。
在一种具体的实施例中,为了提高接口数据存入接口数组的正确率,在将各个接口的接口数据写入接口数组中各个接口对应的接口数据区域之前,还可以包括:
将接口数组中各个接口对应的接口数据区域的数据清零。
即将接口数据写入接口数组之前,将各个接口对应的接口数据区域的数据清零,可以提高接口数据存入接口数组的正确率。
在一种具体的实施例中,为了提高控制器资源的利用率,在将各个接口的接口数据写入接口数组中各个接口对应的接口数据区域之前,还可以包括:
设置接口数组中各个接口对应的接口数据区域的长度与各个接口的接口长度一致。
可以理解的是,通过设置接口数组中各个接口对应的接口数据区域的长度与各个接口的接口长度一致,可以提高控制器资源的利用率,避免了相关技术中变量存储接口数据时,有些数据位未占用,浪费控制器资源的现象。例如,相关技术中接口数据仅为2位,控制器需要用8位的变量来存储接口数据。
基于上述技术方案,本实施例通过生成接口数组,将读取的各个接口的接口数据存储于接口数组中,即使用一个接口数组来代替各个接口变量,存储所有接口的接口数据,且仅需两个读写函数来读取写入接口数据,节省了控制器资源,降低了整个系统的成本、提高了软件的可靠性和可移植性。
以下提供一种具体的嵌入式接口软件的实施例。该软件包括三个主要部分:接口模块、接口定义模块、及辅助自动生成模块。
(1)接口模块。
接口模块,负责所有变量的初始化及提供各个接口的读写操作,包含:接口数组、接口初始化函数、接口变量读函数、接口变量写函数。其中,接口数组存储所有接口的数据。图2为本实施例所提供的一种具体接口数组的示意图。接口数组中可以用不同的标识来区分不同接口数据的存放位置,接口数组的每个字节,字节中每位数据都有对应的接口数据。接口初始化函数,实现对所有接口变量的初始化,例如图2中的初始化数值,可以通过辅助生成工具来生成数据。
以下提供一种接口变量读、写函数具体应用实施例:
1)当读取的接口为1位时,如图2中接口5属于该类型,读取Buffer[1](可理解为接口数组所指向的存储容器)并将数据右移五位,取第一位数据,即可得到接口5的数据,如图3所示;写入数值时,将需要写的数组区域数据清零,同时将需要写的数据左移5位,与接口数组或运算、和运算将数据存入接口数组。
2)当读取的接口小于或等于8位并处于同一个字节内,如图2中接口1属于该类型,读取Buffer[0]的数值,并将数据右移五位,即可得到接口1的数据,如图4所示;写入数值时,将需要写的数组区域数据清零,同时将需要写的数据左移5位,与接口数组或运算、和运算将数据存入接口数组。
3)当读取的接口小于或等于16位并处于两个字节内,如图2中接口6属于该类型,将Buffer[1]和Buffer[0]组合成临时变量Temp6,并将Temp6数据右移四位,即可得到接口6的数据,如图5所示;写入数值时,将需要写的数组区域数据清零,同时将需要写的数据左移4位,与接口数组或运算、和运算将数据存入接口数组。
4)当读取的接口等于16位并处于同一个字节内,如图2中接口k+1属于该类型,可以通过读取Buffer[j+1]和Buffer[j+2]来读取相关数值。
(2)接口拓展模块。
接口拓展模块将各个接口与接口读写函数相连,其中每个接口有不同字节、位和长度,每个接口对应的信息:例如接口数据长度、接口名称、接口初始化数值等信息。
(3)接口定义模块。
接口定义模块将定义每个接口对应的信息:例如接口名称、接口长度、接口的使用模块和接口的设置模块。图6为接口定义模块定义每个接口对应的信息的具体示意图。
(4)辅助自动生成模块.
辅助自动生成模块需要根据接口定义模块定义的接口为接口数组中各个接口分配空间,并生成相对应的接口读、写函数。
1)在接口数组中为各个接口分配空间:如图5中接口定义有长度(3、5、1)三个长度不同的接口,分配的数值空间安装buffer的字节位置依次分布,如图7所示。
2)若每个接口在接口数组中分配的空间及长度能确认,可以得到如下数据:
读取变量的类型:按照变量定义可分为(U1、U8、U16、U32);
数据的起始字节和位数、结束的字节和位数;
数据读写方法(同一字节内的位数据操作、多个字节组合的位数据操作)。
3)为各个接口分配接口读写接口和读写的参数:
例如,通过宏定义定义读写接口格式如下:
读接口:Interface_Read_(变量的类型)_(接口类型)_(接口名称)_(使用模块)()
写接口:Interface_Write_(变量的类型)_(接口类型)_(接口名称)_(设置模块)(Value)
接口读函数(参数1,参数2,参数3)
参数1:字节位置;
参数2:字节起始位位置;
参数3:接口字节长度;
接口写函数(参数1,参数2,参数3,参数4)
参数1:字节位置;
参数2:字节起始位位置;
参数3:接口字节长度;
参数4:需要写入的数据。
基于上述实施例,本申请使用接口数组来代替各个变量,且仅需要两个接口读写函数,通过参数来区分各个接口,同时也方便使用其他工具对各个接口的生成,节省了控制器资源,设计更简单,降低了整个系统的成本、提高了软件的可靠性和可移植性。
下面对本申请实施例提供的一种接口数据存储装置进行介绍,下文描述的接口数据存储装置与上文描述的接口数据存储方法可相互对应参照,相关模块均设置于中,参考图8,图8为本申请实施例所提供的一种接口数据存储装置的结构示意图,包括:
在一些具体的实施例中,具体包括:
获取模块801,用于获取各个接口的接口信息;
生成模块802,用于根据接口信息中的接口长度和接口数量,生成接口数组;
读取模块803,用于调用接口数组的读函数,读取各个接口的接口数据;
写入模块804,用于调用接口数组的写函数,将各个接口的接口数据写入接口数组中各个接口对应的接口数据区域。
在一些具体的实施例中,还包括:
设置模块,用于设置接口数组中各个接口对应的接口数据区域的长度与各个接口的接口长度一致。
在一些具体的实施例中,写入模块804,包括:
位移单元,用于对各个接口的接口数据进行位移操作;
写入单元,用于将位移后的接口数据与接口数组进行逻辑运算,写入接口数组各个接口对应的接口数据区域。
在一些具体的实施例中,还包括:
数据清零模块,用于将接口数组中各个接口对应的接口数据区域的数据清零。
在一些具体的实施例中,还包括:
存储模块,用于获取各个接口的接口名称和接口业务功能,将各个接口的接口名称和接口业务功能存储于接口数组。
由于接口数据存储装置部分的实施例与接口数据存储方法部分的实施例相互对应,因此接口数据存储装置部分的实施例请参见接口数据存储方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的电子设备与上文描述的接口数据存储装置方法可相互对应参照。
本申请还公开一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述接口数据存储方法的步骤。
由于电子设备部分的实施例与接口数据存储装置方法部分的实施例相互对应,因此电子设备部分的实施例请参见接口数据存储装置方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的接口数据存储方法可相互对应参照。
本申请还公开一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述接口数据存储方法的步骤。
由于计算机可读存储介质部分的实施例与接口数据存储方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见接口数据存储方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种接口数据存储方法、装置、电子设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
- 一种接口数据存储方法、装置和计算机可读存储介质
- 数据存储方法和装置、计算机设备、计算机可读存储介质