CN108062235A - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN108062235A CN108062235A CN201610976166.6A CN201610976166A CN108062235A CN 108062235 A CN108062235 A CN 108062235A CN 201610976166 A CN201610976166 A CN 201610976166A CN 108062235 A CN108062235 A CN 108062235A
- Authority
- CN
- China
- Prior art keywords
- data
- value
- frame
- subregion
- memory space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
Abstract
本申请公开一种数据处理方法及装置,用以解决在边写入数据到RAM中边进行数据处理的场景下,采用现有技术中的数据处理方法存在的需要耗费较多资源进行大量数据复制的问题。包括:根据针对RAM的同一分区设置的读指针变量的值以及写指针变量的值,判断所述分区的相应存储空间是否大于预设的最小数据长度;若是,则解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;判断获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;若存在,则对所述存储空间中存储的所述数据进行处理。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法及装置。
背景技术
单片机,也称为微控制单元(Microcontroller Unit,MCU),是一种集成电路芯片,是采用超大规模集成电路技术,把具有数据处理能力的中央处理器(Central ProcessingUnit,CPU)、随机存储器(Random-Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、多种输入/输出(Input/Output,I/O)口、中断系统和定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、模拟数字(Analog/Digital,A/D)转换器等电路)集成到一块硅片上,所构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
就上述RAM而言,它是与CPU直接交换数据的内部存储器,也叫主存(内存)。RAM可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。具体来说,在MCU接收到数据后,该数据会临时存放在RAM中,在CPU需要对该数据进行处理时,从RAM中读取该数据并进行处理。其中,这里所说的处理比如是解析或者修改等。
根据现有技术,在边写入数据帧(Data frame)到RAM中边进行数据处理的场景下,CPU在检测到RAM中的数据的数据量大于单个数据帧的数据量后,就可以每隔一段时间,将RAM中的所有数据全部复制出来,并对复制出的数据进行解析,以确定数据中是否存在期望获取的数据帧;若有,则对复制出的所述期望获取的数据帧进行处理。其中,所述数据帧,是数据链路层的协议数据单元,它一般包括三部分:帧头,帧数据,帧尾。
发明内容
本申请实施例提供一种数据处理方法,用以解决在边写入数据到RAM中边进行数据处理的场景下,采用现有技术中的数据处理方法存在的需要耗费较多资源进行大量数据复制的问题。
本申请实施例还提供一种数据处理装置,用以解决在边写入数据到RAM中边进行数据处理的场景下,采用现有技术中的数据帧处理方法存在的需要耗费较多资源进行大量数据复制的问题。
本申请实施例采用下述技术方案:
一种数据处理方法,所述方法应用于微控制单元MCU中的中央处理器CPU;针对所述MCU的随机存储器RAM的同一分区设置有读指针变量和写指针变量;所述读指针变量的值,表示最近一次对所述分区执行的数据读操作所对应的所述分区的存储地址;所述写指针变量的值,表示最近一次对所述分区执行的数据写操作所对应的所述分区的存储地址;所述分区,采用具备先入先出特性的数据结构存储数据;所述方法包括下述各步骤:
查询针对RAM的同一分区设置的读指针变量的值以及写指针变量的值;
根据所述读指针变量的值和所述写指针变量的值,判断所述分区的相应存储空间是否大于预设的最小数据长度;
若判断结果为是,则初步解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
判断获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
若判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对所述存储空间中存储的所述数据进行处理。
一种数据处理装置,所述装置应用于微控制单元MCU中的中央处理器CPU;针对所述MCU的随机存储器RAM的同一分区设置有读指针变量和写指针变量;所述读指针变量的值,表示最近一次对所述分区执行的数据读操作所对应的所述分区的存储地址;所述写指针变量的值,表示最近一次对所述分区执行的数据写操作所对应的所述分区的存储地址;所述分区,采用具备先入先出特性的数据结构存储数据;
所述装置包括下述功能单元:
查询单元,用于查询针对RAM的同一分区设置的读指针变量的值以及写指针变量的值;
第一判断单元,用于根据所述读指针变量的值和所述写指针变量的值,判断所述分区的相应存储空间是否大于预设的最小数据长度;
解析单元,用于若第一判断单元得到的判断结果为是,则初步解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
第二判断单元,用于判断解析单元获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
操作执行单元,用于若第二判断单元判断出解析单元获取到的指令值和帧长度值中,存在与所述所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对所述存储空间中存储的所述数据进行处理。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
由于可以根据读指针变量的值和写指针变量的值,很方便地定位到尚未执行数据读操作的数据帧的存储空间,无需每次都将RAM中的所有数据全部复制出来进行解析,取而代之的是直接针对所述存储空间中的数据帧进行处理,从而相对于现有技术,可以节省花费在复制RAM中的所有数据这一操作上的处理资源。进一步地,由于本方案可以根据数据帧的指令值和帧长度,就可以确定出所述存储空间中是否存在数据读取协议中规定的数据帧,而不需要根据解析出帧数据具体是什么来确定所述存储空间中是否存在数据读取协议中规定的数据帧,因此,也在整体上提升了对RAM中的数据帧的操作效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请实施例提供的一种数据处理方法的实现流程示意图;
图1b为本申请实施例中的RAM的分区的存储单元及存储单元的存储地址的示意图;
图1c为本申请实施例中所述的RAM的分区、读指针和写指针的示意图;
图1d为在图1c所示的RAM的分区的基础上,MCU接收到了一定长度的数据并保存于RAM中的所述分区,使得写指针的位置发生了变化的示意图;
图1e为在图1c所示的RAM的分区的基础上,CPU读取了所述分区中的部分数据,使得读指针的位置发生了变化的示意图;
图1f为本申请实施例中的一种数据帧的结构示意图;
图1g为本申请实施例中所假设的按照预设的通信协议,在单个数据发送周期内依次发送的n个数据帧的示意图;
图1h为本申请实施例中来自不同通道的数据存储至RAM中的不同分区中的示意图;
图2为本申请实施例2的实施场景示意图;
图3为本申请实施例2的实施流程示意图;
图4为本申请实施例提供的一种数据处理装置的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
为解决在CPU边写入数据到RAM中边进行数据处理的场景下,采用现有技术中的数据处理方法存在的需要耗费较多资源进行大量数据复制的问题,本申请实施例提供一种数据处理方法。
本方法的执行主体,可以是MCU的CPU。以下以执行主体为CPU为例,介绍本申请提供的该方法的具体实现过程。本领域技术人员可以理解,所述执行主体为CPU,只是一种示例性说明,而不应视为对本申请实施例提供的该方法的执行主体的限制。
本申请实施例中,所述MCU包含RAM,所述RAM包含至少一个存储分区(后称分区)。针对所述RAM所包含的各个分区,可以分别预先设置读指针变量和写指针变量,以便分别记录对于所述RAM的数据读操作和数据写操作具体执行到了哪个存储地址。
请参见图1a,图1a为本申请实施例提供的该数据处理方法的具体实现流程图,包括如下步骤:
步骤11,CPU查询针对RAM的同一分区设置的读指针变量的值以及写指针变量的值;
所述读指针变量以及所述写指针变量,均为预先设置的指针变量。
所述读指针变量的值以及所述写指针变量的值,均表示MCU的RAM中的同一分区中的存储地址。这里所说的RAM的分区,是指RAM的整个存储空间的部分或全部。
RAM的分区具备两个属性,分别为THE WIDTH和THE DEEPTH。THE WIDTH,是指分区的宽度,即分区中单个存储单元的位数;THE DEEPTH,是指分区的深度,即分区中包含的存储单元的总数量。该分区的存储空间的总大小=THE WIDTH×THE DEEPTH。
举例来说,如图1b所示,为本申请实施例提供的一种RAM的分区的示意图。图1b所示的该分区的宽度(THE WIDTH)为4个字节,即单个存储单元最多能够存储4位;而该分区的深度(THE DEEPTH)为16,即分区中包含的存储单元的总数量为16。从而,该存储空间的总大小=4×16=64位。假设该分区的第一个存储单元对应的存储地址(该分区的首地址)为8000H,那么,该分区的第二个存储单元对应的存储地址为8004H,第三个存储单元对应的存储地址为8008H,...,依此类推。
本申请实施例中,基于RAM的分区,可以采用具备先入先出(First Input FirstOutput,FIFO)特性的数据结构,如“堆(heap)”或队列等,来存储数据。采用具备FIFO特性的数据结构来存储数据,可以使数据的存储和读取满足FIFO。即,按数据到达RAM接口的先后顺序让数据进入数据结构(如进入队列);同时,在数据结构的出口,让数据按进数据结构的顺序出数据结构,即,先进的数据将先出数据结构,后进的数据将后出数据结构。
进一步地,请参见图1c,图1c为本申请实施例中所述RAM的分区、读指针和写指针的示意图。在图1c中,d表示THE DEEPTH,w表示THE WIDTH。若假设此时所述分区中还未写入任何数据,则读指针和写指针均指向FIFO所述分区的首地址,也即,读指针变量和写指针变量的值相等,且等于FIFO所述分区的首地址。
在图1c的基础上,进一步地,请参见图1d。针对图1d而言,假设在图1c所示的分区的基础上,MCU接收到了一定长度的数据并保存于RAM中的该分区,则写指针的位置发生了变化。比如,在图1d中,写指针变化为指向数据写操作所写入的最后一个数据所在的存储单元的存储地址的下一存储地址。由于此时还没有进行数据读取,所以读指针仍然指向该分区的首地址。
在图1d的基础上,进一步地,请参见图1e。针对图1e而言,假设在图1c所示的该分区的基础上,MCU的CPU读取了该分区中的部分数据,则读指针的位置发生了变化。比如,读指针变化为指向数据读操作所读取到的最后一个数据所在的存储单元的存储地址的下一存储地址。
由上述可知,读指针变量的值,表示最近一次对RAM的分区执行的数据读操作所对应的存储地址。如,表示最近一次对所述分区执行的数据读操作所操作的最后一个存储单元的存储地址;或表示该存储单元的存储地址的下一存储地址(即与该存储单元相邻的下一存储单元的存储地址)。简单而言,读指针变量,用于表示数据读操作当前读到哪个存储地址了。
读指针变量的值,一般会随着被读取的数据对应的存储地址的变化而变化,比如,以图1b所示的存储地址为例,若被读取的数据对应的存储地址为8004H,则读指针变量的值可以变化为8008H,或者变化为8004H。
所述写指针变量的值,表示最近一次对所述分区执行的数据写操作所对应的存储地址。如,表示最近一次对所述分区执行的数据写操作所操作的最后一个存储单元的存储地址;或表示该存储单元的存储地址的下一存储地址(即与该存储单元相邻的下一存储单元的存储地址)。简单而言,写指针变量,用于表示数据写操作当前写到哪个存储地址了。
写指针变量的值,一般会随着被数据写操作对应的存储地址的变化而变化,比如,以图1b所示的存储地址为例,若数据写操作所写入的最后一个数据对应的存储地址为8004H,则写指针变量的值可以变化为8008H,或者变化为8004H。
本申请实施例中,考虑到在边写入数据到RAM中边进行数据处理的场景下,现有技术通过遍历RAM的方式查询RAM中是否存在期望处理的数据帧,会存在效率较低的问题,因此,设置了读指针变量和写指针变量。其中,如前所述,读指针变量和写指针变量均为指针变量。
指针变量,是指存放地址的变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。
本申请实施例中,所述读指针变量的值和所述写指针变量的值,可以保存在MCU的临时缓存中。比如,保存在MCU的RAM的某个指定存储空间。那么,在步骤11中,CPU可以从该指定存储空间中,获取所述读指针变量的值和所述写指针变量的值。保存有读指针变量的值和写指针变量的值的临时缓存,可以是一个文件夹,该文件夹在本申请实施例中可以称为“结构体”。本申请实施例中,所述结构体中除了可以保存读指针变量的值和写指针变量的值外,还可以保存所述分区的深度(THE DEEPTH)的值。基于THE DEEPTH的值,CPU在向所述分区中写入数据时,可以根据写指针变量的值和THE DEEPTH的值,判断是否需要从首地址开始写数据。比如,若分区的首地址为8000H,结束地址为8008H,分区的宽度为4位,THEDEEPTH的值为2,而当前,写指针变量的值为8008H,则根据THE DEEPTH=2,以及首地址为8000H,分区的宽度为4位,可以确定出写指针已经指向结束地址,即所述分区已经写满,从而可以采取覆盖之前写入的数据的方式,重新从所述分区的首地址开始写数据,以防止数据溢出。需要说明的是,重新从所述分区的首地址开始写数据后,写指针会重新指向首地址8000H,但写指针所对应的循环写次数可以加1,表示对于所述分区执行的数据写操作再次从所述分区的首地址开始执行。
本申请实施例中,可以通过设置,使得所述读指针变量和所述写指针变量与数据读操作和数据写操作分别建立关联关系。从而,基于该关联关系,使得随着数据读操作和数据写操作的进行,分别根据数据读操作和数据写操作分别操作的最后一个所述存储单元对应的存储地址,更新读指针的值和写指针的值。具体而言,在每次数据读操作/数据写操作执行完毕后,可以调用读指针变量/写指针变量,并将数据读操作/数据写操作所操作的最后一个所述存储单元对应的存储地址,赋值给读指针变量/写指针变量。
步骤12,CPU根据读指针变量的值和写指针变量的值,确定读指针变量和写指针变量所对应的存储空间的大小;
其中,根据读指针变量的值和写指针变量的值所确定出的该存储空间,是指以读指针变量的值表示的存储地址作为首地址,以写指针变量的值表示的存储地址的前一地址作为结束地址的存储空间。存储空间的大小的计量单位,以及所述预设的最小数据长度的计量单位,都可以为“位”。
比如,以图1e为例,若假设写指针变量的值为8008H,而读指针变量的值为8000H,那么,根据读指针变量的值和写指针变量的值所确定出的存储空间,是指[8000H,8008H)这个区间范围内的存储地址对应的存储空间,该存储空间包含的存储地址,包括:8000H和8004H。若单个存储地址对应的存储单元的大小为4位,则该存储空间的大小为2*4=8位。
需要说明的是,在实际应用场景中,针对所述分区进行的数据读操作,有可能会发生使得读指针指向还未写入数据的存储地址的情况。这种情况,可以称为异常状况。为避免这种异常状况的出现而导致数据读操作发生错误,本申请实施例中,若确定出数据读操作的发生使得读指针指向还未写入数据的存储地址,也即,使得读指针变量的值大于写指针变量的值,则可以将读指针变量的值,设置为与写指针变量当前的值相同,从而避免数据读操作发生错误。
步骤13,CPU判断通过执行步骤12确定出的存储空间的大小,是否大于预设的最小数据长度;若是,则执行步骤13;若否,则可以结束流程。
所述预设的最小数据长度可以根据预设数据读取协议中规定的数据帧的长度确定。比如,若所述预设数据读取协议中规定的最小数据帧的长度为20位,那么,所述预设的最小数据长度,可以为19,或者20。在MCU接收按照预定通信协议发送来的数据帧的场景下,这里所说的预设数据读取协议即所述预定通信协议。
需要说明的是,在判断出该存储空间的大小不大于预设的最小数据长度时,若当前的场景为持续向RAM中写入数据,则可以跳转为执行步骤12。即,在读指针变量的值和写指针变量的值可能持续发生变化的场景下,CPU可以持续关注根据读指针变量的值和写指针变量的值确定存储空间的大小,以判断该存储空间的大小是否大于预设的最小数据长度,直至判断结果为该存储空间的大小大于预设的最小数据长度后,执行步骤13。
步骤14,CPU解析通过执行步骤12确定出的存储空间中存储的数据以获取数据帧的指令值和帧长度值;
通过执行步骤13,已经判定该存储空间中保存的数据的大小,大于预设数据读取协议中规定的最小数据帧的长度,这说明,该存储空间中很可能存在一个完整的数据帧。那么,在这样的情况下,CPU可以对该存储空间中存储的数据进行初步解析,以确定各数据帧各自的帧头所对应的存储地址;根据所述各数据帧各自的帧头所对应的存储地址,以及所述预设数据读取协议中规定的目标数据帧(即期望处理的数据帧)的格式,从该存储空间中存储的数据中,解析出所述存储空间中存在的各数据帧各自的指令值和帧长度值。
举例来说,假设所述预设数据读取协议中规定的目标数据帧的格式如图1f所示。即,该数据帧依次包括帧头、帧长、指令、帧数据、校验位和帧尾。其中,帧头是数据帧的开始符号,它一般包含表示帧头的标识,视实际情况,不同的数据帧各自的帧头的标识可以彼此相同,也可以彼此不同;帧长,是用于表示数据帧总长度的数据;指令,是指用于指示MCU的CPU执行某种操作的命令,该命令中可以包含数据帧的指令值(这里所说的数据帧的指令值,一般是指令的类型标识,如查询指令的标识、开机指令的标识或者关机指令的标识,等等);帧数据,表示数据帧中携带的、在CPU执行指令过程中需要用到的数据(如CPU执行指令所要处理的数据);校验位用于验证数据帧是否被篡改,校验位一般根据数据帧中的其他位计算得到;帧尾是数据帧的结束符号,表示数据帧的结束位置,帧尾一般包含表示帧尾的标识。
在CPU获知期望处理的数据帧的帧头的标识后,就可以对所述存储空间中存储的数据进行解析,以确定该数据中是否包含帧头的标识。若确定包含该标识,那么,可以确定该标识所在的存储单元的地址,作为该帧头的存储地址。
在确定出帧头的存储地址后,进一步地,CPU可以根据帧头的存储地址,以及根据如图1f所示的该格式,确定出数据帧的指令值和帧长度值分别所在的存储地址,从而从确定出的存储地址中读取出数据帧的指令值和帧长度值。
比如,若确定出帧头的存储地址为8000H,根据所述格式,确定出帧头、帧长度值和指令值的长度均为4位,那么,可以确定出8004H这个存储地址存储的是帧长度值,8008H这个存储地址存储的是指令值。进而,就可以分别从8004H和8008H这两个存储地址对应的存储单元中读取出帧长度值和指令值。
步骤15,CPU判断通过执行步骤14获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
若判断结果为存在,则执行步骤16,此外,还可以根据所述存储空间所包含的所述存储单元的数量,更新读指针变量的值——可以将读指针变量的值更新为与所述存储空间的结束地址相同,或者更新为与存储空间的下一存储单元的地址相同;
若判断结果为不存在,则可以执行步骤13;或者,可以结束流程;或者,可以不对所述存储空间中的所述数据进行处理,并且,根据所述存储空间中所包含的存储单元的数量,更新读指针变量的值;或者,可以不对所述存储空间存储的数据进行任何处理,并且在对RAM的该分区执行数据读操作前,可以保持读指针变量的值不发生变化。此处所说的保持读指针变量的值不发生变化,是指保持读指针变量的值与确定所述存储空间时所依据的读指针变量的值相同,即,读指针不发生移动。本申请实施例中,举例来说,根据所述存储空间中所包含的存储单元的数量,更新读指针变量的值的具体实现方式可以如下:
若单个存储单元可以存储1个字节的数据,也即THE WIDTH=1个字节,且相邻两个存储单元的地址假设规定为相差1(即读指针的最小移动步长),那么,所述存储空间若包含5个存储单元,也即所述数据的数据量大小为5*1字节=5字节,那么,可以在读指针变量的值的基础上,加上5,作为更新后的读指针变量。
当然,若存储单元可以存储2个字节的数据,也即THE WIDTH=2个字节,且读指针的最小移动步长为2,那么,所述存储空间若包含5个存储单元,也即所述数据的数据量大小为5*2字节=10字节,那么,可以在读指针变量的值的基础上,加上“5*读指针的最小移动步长”,也即加上10,作为更新后的读指针变量。
针对步骤15的具体实现方式举例来说,若假设CPU已经根据预设数据读取协议,获知目标数据帧(目标数据帧一般是指期望处理的数据帧)的指令值为“01”,帧长度值为“32”,那么,若解析出的所述存储空间中的某数据帧的指令值也为“01”,且帧长度值也为“32”,就可以判定解析出的指令值和帧长度值中,存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,进而可以判定该存储空间中存储的数据中,存在与目标数据帧相同的数据帧,也即存在当前期望处理的数据帧。若解析出的各个数据帧各自的指令值和帧长度值中,均不存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,那么,可以判定该存储空间中存储的该数据中,不存在与目标数据帧相同的数据帧,也即不存在当前期望处理的数据帧。其中,视实际情况,期望处理的数据帧的数量,可以是一个,也可以不止一个。
本申请实施例中,采用上述方式对数据帧是否为期望处理的数据帧进行验证,属于一种“初步验证”或“粗略验证”。为精确验证数据帧是否为期望处理的数据帧,还可以利用校验位进行验证。比如,可以判定解析出的指令值、帧长度值、校验位这三者,是否与预设数据读取协议中规定的目标数据帧的指令值、帧长度值、校验位对应一致;如果三者均对应一致,则可以判定该存储空间中存储的该数据帧就是期望处理的数据帧;否则,则可以判定该存储空间中存储的该数据帧不是期望处理的数据帧。
本申请实施例中,在MCU边接收根据预设的通信协议发送的数据帧,边对数据帧进行处理的场景下,期望处理的数据帧的指令值、帧长度值和校验位,可以根据所述预设的通信协议来确定。
比如,若假设所述预设的通信协议规定,在单个数据发送周期内依次发送的如图1g所示的n个数据帧,这n个数据帧各自有自己的帧头和帧尾,此外,这n个数据帧的指令值、帧长度值和校验位如下表1所示,则,CPU可以根据该表格中的规定,获知期望处理的数据帧依次分别具备怎样的指令值、帧长度值和校验位。
表1:
需要说明的是,根据读指针变量的值和写指针变量的值确定出的存储空间中,很有可能存在不止一个数据帧。本申请实施例中,无论是该存储空间中存在一个数据帧,还是存在不止一个数据帧,均可以按照上述步骤13~步骤15,最终确定出是否可以针对该存储空间中的数据执行下述步骤16。
步骤16,CPU对根据读指针变量的值和写指针变量的值所确定出的存储空间中保存的数据进行处理。
视具体的处理需求的不同,本申请实施例中对所述确定出的存储空间中保存的数据进行处理,可以包括对所述确定出的存储空间中保存的数据进行解析、读取、复制或修改,等等。为便于描述,后文将步骤16中所述的数据称为待处理的数据。
以所述处理包括解析或修改为例,考虑到对所述待处理的数据进行的该些处理可能会失败,且失败后可能导致待处理的数据发生不可逆的变化,因此,在一种实施方式中,可以将待处理的数据复制到临时缓存,并在该临时缓存中对待处理的数据进行处理。该临时缓存,可以为RAM的一个指定存储空间,该指定存储空间,与根据读指针变量的值的写指针变量的值确定出的存储空间不同。
在该临时缓存中对待处理的数据进行处理,比如包括:解析数据,或者根据修改需求对待处理的数据进行增加、删除或修改等。若处理失败,则由于所述确定出的存储空间中的数据(待处理的数据)未被修改,则可以将所述确定出的存储空间中的数据重新复制至该临时缓存中重新进行处理;若处理成功,则可以结束数据处理流程。
由于处理失败前,读指针变量已经发生了更新——如前文所述,读指针变量的值,已经“更新为与所述存储空间的结束地址相同,或者更新为与存储空间的下一存储单元的地址相同”。因此,为了还原出更新前的读指针变量,以便根据更新前的读指针变量的值确定出存储有所述待处理的数据的所述存储空间,可以先计算所述待处理的数据的数据量所占用的存储单元的数量=所述待处理的数据的数据量/所述分区的单个存储单元的大小;然后,根据更新后的读指针变量的值以及计算出的该数量,确定更新前的读指针变量的值;在确定出更新前的读指针变量的值后,可以以更新前的读指针变量的值作为首地址,以所述写指针变量的值作为结束地址,从而重新将根据该首地址和该结束地址所定位出的相应存储空间中的所述待处理的数据,复制至所述临时缓存。就计算更新前的读指针变量的值的具体实现方式而言,比如,若计算出存储单元的数量为2,更新后的读指针变量的值为8008H,那么,结合单个存储单元的大小为4位,可以计算出更新前的读指针变量的值=8008H-2*4=8000H。
或者,在一种实施方式中,也可以将待处理的数据复制到RAM的某个临时缓存,然后,在所述确定出的存储空间中对待处理的数据进行处理。若处理失败,则由于所述临时缓存中的数据(待处理的数据)未被修改,则可以将所述临时缓存中的待处理的数据重新复制至RAM的所述分区中进行处理;若处理成功,则可以结束数据处理流程。
为了不对所述分区中保存的除待处理的数据外的其他数据产生覆盖,本申请实施例中,将所述临时缓存中的待处理的数据重新复制至RAM的所述分区中,一般是指将所述临时缓存中的待处理的数据,重新复制至前文所述的根据读指针变量的值和写指针变量的值确定出的所述存储空间。由于处理失败前,读指针变量已经发生了更新——如前文所述,读指针变量的值,已经“更新为与所述存储空间的结束地址相同,或者更新为与存储空间的下一存储单元的地址相同”。因此,为了还原出更新前的读指针变量,以便根据更新前的读指针变量的值确定出所述存储空间,可以先计算所述待处理的数据的数据量所占用的存储单元的数量=所述待处理的数据的数据量/所述分区的单个存储单元的大小;然后,根据更新后的读指针变量的值以及计算出的该数量,确定更新前的读指针变量的值;在确定出更新前的读指针变量的值后,可以以更新前的读指针变量的值作为首地址,以所述写指针变量的值作为结束地址,从而从所述临时缓存中复制所述待处理的数据,至根据该首地址和该结束地址所定位出的相应存储空间中。
采用上述将待处理的数据读取至所述临时缓存的方案,可以避免处理失败导致数据被错误修改而无法恢复的问题。
在一种实施方式中,在执行步骤15时,若CPU没有利用校验位来判断所述存储空间中的数据是否包括期望进行处理的数据帧,那么,在步骤16中,可以将所述存储空间中存储的数据(假设包含至少一个完整的数据帧)复制到所述临时缓存中。而后,CPU可以根据从复制到所述临时缓存中的数据中,解析出具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧各自的校验位,并根据解析出的校验位,对具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧的正确性分别进行校验。针对校验成功的数据帧,可以维持将这样的数据帧保存在所述临时缓存中;针对校验不成功的数据帧,则可以释放这样的数据帧所占用的所述临时缓存的存储空间。
以上,为对本申请实施例提供的一种数据处理方法的具体实现过程的介绍。
采用本申请实施例提供的该方法,由于可以根据读指针变量的值和写指针变量的值,可以很方便地定位到尚未执行数据读操作的数据帧的存储空间,无需每次都将RAM中的所有数据全部复制出来进行解析,取而代之的是直接针对所述存储空间中的数据帧进行处理,从而相对于现有技术,可以节省花费在复制RAM中的所有数据这一操作上的处理资源。进一步地,由于本方案可以根据数据帧的指令值和帧长度,就可以确定出所述存储空间中是否存在数据读取协议中规定的数据帧,而不需要根据解析出帧数据具体是什么来确定所述存储空间中是否存在数据读取协议中规定的数据帧,因此,也在整体上提升了对RAM中的数据帧的操作效率。
以上以RAM的单个分区为例,对本申请实施例提供数据处理方法进行了介绍。在实际应用中,该方法也可以应用于RAM中存在多个分区的情况。如图1h所示,为RAM中存在不同分区,且不同分区对应于不同通道,来自不同通道的数据分别对应不同的数据读取协议的情况。其中,所述通道,一般是指串口。
在如图1h所示的该场景下,根据本申请实施例提供的数据处理方法,可以针对每个分区分别设置相应的写指针变量和读指针变量。比如,针对接收来自通道T1的分区X1,可以设置相应的写指针变量x1和读指针变量y1;针对接收来自通道T2的分区X2,可以设置相应的写指针变量x2和读指针变量y2;...;依此类推。
基于设置好的读指针变量和写指针变量,对于RAM的每个分区而言,都可以实施本申请实施例提供的数据处理方法。具体而言,可以针对每个分区,并行执行如图1a所示的各步骤。
需要说明的是,前文已提到,不同的分区可能对应不同的数据读取协议(比如可以是数据传输所遵从的通信协议)。那么,在根据数据读取协议所规定的数据帧的特征(如指令值和帧长度值;或者指令值、帧长度值和校验位),来判断分区的存储空间中保存的数据是否为待处理的数据时,可以先确定不同分区所对应的数据读取协议,然后再在该分区的存储空间大于预设的最小数据长度时,根据确定出的数据读取协议中规定的数据帧的特征,判断该分区的存储空间中保存的数据,是否存在待处理的数据。其中,这里所说的该分区的存储空间,为根据针对该分区设置的读指针变量和写指针变量各自的值确定出的存储空间。
由上述可知,本申请实施例提供的该数据处理方法,可以应用于多通道多通信协议的场景。在这样的场景下,通过由RAM的不同分区来保存来自不同通道的数据,并针对不同分区分别设置相应的读指针变量和写指针变量,可以使得利用不同分区并行进行数据的存储和读取,且不同分区互不干扰,保证了数据处理的高效性。
实施例2
基于前述实施例1详细叙述了本申请的发明构思,为了便于更好的理解本申请的技术特征、手段和效果,下面对本申请的提供的数据处理方法和指针变量的值的更新方法进一步说明,从而形成了本申请的又一个实施例。
实施例2的实施场景如图2所示。该场景中,数据发送设备通过MCU的通道1、通道2、...、通道m,分别向包含CPU和RAM的MCU发送数据帧。这里所说的通道,比如可以是串行接口(又称串行通信接口或串口),或者是其他接口。其中:
通过通道1向MCU发送的数据帧包括:数据帧a1、数据帧a2、...、数据帧an;通过通道1向MCU发送的数据帧,存储在RAM中的分区1中。
通过通道2向MCU发送的数据帧包括:数据帧b1、数据帧b2、...、数据帧bn;通过通道2向MCU发送的数据帧,存储在RAM中的分区2中。
依此类推,通过通道m向MCU发送的数据帧包括:数据帧m1、数据帧m2、...、数据帧mn;通过通道m向MCU发送的数据帧,存储在RAM中的分区m中。
需要说明的是,上述分区1~分区m,视实际需求的不同,它们的深度彼此相同或不同。针对上述分区1~分区m,均设置有写指针变量和读指针变量。
基于如图2所示的该实施场景,实施例2中介绍的方法流程包括如图3所示的下述步骤:
步骤31,MCU中的CPU在MCU接收根据预设的通信协议发送的数据帧前,初始化分区1~分区m,即,将分区1~分区m清空,并且,CPU将分别对应于各分区的读指针变量的值和写指针变量的值,设置为与相应分区的首地址相同。
由于本申请实施例2中对于分区1~分区m中各分区执行的操作均类似,因此,为便于描述,以下以分区1为例,对后续步骤的具体实现方式进行说明。
本申请实施例中,假设CPU在初始化分区1~分区m前,MCU就已经收到部分数据,则通过初始化分区1~分区m,以及将针对各分区的读指针变量的值和写指针变量的值,设置为与相应分区的首地址相同的操作,可以避免所述部分数据对实时和正确地处理接收到的数据产生不利影响(如避免CPU将所述部分数据作为实时接收到的数据)。
本申请实施例中,CPU可以调用名为void RptBuffClear(struct STRRPT_BUFF*srcRptBuff)的函数,实现初始化分区1~分区m。该函数,是功能包括“清空分区1~分区m”的函数。
步骤32,CPU在MCU开始接收通过通道1发送来的数据后,接收到的数据会写入分区1中;CPU在MCU开始接收通过通道1发送来的数据帧后,即可开始查询针对分区1设置的读指针变量的值和写指针变量的值。
请参见下述步骤33,在步骤32中查询针对分区1设置的读指针变量的值和写指针变量的值的目的,是为了根据查询结果判断分区1中是否存在完整的数据帧,即根据查询结果判断是否可从分区1中读数据。
步骤33,根据查询结果,判断是否可从分区1中读数据;若是,则执行步骤34,否则执行步骤32。
具体而言,可以先判断分区1的写指针变量的值是否不同于读指针变量的值;若判断出分区1的写指针变量的值与读指针变量的值相同,则说明针对分区1进行最近一次数据读操作后,分区1中没有新写入的数据(也可能是说明分区1在初始化后,还未写入过数据),因此判定不能从分区1中读数据,进而执行步骤32。
若判断出分区1的写指针变量的值与读指针变量的值不同,则根据写指针变量的值和读指针变量的值的差值,以及分区1的宽度,计算新写入的数据对应的存储单元的数量。所述数量=写指针变量的值和读指针变量的值的差值/分区1的宽度。
在计算出所述数量后,判断所述数量是否大于或等于预设数量。其中,该预设数量=所述预设的通信协议所规定的单个数据帧的最小位数/分区1的宽度”。
若判断出所述数量大于或等于所述预设数量,说明当前很可能接收到了一个完整的数据帧,从而执行步骤34,否则执行步骤32。
需要说明是,每当MCU收到通过通道1发送来的数据,针对分区1设置的写指针变量的值移动对应字节的位置,也即,写指针变量的值随着数据写操作所操作的存储地址的变化而变化。在读指针变量的值还等于分区1的首地址的情况下,写指针和读指针之间就有了距离差。这个距离差,对应于所述新写入的数据所在的存储空间,也对应于所述新写入的数据所对应的所述存储单元的数量。
步骤34,假设数据帧的格式如图1f所示,且假设所述距离差对应的存储空间中存在且仅存在完整的一个数据帧,则CPU从所述距离差对应的存储空间中确定出该数据帧的帧长度值、校验位,以及指令中包含的数据帧的指令值。
在实际应用中,CPU从所述距离差对应的存储空间中确定出该数据帧的帧长度值、指令中包含数据帧的指令值和校验位的方法,可以封装为一个函数,比如,封装为一个名为“FindFromRptBuff_PKT(struct STRRPT_BUFF*srcRptBuff)”的函数,通过调用该函数,CPU可以实现从所述距离差对应的存储空间中确定出该数据帧的帧长度值、校验位和指令中包含数据帧的指令值。
需要说明的是,所述距离差对应的存储空间中,也可能存在至少两个完整的数据帧。这样的情况下,CPU可以从所述距离差对应的存储空间中,分别确定各数据帧的帧长度值、校验位和指令中包含数据帧的指令值。
无论所述距离差对应的存储空间中存在几个完整的数据帧,对于数据帧中包含的信息都会进行类似操作。比如,会确定数据帧的帧长度值、校验位和指令中包含数据帧的指令值,也会执行与步骤35类似的步骤。因此,为便于描述,本申请实施例2中主要以所述距离差对应的存储空间中存在且仅存在完整的一个数据帧为例,对如图3所示的该流程进行介绍。
步骤35,CPU判断确定出的帧长度值、指令值和校验位,是否分别与预定的通信协议中规定的相应数据帧(比如是按照预定的通信协议发送的第一个数据帧)的帧长度值、指令值和校验位对应一致;若均对应一致,则执行步骤36;否则,可以将所述第一个数据帧的帧尾所在的存储地址的下一存储地址,赋值给读指针变量,然后,再执行步骤32。
步骤36,CPU将所述距离差对应的存储空间中存在的完整的数据帧(假设为一个完整的数据帧),读取至临时缓存,然后对所述距离差对应的存储空间中的该完整的数据帧进行解析。
步骤37,CPU判断是否解析成功。
若解析成功,则执行步骤38;否则执行步骤39。
步骤38,执行解析结果(比如是一个指令)所对应的操作,并将该数据帧的帧尾所在的存储地址的下一存储地址,赋值给读指针变量,然后,再执行步骤32。
在实际应用中,CPU将所述距离差对应的存储空间中存在的所述完整的一个数据帧,读取至临时缓存的方法,可以预先封装为一个函数。比如,封装为一个名为“ReadStrFromRptBuff(struct STRRPT_BUFF*srcRptBuff,unsigned char*pDst,u16nL)”的函数。通过调用该函数,CPU可以实现将所述距离差对应的存储空间中存在的该完整的数据帧读取至临时缓存。
步骤39,CPU可以从所述临时缓存中,将该完整的数据帧,读取至所述距离差对应的存储空间中,并对成功读取至该存储空间中的该完整的数据帧进行解析,然后,通过执行步骤37判断是否解析成功。
重复执行步骤37和步骤39构成的循环操作,直至解析成功后,执行步骤38。其中,执行步骤38即:CPU执行解析成功后获得的解析结果所对应的操作,并将该完整的数据帧的帧尾所在的存储地址的下一存储地址,赋值给读指针变量,然后,再执行步骤32。
需要说明的是,所述解析成功后获得的解析结果,可能是一个具体的指令,该指令用于指示CPU进行某种操作,比如指示CPU发送一个数据至某地址,等等。那么,CPU根据解析得到的该指令,可以执行所述某种操作,如发送一个数据至某地址,等等。
此外还需要说明的是,在本申请实施例2中,不同通道可以共享同一分区。具体而言,来自不同通道的数据,可以保存在RAM的同一分区中。那么,假设来自不同通道的数据分别符合不同的通信协议,那么,可以根据某单个通道的数据所符合的通信协议(假设为第一通信协议)中规定的数据帧的特征,CPU可以依次从该分区中确定出符合该第一通信协议的数据帧并进行后续的解析等操作。在该过程中,对于该分区中存在的不符合该第一通信协议的数据帧,CPU可以选择忽略而不对它们进行处理。
类似地,根据另一通道的数据所符合的通信协议(假设为第二通信协议)中规定的数据帧的特征,CPU可以依次从该分区中确定出符合该第二通信协议的数据帧并进行后续的解析等操作。在该过程中,对于该分区中存在的不符合该第二通信协议的数据帧,CPU可以选择忽略而不对它们进行处理。
采用本申请实施例2提供的上述方法,由于在MCU中引入了读指针变量和写指针变量,并且,读指针变量的值和写指针变量的值,分别表示最近一次对RAM的分区执行的数据读操作所对应的存储地址,以及最近一次对所述分区执行的数据写操作所对应的存储地址,因此,根据读指针变量的值和写指针变量的值,可以很方便地定位到尚未执行数据读操作的数据(含待处理的数据)存储地址,无需采用遍历整个RAM的方式来定位待处理的数据的存储地址,从而相较于现有技术采用的确定待处理的数据的方式而言,采用本申请实施例提供的方案可以提升确定待处理的数据的效率。
并且,采用本申请实施例提供的上述方法,可以允许来自不同通道、符合不同通信协议的数据保存在RAM同一分区中,并实现根据不同协议来读取相应的待处理的数据而不会出错。
实施例3
为解决在边写入数据到RAM中边进行数据处理的场景下,采用现有技术中的数据帧处理方法存在的需要耗费较多资源进行大量数据复制的问题,本申请实施例提供一种数据处理装置。
该装置应用于MCU;针对该MCU而言,它的RAM的同一分区设置有读指针变量和写指针变量。其中,所述读指针变量的值,表示最近一次对所述分区执行的数据读操作所对应的所述分区的存储地址;所述写指针变量的值,表示最近一次对所述分区执行的数据写操作所对应的所述分区的存储地址。所述分区,采用具备先入先出特性的数据结构存储数据。
该装置的具体结构示意图如4所示,主要包括查询单元41、第一判断单元42、解析单元43、第二判断单元44和操作执行单元45。
以下对各单元进行具体介绍:
查询单元41,用于查询针对RAM的同一分区设置的读指针变量的值以及写指针变量的值;
第一判断单元42,用于根据所述读指针变量的值和所述写指针变量的值,判断所述分区的相应存储空间是否大于预设的最小数据长度;
解析单元43,用于若第一判断单元42得到的判断结果为是,则初步解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
第二判断单元44,用于判断解析单元43获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
操作执行单元45,用于若第二判断单元44判断出解析单元43获取到的指令值和帧长度值中,存在与所述所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对所述存储空间中存储的所述数据进行处理。
可选的,所述存储空间中存储的数据包括至少一个数据帧。在这样的情况下,解析单元43,具体包括:
地址确定子单元,对所述存储空间中存储的数据进行初步解析,以确定以确定所述存储空间中存储的各数据帧各自的帧头所对应的存储地址;
数据解析子单元,用于根据所述各数据帧各自的帧头所对应的存储地址,以及所述预设数据读取协议中规定的各目标数据帧的格式,从所述存储空间中存储的数据中,解析出所述各数据帧各自的指令值和帧长度值。
可选的,所述操作执行单元45,具体可以用于将所述存储空间中存储的所述数据复制到临时缓存中。所述临时缓存,为所述RAM中的指定存储空间。在这样的场景下,本申请实施例提供的该装置还可以包括:
校验单元,用于根据具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧的帧头所对应的存储地址,以及所述预设数据读取协议中规定的所述目标数据帧的格式,从所述存储空间中存储的数据中,解析出具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧各自的校验位;根据解析出的各个所述校验位,对复制到所述临时缓存中的具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧的正确性进行校验;
缓存清空单元,用于释放校验单元校验不成功的数据帧所占用的所述临时缓存的存储区域。
考虑到分区的大小是有限的,为了使得分区在被写满后,可以继续再写入数据,可选的,所述装置还可以包括:
数据写入单元,用于在将所述分区的结束地址赋值给所述写指针变量后,若继续写入数据至所述分区,则将所述分区的首地址赋值给所述写指针变量。
为避免数据读操作值得读指针的值大于写指针的值,可选的,本申请实施例提供的该装置还可以包括:
赋值单元,用于当根据针对所述分区的数据读操作,使得所述读指针的值大于所述写指针的值时,将所述读指针变量的值设置为与所述写指针变量的值相同。
可选的,所述分区包含彼此大小相同的若干存储单元,所述装置还可以包括:
第一变量值更新单元,用于若第二判断单元44判断出获取到的指令值和帧长度值中,不存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则不对所述数据进行处理,且根据所述存储空间所包含的所述存储单元的数量,更新所述读指针变量的值。
可选的,所述装置还可以包括:
变量值保持单元,用于若第二判断单元44判断出获取到的指令值和帧长度值中,不存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则不对所述数据进行处理,且在执行下一次数据读操作前,保持读指针变量的值不发生变化。
可选的,所述装置还可以包括:
第二变量值更新单元,用于若第二判断单元判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则根据所述存储空间所包含的所述存储单元的数量,更新所述读指针变量的值。
当所述装置还包括第二变量值更新单元时,可选的,所述操作执行单元45,具体用于:将所述存储空间中存储的所述数据复制到临时缓存;所述临时缓存,为所述RAM中的指定存储空间。在这样的场景下,本申请实施例提供的该装置还可以包括:
第一处理单元,用于对复制到所述临时缓存中的所述数据进行处理;其中,对复制到所述临时缓存中的所述数据进行处理,包括:对复制到所述所述临时缓存中的所述数据进行增、删或改;
第三判断单元,用于判断第一处理单元是否成功处理复制到所述临时缓存中的所述数据;
第一复制单元,用于若第三判断单元判断出第一处理单元未成功处理复制到所述临时缓存中的所述数据,则根据第二变量值更新单元更新后的所述读指针变量的值、所述数据的数据量以及所述分区的单个存储单元的大小,确定所述存储空间的首地址;根据所述首地址和所述写指针变量的值,复制所述首地址和所述写指针变量的值对应的所述存储空间中存储的所述数据至所述临时缓存,以使得所述第一处理单元对复制到所述临时缓存中的所述数据进行处理。
可选的,所述操作执行单元45,具体用于:将所述存储空间中存储的所述数据复制到临时缓存;在这样的情况下,所述装置还可以包括:
第二处理单元,用于对所述存储空间中存储的所述数据进行处理;其中,对所述存储空间中存储的所述数据进行处理,包括:对所述存储空间中存储的所述数据进行增、删或改;
第四判断单元,用于判断是否成功处理所述存储空间中存储的所述数据;
第二复制单元,用于若第四判断单元判断出第二处理单元未成功处理复制到所述存储空间中存储的所述数据,则根据更新后的所述读指针变量的值、所述数据的数据量以及所述分区的单个存储单元的大小,确定所述存储空间的首地址;根据所述首地址和所述写指针变量的值,将所述临时缓存中的所述数据复制至所述首地址和所述写指针变量的值对应的所述存储空间,以使得第二处理单元对复制到所述存储空间中的所述数据进行处理。
可选的,所述装置还可以包括:
数据保存单元,用于将通过所述MCU的不同通道发送给所述MCU的数据,分别对应保存在所述RAM的不同分区;
所述查询单元41,用于针对所述不同分区中的每个分区,并行执行:确定针对该分区设置的读指针变量的值以及写指针变量的值;
所述第一判断单元42,用于针对所述不同分区中的每个分区,并行执行:根据所述读指针变量的值和所述写指针变量的值,确定该分区的相应存储空间是否大于预设的最小数据长度;
所述解析单元43,用于针对所述不同分区中的每个分区,并行执行:若第一判断单元42得到的相应判断结果为是,则初步解析该分区的所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
所述第二判断单元44,用于针对所述不同分区中的每个分区,并行执行:判断所述解析单元43获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
所述操作执行单元45,用于针对所述不同分区中的每个分区,并行执行:若所述第二判断单元44判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对该分区的所述存储空间中存储的所述数据进行处理。
如何对该分区的所述存储空间中存储的所述数据进行处理,可以参见说明书实施例1和实施例2中的相关内容,此处不再赘述。
采用本申请实施例提供的该装置,由于可以根据读指针变量的值和写指针变量的值,可以很方便地定位到尚未执行数据读操作的数据帧的存储空间,无需每次都将RAM中的所有数据全部复制出来进行解析,取而代之的是直接针对所述存储空间中的数据帧进行处理,从而相对于现有技术,可以节省花费在复制RAM中的所有数据这一操作上的处理资源,此外,也在整体上提升了对RAM中的数据帧的操作效率。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (20)
1.一种数据处理方法,其特征在于,所述方法应用于微控制单元MCU中的中央处理器CPU;针对所述MCU的随机存储器RAM的同一分区设置有读指针变量和写指针变量;所述读指针变量的值,表示最近一次对所述分区执行的数据读操作所对应的所述分区的存储地址;所述写指针变量的值,表示最近一次对所述分区执行的数据写操作所对应的所述分区的存储地址;所述分区,采用具备先入先出特性的数据结构存储数据;所述方法包括下述各步骤:
查询针对RAM的同一分区设置的读指针变量的值以及写指针变量的值;
根据所述读指针变量的值和所述写指针变量的值,判断所述分区的相应存储空间是否大于预设的最小数据长度;
若判断结果为是,则初步解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
判断获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
若判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对所述存储空间中存储的所述数据进行处理。
2.如权利要求1所述的方法,其特征在于,所述存储空间中存储的数据包括至少一个数据帧;则
初步解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值,包括:
对所述存储空间中存储的数据进行初步解析,以确定所述存储空间中存储的各数据帧各自的帧头所对应的存储地址;
根据所述各数据帧各自的帧头所对应的存储地址,以及所述预设数据读取协议中规定的各目标数据帧的格式,从所述存储空间中存储的数据中,解析出所述各数据帧各自的指令值和帧长度值。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:根据具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧的帧头所对应的存储地址,以及所述预设数据读取协议中规定的所述目标数据帧的格式,从所述存储空间中存储的数据中,解析出具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧各自的校验位;
对所述存储空间中存储的所述数据进行处理,包括:将所述存储空间中存储的所述数据复制到临时缓存中;所述临时缓存,为所述RAM中的指定存储空间;
所述方法还包括:根据解析出的各个所述校验位,对复制到所述临时缓存中的具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧的正确性进行校验;
释放校验不成功的数据帧所占用的所述临时缓存的存储区域。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述分区的结束地址赋值给所述写指针变量后,若继续写入数据至所述分区,则将所述分区的首地址赋值给所述写指针变量。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
当根据针对所述分区的数据读操作,判断出所述读指针的值大于所述写指针的值时,将所述读指针变量的值设置为与所述写指针变量的值相同。
6.如权利要求1所述的方法,其特征在于,所述分区包含彼此大小相同的若干存储单元;所述方法还包括:
若判断出获取到的指令值和帧长度值中,不存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则执行下述操作:
不对所述数据进行处理,且根据所述存储空间所包含的所述存储单元的数量,更新所述读指针变量的值;或
不对所述数据进行处理,且在执行下一次数据读操作前,保持读指针变量的值不发生变化。
7.如权利要求1所述的方法,其特征在于,若判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,所述方法还包括:
根据所述存储空间所包含的所述存储单元的数量,更新所述读指针变量的值。
8.如权利要求7所述的方法,其特征在于,对所述存储空间中存储的所述数据进行处理,包括:
将所述存储空间中存储的所述数据复制到临时缓存;所述临时缓存,为所述RAM中的指定存储空间;
所述方法还包括:
对复制到所述临时缓存中的所述数据进行处理;
判断是否成功处理复制到所述临时缓存中的所述数据;
若判断出未成功处理复制到所述临时缓存中的所述数据,则根据更新后的所述读指针变量的值、所述数据的数据量以及所述分区的单个存储单元的大小,确定所述存储空间的首地址;根据所述首地址和所述写指针变量的值,复制所述首地址和所述写指针变量的值对应的所述存储空间中存储的所述数据至所述临时缓存;对复制到所述临时缓存中的所述数据进行处理。
9.如权利要求7所述的方法,其特征在于,对所述存储空间中存储的所述数据进行处理,包括:将所述存储空间中存储的所述数据复制到临时缓存;
所述方法还包括:
对所述存储空间中存储的所述数据进行处理;其中,对所述存储空间中存储的所述数据进行处理,包括:对所述存储空间中存储的所述数据进行增加、删除或修改;
判断是否成功处理所述存储空间中存储的所述数据;
若判断出未成功处理复制到所述存储空间中存储的所述数据,则根据更新后的所述读指针变量的值、所述数据的数据量以及所述分区的单个存储单元的大小,确定所述存储空间的首地址;根据所述首地址和所述写指针变量的值,将所述临时缓存中的所述数据复制至所述首地址和所述写指针变量的值对应的所述存储空间,并对复制到所述存储空间中存储的所述数据进行处理。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:将通过所述MCU的不同通道发送给所述MCU的数据,分别对应保存在所述RAM的不同分区;则
所述各步骤,具体包括:针对所述不同分区中的每个分区,并行执行下述操作:
确定针对该分区设置的读指针变量的值以及写指针变量的值;
根据所述读指针变量的值和所述写指针变量的值,确定该分区的相应存储空间是否大于预设的最小数据长度;
若判断结果为是,则初步解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
判断获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
若判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对所述存储空间中存储的所述数据进行处理。
11.一种数据处理装置,其特征在于,所述装置应用于微控制单元MCU中的中央处理器CPU;针对所述MCU的随机存储器RAM的同一分区设置有读指针变量和写指针变量;所述读指针变量的值,表示最近一次对所述分区执行的数据读操作所对应的所述分区的存储地址;所述写指针变量的值,表示最近一次对所述分区执行的数据写操作所对应的所述分区的存储地址;所述分区,采用具备先入先出特性的数据结构存储数据;
所述装置包括下述功能单元:
查询单元,用于查询针对RAM的同一分区设置的读指针变量的值以及写指针变量的值;
第一判断单元,用于根据所述读指针变量的值和所述写指针变量的值,判断所述分区的相应存储空间是否大于预设的最小数据长度;
解析单元,用于若第一判断单元得到的判断结果为是,则初步解析所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
第二判断单元,用于判断解析单元获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
操作执行单元,用于若第二判断单元判断出解析单元获取到的指令值和帧长度值中,存在与所述所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对所述存储空间中存储的所述数据进行处理。
12.如权利要求11所述的装置,其特征在于,所述存储空间中存储的数据包括至少一个数据帧;则
解析单元,具体包括:
地址确定子单元,对所述存储空间中存储的数据进行初步解析,以确定所述存储空间中存储的各数据帧各自的帧头所对应的存储地址;
数据解析子单元,用于根据所述各数据帧各自的帧头所对应的存储地址,以及所述预设数据读取协议中规定的各目标数据帧的格式,从所述存储空间中存储的数据中,解析出所述各数据帧各自的指令值和帧长度值。
13.如权利要求12所述的装置,其特征在于,所述操作执行单元,具体用于将所述存储空间中存储的所述数据复制到临时缓存中;所述临时缓存,为所述RAM中的指定存储空间;
所述装置还包括:
校验单元,根据具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧的帧头所对应的存储地址,以及所述预设数据读取协议中规定的所述目标数据帧的格式,从所述存储空间中存储的数据中,解析出具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧各自的校验位;根据解析出的各个所述校验位,对复制到所述临时缓存中的具备与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值的各数据帧的正确性进行校验;
缓存清空单元,用于释放校验单元校验不成功的数据帧所占用的所述临时缓存的存储区域。
14.如权利要求11所述的装置,其特征在于,所述装置还包括:
数据写入单元,用于在将所述分区的结束地址赋值给所述写指针变量后,若继续写入数据至所述分区,则将所述分区的首地址赋值给所述写指针变量。
15.如权利要求11所述的装置,其特征在于,所述装置还包括:
赋值单元,用于当根据针对所述分区的数据读操作,使得所述读指针的值大于所述写指针的值时,将所述读指针变量的值设置为与所述写指针变量的值相同。
16.如权利要求11所述的装置,其特征在于,所述分区包含彼此大小相同的若干存储单元;所述装置还包括:
第一变量值更新单元,用于若第二判断单元判断出获取到的指令值和帧长度值中,不存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则不对所述数据进行处理,且根据所述存储空间所包含的所述存储单元的数量,更新所述读指针变量的值;或,所述装置还包括:
变量值保持单元,用于若第二判断单元判断出获取到的指令值和帧长度值中,不存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则不对所述数据进行处理,且在执行下一次数据读操作前,保持读指针变量的值不发生变化。
17.如权利要求11所述的装置,其特征在于,所述装置还包括:
第二变量值更新单元,用于若第二判断单元判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则根据所述存储空间所包含的所述存储单元的数量,更新所述读指针变量的值。
18.如权利要求17所述的装置,其特征在于,所述操作执行单元,具体用于:将所述存储空间中存储的所述数据复制到临时缓存;所述临时缓存,为所述RAM中的指定存储空间;
所述装置还包括:
第一处理单元,用于对复制到所述临时缓存中的所述数据进行处理;
第三判断单元,用于判断第一处理单元是否成功处理复制到所述临时缓存中的所述数据;
第一复制单元,用于若第三判断单元判断出第一处理单元未成功处理复制到所述临时缓存中的所述数据,则根据第二变量值更新单元更新后的所述读指针变量的值、所述数据的数据量以及所述分区的单个存储单元的大小,确定所述存储空间的首地址;根据所述首地址和所述写指针变量的值,复制所述首地址和所述写指针变量的值对应的所述存储空间中存储的所述数据至所述临时缓存,以使得所述第一处理单元对复制到所述临时缓存中的所述数据进行处理。
19.如权利要求17所述的装置,其特征在于,所述操作执行单元,具体用于:将所述存储空间中存储的所述数据复制到临时缓存;
所述装置还包括:
第二处理单元,用于对所述存储空间中存储的所述数据进行处理;其中,对所述存储空间中存储的所述数据进行处理,包括:对所述存储空间中存储的所述数据进行增加、删除或修改;
第四判断单元,用于判断是否成功处理所述存储空间中存储的所述数据;
第二复制单元,用于若第四判断单元判断出第二处理单元未成功处理复制到所述存储空间中存储的所述数据,则根据更新后的所述读指针变量的值、所述数据的数据量以及所述分区的单个存储单元的大小,确定所述存储空间的首地址;根据所述首地址和所述写指针变量的值,将所述临时缓存中的所述数据复制至所述首地址和所述写指针变量的值对应的所述存储空间,以使得第二处理单元对复制到所述存储空间中的所述数据进行处理。
20.如权利要求12所述的装置,其特征在于,所述装置还包括:
数据保存单元,用于将通过所述MCU的不同通道发送给所述MCU的数据,分别对应保存在所述RAM的不同分区;
所述查询单元,用于针对所述不同分区中的每个分区,并行执行:确定针对该分区设置的读指针变量的值以及写指针变量的值;
所述第一判断单元,用于针对所述不同分区中的每个分区,并行执行:根据所述读指针变量的值和所述写指针变量的值,确定该分区的相应存储空间是否大于预设的最小数据长度;
所述解析单元,用于针对所述不同分区中的每个分区,并行执行:若第一判断单元得到的相应判断结果为是,则初步解析该分区的所述存储空间中存储的数据以获取数据帧的指令值和帧长度值;
所述第二判断单元,用于针对所述不同分区中的每个分区,并行执行:判断所述解析单元获取到的指令值和帧长度值中,是否存在与预设数据读取协议中规定的目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值;
所述操作执行单元,用于针对所述不同分区中的每个分区,并行执行:若所述第二判断单元判断出获取到的指令值和帧长度值中,存在与所述目标数据帧的指令值和帧长度值对应一致的指令值和帧长度值,则对该分区的所述存储空间中存储的所述数据进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610976166.6A CN108062235B (zh) | 2016-11-07 | 2016-11-07 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610976166.6A CN108062235B (zh) | 2016-11-07 | 2016-11-07 | 数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108062235A true CN108062235A (zh) | 2018-05-22 |
CN108062235B CN108062235B (zh) | 2021-10-29 |
Family
ID=62136746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610976166.6A Active CN108062235B (zh) | 2016-11-07 | 2016-11-07 | 数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108062235B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111540456A (zh) * | 2020-06-08 | 2020-08-14 | 安翰科技(武汉)股份有限公司 | 数据载入方法及其胶囊内窥镜图像采集系统 |
CN112822386A (zh) * | 2019-11-15 | 2021-05-18 | 合肥美亚光电技术股份有限公司 | 数据的采集方法及系统 |
CN113760189A (zh) * | 2021-08-19 | 2021-12-07 | 上海卫星工程研究所 | 载荷数据填充存储方法和系统 |
CN114845156A (zh) * | 2022-05-07 | 2022-08-02 | 珠海全志科技股份有限公司 | 基于共享缓存的视频处理方法、装置及系统 |
CN114880148A (zh) * | 2022-07-12 | 2022-08-09 | 深圳融安网络科技有限公司 | 数据处理方法、装置及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5507004A (en) * | 1991-12-19 | 1996-04-09 | Mitsubishi Denki Kabushiki Kaisha | Communication control system for either providing blank areas or overwriting areas in a receiving RAM depending on deficient or execess word counts in received frames |
CN1547358A (zh) * | 2003-12-02 | 2004-11-17 | 烽火通信科技股份有限公司 | 一种用于以太网无源光网络的数据帧缓存设备和方法 |
CN102724122A (zh) * | 2012-06-21 | 2012-10-10 | 广东威创视讯科技股份有限公司 | 基于硬件系统的串口可靠传输方法及装置 |
CN103617132A (zh) * | 2013-11-29 | 2014-03-05 | 中国航空无线电电子研究所 | 一种基于共享存储的以太网终端发送实现方法及终端装置 |
CN103744621A (zh) * | 2013-12-31 | 2014-04-23 | 深圳英飞拓科技股份有限公司 | 缓冲区循环读写的方法及装置 |
CN105183665A (zh) * | 2015-09-08 | 2015-12-23 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
CN106063169A (zh) * | 2014-03-06 | 2016-10-26 | 华为技术有限公司 | 一种数据处理方法及装置 |
-
2016
- 2016-11-07 CN CN201610976166.6A patent/CN108062235B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5507004A (en) * | 1991-12-19 | 1996-04-09 | Mitsubishi Denki Kabushiki Kaisha | Communication control system for either providing blank areas or overwriting areas in a receiving RAM depending on deficient or execess word counts in received frames |
CN1547358A (zh) * | 2003-12-02 | 2004-11-17 | 烽火通信科技股份有限公司 | 一种用于以太网无源光网络的数据帧缓存设备和方法 |
CN102724122A (zh) * | 2012-06-21 | 2012-10-10 | 广东威创视讯科技股份有限公司 | 基于硬件系统的串口可靠传输方法及装置 |
CN103617132A (zh) * | 2013-11-29 | 2014-03-05 | 中国航空无线电电子研究所 | 一种基于共享存储的以太网终端发送实现方法及终端装置 |
CN103744621A (zh) * | 2013-12-31 | 2014-04-23 | 深圳英飞拓科技股份有限公司 | 缓冲区循环读写的方法及装置 |
CN106063169A (zh) * | 2014-03-06 | 2016-10-26 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN105183665A (zh) * | 2015-09-08 | 2015-12-23 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
Non-Patent Citations (1)
Title |
---|
韩思亮 等: "基于串口服务器的PLC与上位PC机的远程通讯设计", 《电器自动化》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112822386A (zh) * | 2019-11-15 | 2021-05-18 | 合肥美亚光电技术股份有限公司 | 数据的采集方法及系统 |
CN112822386B (zh) * | 2019-11-15 | 2022-04-29 | 合肥美亚光电技术股份有限公司 | 数据的采集方法及系统 |
CN111540456A (zh) * | 2020-06-08 | 2020-08-14 | 安翰科技(武汉)股份有限公司 | 数据载入方法及其胶囊内窥镜图像采集系统 |
WO2021249294A1 (zh) * | 2020-06-08 | 2021-12-16 | 安翰科技(武汉)股份有限公司 | 数据载入方法及其胶囊内窥镜图像采集系统 |
CN113760189A (zh) * | 2021-08-19 | 2021-12-07 | 上海卫星工程研究所 | 载荷数据填充存储方法和系统 |
CN113760189B (zh) * | 2021-08-19 | 2024-04-09 | 上海卫星工程研究所 | 载荷数据填充存储方法和系统 |
CN114845156A (zh) * | 2022-05-07 | 2022-08-02 | 珠海全志科技股份有限公司 | 基于共享缓存的视频处理方法、装置及系统 |
CN114845156B (zh) * | 2022-05-07 | 2024-03-19 | 珠海全志科技股份有限公司 | 基于共享缓存的视频处理方法、装置及系统 |
CN114880148A (zh) * | 2022-07-12 | 2022-08-09 | 深圳融安网络科技有限公司 | 数据处理方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108062235B (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108062235A (zh) | 数据处理方法及装置 | |
CN110442652B (zh) | 一种基于区块链的跨链数据处理方法及装置 | |
CN111344706B (zh) | 管理区块链上的交易的方法和系统 | |
CN103370691B (zh) | 管理缓冲器溢出状况 | |
EP3321819B1 (en) | Device, method and program for securely reducing an amount of records in a database | |
CN107395665A (zh) | 一种区块链业务受理及业务共识方法及装置 | |
JP2020507866A (ja) | データ処理方法およびデバイス | |
CN112597153B (zh) | 一种基于区块链的数据存储方法、装置及存储介质 | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN103164523A (zh) | 数据一致性检查方法、装置及系统 | |
CN109191287A (zh) | 一种区块链智能合约的分片方法、装置及电子设备 | |
CN107273195A (zh) | 一种大数据的批处理方法、装置及计算机系统 | |
CN110659905B (zh) | 交易验证方法、装置、终端设备以及存储介质 | |
CN103986585A (zh) | 报文预处理方法及其装置 | |
CN108037898A (zh) | 一种基于Ceph的dpdk通讯的方法、系统及装置 | |
CN108830712A (zh) | 区块生成的方法、装置、设备和介质 | |
EP4390706A1 (en) | Embedded vector prefetching method, apparatus and system, and related device | |
EP3825848A1 (en) | Data processing method and apparatus, and related product | |
CN110381150B (zh) | 区块链上的数据处理方法、装置、电子设备及存储介质 | |
CN103942149B (zh) | 用户态程序与内核交互报文的方法及系统 | |
CN110489420A (zh) | 一种基于区块链的数据处理方法及装置 | |
CN114327882A (zh) | 一种数据转发方法、装置及系统 | |
JP6812826B2 (ja) | 格納方法、格納装置及び格納プログラム | |
CN106411545A (zh) | 一种业务属性的计数方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |