CN116028674A - 一种智能终端数据通信方法及*** - Google Patents
一种智能终端数据通信方法及*** Download PDFInfo
- Publication number
- CN116028674A CN116028674A CN202211198021.XA CN202211198021A CN116028674A CN 116028674 A CN116028674 A CN 116028674A CN 202211198021 A CN202211198021 A CN 202211198021A CN 116028674 A CN116028674 A CN 116028674A
- Authority
- CN
- China
- Prior art keywords
- data
- tree
- communication
- level
- branch
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种智能终端数据通信方法及***,方法包括:获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置本发明实施例提供的一种智能终端数据通信方法及***,将不停变换的多种串行通信数据转换为多叉树后,数据种类、数据值被按照各自的规律分属不同的树枝,便于维护,当需要增加一类数据时,增加一根树枝即可,不需要修改其他任何一根树枝,同样当减小一类数据时,减少一根树枝即可,不需要修改其他任何一根树枝;所有树枝均使用同一个数据结构,结构简单。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种智能终端数据通信方法及***。
背景技术
随着“互联网+”智慧能源智能终端的应用场景越来越丰富,终端数量几乎以几何级数的量级来增加,每一台终端产生的能量数据种类及数据量更是海量。虽然一般将数据交互归纳为控制码和数据域,然而控制码和数据域的种类及组合数以万计,为数据通信带来很大的难度。目前常用的方法是基于每一条串行通信考虑处理方法,针对每一种编写控制程序,然而这种方式的带来的问题是:
一是方法复杂,由于通信是串行进行的,每一次通信可能对应不同的控制码以及对应不同的数据域,每一次的解析方法都可能不同,使得处理方法多种多样;
二是数据结构复杂,数据域包括结构化、半结构化、非结构化的数据,那么与之对应的数据结构可能多种多样;
三是维护困难,增加或者减小一种控制码和数据域,可能会涉及方法及数据结构的调整;
四是程序量非常大,占用很大的存储空间,执行效率不高;
五是智能终端的种类较多,每种终端的控制码和数据域其实是大同小异,然而复杂的逻辑可能使得依据不同智能终端进行的调整反而不太容易。
因此,现在亟需一种智能终端数据通信方法及***来解决上述问题。
发明内容
为了解决上述问题,本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的一种智能终端数据通信方法及***。
第一方面本发明实施例提供一种智能终端数据通信方法,包括:
获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;
构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
其中,所述通信数据的帧数据结构包括:
帧起始符、从站地址域、控制码、数据长度、数据域、帧信息纵向校验码及帧结束符七个域组成。
其中,所述获取通信数据,基于所述通信数据构建数据域有序多叉树,包括:
基于所述通信数据建立数组,所述数组的元素数量为所述多叉树的层级;
数组的元素具体数值为所述多叉树的每个层级的分支节点数;
对数组元素进行按照从小到大进行排序,排序完之后的数组元素的顺序为所述多叉树的每个层级。
其中,所述方法还包括:
根据冒泡排序法对各个层级的分支节点数集中的每个数据域的种类进行排序,得到预处理各个层级的分支节点数集,其中所述冒泡排序法为比较两个相邻的元素,将值大的元素交换到右边。
其中,所述构建所述数据域有序多叉树每一层级的数据结构,包括:
构建基本数据的结构单元、同一层级的数据单元、所有层级的数据结构。
其中,所述构建所述数据域有序多叉树每一层级的数据结构,还包括:
所述数据结构采用链式数据结构,包括结点的数据域、指向父结点的指针域、指向左子结点的指针域、指向右子结点的指针域,并增加了指针域用于构建链式的存储数据;所述链表中每一个节点都包含此节点的数据和指向上一节点以及下一节点地址的指针。
其中,所述基于同样的数据结构,查找数据位于多叉树的具体树叶位置,包括:
判断所有层级和当前层级是否查找完毕,若未查找完毕则将数据标识符分别与该级数据表中的数据标识符号进行比较;
若不相符,则与下一个数据标识符号进行比较,直至查找到或进入下一级表类推查找。
第二方面本发明实施例还提供一种智能终端数据通信***,包括:
多叉树构建模块,用于获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;
数据查找模块,用于构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
第三方面本发明实施例提供了一种电子设备,包括:
处理器、存储器、通信接口和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述一种智能终端数据通信方法。
第四方面本发明实施例提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述一种智能终端数据通信方法。
本发明实施例提供的一种智能终端数据通信方法及***,将不停变换的多种串行通信数据转换为多叉树后,数据种类、数据值被按照各自的规律分属不同的树枝,便于维护,当需要增加一类数据时,增加一根树枝即可,不需要修改其他任何一根树枝,同样当减小一类数据时,减少一根树枝即可,不需要修改其他任何一根树枝;所有树枝均使用同一个数据结构,结构简单。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种智能终端数据通信方法流程图;
图2是本发明实施例提供的帧数据结构示意图;
图3为控制码的分支查询方法示意图;
图4为本发明实施例提供的树形结构的完整表示例;
图5是本发明实施例给出的是数据域的5层树形结构示意图;
图6是本发明实施例提供的数据域的同一层级结构单元示意图;
图7是本发明实施例提供的数据域的所有层级数据结构示意图;
图8是本发明实施例提供的数据域的所有层级的数据结构的示意图;
图9是本发明实施例提供的数据域的有序多叉树的遍历查找方法示意图;
图10是本发明实施例提供的一种智能终端数据通信***结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种智能终端数据通信方法流程图,如图1所示,包括:
获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;
构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
本发明实施例不仅仅局限于单次的数据通信,对各次通信的数据域进行分析发现,其核心部分可以归结为一种可重复使用的多叉树查找方法及一种可嵌套的多叉树数据结构。实现了数据种类和数据值的快速查找,至少提高50%的解析效率。更为重要的是将不停变换的多种串行通信数据转换为多叉树后,数据种类、数据值被按照各自的规律分属不同的树枝,便于维护,当需要增加一类数据时,增加一根树枝即可,不需要修改其他任何一根树枝,同样当减小一类数据时,减少一根树枝即可,不需要修改其他任何一根树枝;所有树枝均使用同一个数据结构,结构简单;又由于使用同样的数据结构,查找最终数据(树叶)的方法,均可采用同样一种查找方法。
在上述实施例的基础上,所述通信数据的帧数据结构包括:
帧起始符、从站地址域、控制码、数据长度、数据域、帧信息纵向校验码及帧结束符七个域组成。
图2是本发明实施例提供的帧数据结构示意图,如图2所示,每帧数据由帧起始符、从站地址域、控制码、数据长度、数据域、帧信息纵向校验码及帧结束符7个域组成。其中最为重要的是控制码和数据域,然而控制码和数据域的种类及组合数以万计,极大的影响通信解析的效率。
常规方法是针对每一种类通信构建不同的处理方法及数据结构,然后如此众多的数据种类,会使得程序和数据结构变得异常复杂。
因此针对上述情形本发明实施例对所有数据域进行抽象,构建多叉树,通过多叉树的遍历和剪枝,从而重复使用一种解析方法快速查找到对应的树枝。
在上述实施例的基础上,所述获取通信数据,基于所述通信数据构建数据域有序多叉树,包括:
基于所述通信数据建立数组,所述数组的元素数量为所述多叉树的层级;
数组的元素具体数值为所述多叉树的每个层级的分支节点数;
对数组元素进行按照从小到大进行排序,排序完之后的数组元素的顺序为所述多叉树的每个层级。
首先,需要对控制码是否有效进行查询,图3为控制码的分支查询方法示意图,如图3所示,常规的,控制码种类包括:保留类、广播校时类、读数据类、读后续数据类、读通信地址类、写数据类、写通信地址、冻结命令类、更改通信速率类、修改密码类、最大需量清零类、电表清零类、事件清零类等等。
优选地,控制码可以定义为1个字节,取值范围最大为0x00~0xFF,即256种数据标识符;根据需要也可以拓展取值范围,比如定义为2个字节,取值范围最大为0x00~0xFFFF,即65536种控制码;以此类推。
然后构建数据域有序多叉树,图4为本发明实施例提供的树形结构的完整表示例,根据树的基本知识,树的层次就是树的高度。每个层级的分支节点数,就是树的分叉数。
本实施例在实施时可根据研究对象的具体情况进行树结构节点的调整,但是对同一个研究问题,其树型结构应当统一。
有序多叉树的层次:按数据域(数据标识符)种类来划分层级;一般地,数据域(数据标识符)种类可以分为4级,那么层级就是4;
有序多叉树每个层级的分支节点数:例如所述电能量的条件值数量为64,那么电能量这个层级的分支节点数就是64;
有序多叉树的层次划分方法:分支节点数少的在上面一个层级,分支节点数多的在下面一个层级,比如数据种类1(电能量)的分支节点数(5)少于电能种类1((当前)组合有功总电能)的分支节点数(65),那么数据种类1(电能量)的层级就应该比电能种类1((当前)组合有功总电能)的层级高,假如总的层级为L,数据种类1(电能量所在的层级为X(X介于1到L之间),那么数据种类1(电能量)所在的层级为Y(Y介于1到N之间,且Y>X),比如:如果只有两个层级,那么数据种类1(电能量)的层级就是第1层,电能种类1((当前)组合有功总电能)的层级就是第2层;如果两个层级的分支节点数一样,可以指定任意一个为上一层级、另外一个为下一层级,或者也可由历史经验选择层级。
在上述实施例的基础上,所述方法还包括:
根据冒泡排序法对各个层级的分支节点数集中的每个数据域的种类进行排序,得到预处理各个层级的分支节点数集,其中所述冒泡排序法为比较两个相邻的元素,将值大的元素交换到右边。
本发明实施例的实现方法是:建立一个数组;数组的元素多少就是层级(数据域的种类)的多少,比如6;数组的元素的具体数值就是每个层级的分支节点数,比如Data[17]={32,5,8,8,64,8),对应的就是数组的元素N=6;数组的元素的具体数值就是每个层级(数据域的种类)的分支节点数,也就是每个层级(数据域的种类)的条件值数量,比如第二个元素是5,对应是数据种类1(电能量)的条件值数量:数组元素值为64的就是对应层级(数据域的种类)电能种类1((当前)组合有功总电能)的条件值数量;
对数组元素进行按照从小到大进行排序,那么调整完之后的数组元素的顺序就是有序多叉树的每个层级。小到大进行排序,比如冒泡排序,排序完成后,Data[N]={5,8,8,8,32,64};根据需要,可以选择对相同大小的节点数进行调整,也可不调整;那么调整之后的数组元素所在数组中的位置,就是层级,也就树的主干(树干)到分支节点(树枝)再到叶节点(树叶)的顺序。比如内部电阻所在的层级为第一层级。
在本实施例中,根据冒泡排序法对各个层级的分支节点数集中的每个数据域的种类进行排序,得到预处理各个层级的分支节点数集,其中冒泡排序的原理为:比较两个相邻的元素,将值大的元素交换到右边;冒泡排序法的排序思路为:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面,具体步骤为:(1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。(2)比较第2和第3个数,将小数放在前面,大数放在后面。(3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成;(4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一个数是不参加比较的。(5)在第二趟比较完成后,倒数第二个数也一定是数组中倒数第二大数,所以在第三趟的比较中,最后两个数是不参与比较的。(6)依次类推,每一趟比较次数减少依次。用冒泡排序对该数据队列进行排序,按照小的靠前排,即往上冒泡,假如有N个数据Data,Data[0]~Data[L-1]在算法的L-1趟排序中,对单次的比较,如Data[l+1]>Data[l],则Data[l+1]与Data[l]位置互换,数组元素编号l+1和l位置也同时互换,其中1≤l≤L-1,最多需要经过(l*(l-1))/2次比较,冒泡排序执行结束。
图5是本发明实施例给出的是数据域的5层树形结构示意图,如图5所示,常规的,数据层级可以分为5层。一种实例,数据域根据数据的类型,又可以分为不同的层级,以满足复杂的数据种类。
1)树第L层:
树干,以数据种类为树干。
2)树第L-1层:
包括:
数据种类1(电能量)、
数据种类2(最大需量及发生时间)、
数据种类3(变量)、
数据种类4(事件记录)、
数据种类5(参变量)、
数据种类6(冻结量)、
数据种类7(负荷记录)等。
3)树第L-2层:
比如,数据种类1(电能量)包括:
电能种类1((当前)组合有功总电能)、
电能种类2((当前)正向有功总电能)、
电能种类3((当前)反向有功总电能)、
电能种类4((当前)组合无功)、
电能种类5(总电能)等等。
...
最大可能包括256种不同的电能种类。
再比如,数据种类7(负荷记录)包括:
负荷记录种类1(第1类负荷记录记录块)、
负荷记录种类2(第2类负荷记录记录块)、
负荷记录种类3(第3类负荷记录记录块)、
负荷记录种类4(第4类负荷记录记录块)、
负荷记录种类5(第5类负荷记录记录块)、
负荷记录种类6(第6类负荷记录记录块),
目前常用的为6类记录块,最大可能包括256种不同的记录块。
4)树第L-3层:
比如,电能种类1((当前)组合有功总电能):
(当前)组合有功总电能、
(当前)组合有功费率1电能、
…、
(当前)组合有功费率63电能、
(当前)组合有功电能数据块等等,
前常用的为65类(当前)组合有功总电能,最大可能包括256种不同的(当前)组合有功总电能。
再比如,第1类负荷记录记录块目前仅有第1类负荷记录记录块无更多数据分类。
5)树第L-4层:
树第五层为数据域第四层级。
比如,(当前)组合有功总电能目前仅有(当前)组合有功总电能一种,无更多数据分类
再比如,第1类负荷记录记录块仅包括:
第1类负荷记录最早记录块、
第1类负荷给定时间记录块、
第1类负荷最近一个记录块。
在上述实施例的基础上,所述构建所述数据域有序多叉树每一层级的数据结构,包括:
构建基本数据的结构单元、同一层级的数据单元、所有层级的数据结构。
具体的,基本数据结构单元为:本级数据标识符、下级表标志、下一级表地址/执行函数指针,基本数据结构的一种程序实现方式如下:
//数据标识数据结构
typedefstruct{
unsigned char dataId;//本级数据标识符
unsigned char nextLevel;//下级表标志:00=无下一级表;01=有下一级表,
FF=本表结束
void*entry;//下一级表地址/执行函数指针
}DataIdTable;
本级数据标识符:优选地,可以定义为1个字节,取值范围最大为0x00~0xFF,即256种数据标识符;根据需要也可以拓展取值范围,比如定义为2个字节,取值范围最大为0x00~0xFFFF,即65536种数据标识符;以此类推。
下级表标志:优选地,可以定义为1个字节:0x00=无下一级表;0x01=有下一级表,0xFF=本表结束。
下一级表地址/执行函数指针:如果还有下一级表,则此时表示下一级表地址,如果没有下一级表,则此时表示执行函数指针。
对于同一层级的数据单元,图6是本发明实施例提供的数据域的同一层级结构单元示意图,如图6所示,该级数据表名为DataIdTable RDI_XX______;包含:
数据标识符1为0x00,下级表标志1为0x1表示还有下级表,下一级表地址为RDI_00XX____,这是数据是电能量数据;
数据标识符2为0x01,下级表标志1为0x1表示还有下级表,下一级表地址为RDI_01XX____,这是最大需量及发生时刻数据
…:依次类推的其他数据
数据标识符N为0xFF,下级表标志1为0xFF表示没有下级表,则此时的执行函数指针为Read__Invalid,这表示本表格的数据标识符已经结束,这是最后一个元素,执行函数指针Read__Invalid专门用来做相应处理。
对于所有层级的数据结构,图7是本发明实施例提供的数据域的所有层级数据结构示意图,如图7所示,一个完整的数据域由第L级、第L-1级、第L-2级……第0级的数据标识符组合而成。具体而言:第L级包含N个数据标识符,每一个数据标识符通过下一级表地址/执行函数指针均可指向第L-1级(下一级)数据标识符;比如第L级数据标识符1指向的第L-1级数据标识符,可能有M个数据标识符;比如第L-1级数据标识符1指向的第L-2级数据标识符,可能有Q个数据标识符。
举例说明,图8是本发明实施例提供的数据域的所有层级的数据结构的示意图,假定数据域一共4级,即级数分别为第3级、第2级、第1级、第0级,各级数据域可以依次命名为DI3→DI2→DI1→DI0。
若DI3→DI2→DI1→DI0为0x00→0x00→0x00→0x00,
第3级数据表RDI_XX______中数据标识符0x00对应的下级表标志0x01=有下一级表,下一级表地址指向第2级数据表RDI_00XX____;
第2级数据表RDI_00XX___中数据标识符0x00对应的下级表标志0x01=有下一级表,下一级表地址指向第1级数据表)Read_0000XX__;
第1级数据表Read_0000XX__中数据标识符0x00对应的下级表标志0x01=有下一级表,下一级表地址指向第1级数据表)Read_000000XX;
第0级数据表Read_000000X中数据标识符0x00对应的下级表标志0x00=无下一级表,执行函数指针指向(void*)Read_00000000,用来执行读取(当前)组合有功总电能;
若DI3→DI2→DI1→DI0为0x00→0x00→0x00→0x0C,则本次数据域表示读取(上12结算日)组合有功总电
若DI3→DI2→DI1→DI0为0x00→0x00→0x00→0x32,则本次数据域无效,虽然DI3→DI2→DI1均是在各级数据标识符定义范围内的有效数据域,但是DI0=0x32则不在该级数据标识符定义范围内,故DI3→DI2→DI1→DI0为非法数据域,最终指向的处理该类数据域的执行函数指针。
在上述实施例的基础上,所述构建所述数据域有序多叉树每一层级的数据结构,还包括:
所述数据结构采用链式数据结构,包括结点的数据域、指向父结点的指针域、指向左子结点的指针域、指向右子结点的指针域,并增加了指针域用于构建链式的存储数据;所述链表中每一个节点都包含此节点的数据和指向上一节点以及下一节点地址的指针。
采用链式数据结构,包括结点的数据域、指向父结点的指针域、指向左子结点的指针域、指向右子结点的指针域,链表相较于数组,除了数据域,还增加了指针域用于构建链式的存储数据。链表中每一个节点都包含此节点的数据和指向上一节点以及下一节点地址的指针。由于是通过指针进行下一个数据元素的查找和访问,使得链表的自由度更高。这表现在对节点进行增加和删除时,只需要对上一节点的指针地址进行修改,而无需变动其它的节点。同时,由于是采用指针指向上下节点,故可以采用不连续的存储空间,即存储更加灵活。
包括结点的数据域、指向父结点的指针域、指向左子结点的指针域、指向右子结点的指针域,所述父结点的指针域为所述树形数据结构的所述上级节点的存储地址,所述左子结点的指针域、指向右子结点的指针域为所述树形数据结构的下级节点的左子结点的存储地址、右子结点的存储地址。
具体的,相邻数组指针:指树形结构叶节点间的链接指针,由于A树结构中,叶节点数组中对应的电能参数具体数值为升序排列,所以,将A树结构中的叶节点链接后,能够进行范围查询和遍历。
具体步骤包括:获取树的层次关系及各层树的分支数量;树形结构中的层级对应数组元素的数量,各层树的分支数量对应本级数组的下标,将树的层次关系及各层树的分支数量映射成数组与树形结构结合表示的链路,建立树形数据结构;根据储存数据形成的链路,将所述储存数据的内存地址储存至所述树形数据结构的叶节点;将所述树形数据结构的叶节点顺序链接。
数组树数据储存方法利用树的层次关系及各层树的分支数量,映射成数组与树形结构结合表示的数组树存储链路,以形成便于检索数据的数据储存方式,数组树数据储存方法中每个节点都是一个数组,每个数组占用4个字节,算法中每个树节点至少定义三个指针、一个数据,因此数组树数据储存方法索引小于常规树索引占用的内存空间。
将树的层次关系及各层树的分支数量转换成树形结构中的不同链路,并在链路末端存储该数据的内存地址(或数据集索引),其中,每个树节点又对应一个数组。检索时,则依据树的层次关系及各层树的分支数量快速通过树形链路找到对应的数据地址,从而实现数据高效检索。本发明是将数组和树型结构结合来实现数据快速查找的算法,即:数组树算法。
树型结构中的节点(数组):每个指针都指向下一级(次级)数组(节点),依此形成链表树结构。
从当前叶节点开始,根据链路记录,不断在所述当前叶节点的父节点的结构数组中寻找指向左相邻叶节点的左次级数组指针和指向右相邻叶节点的右次级数组指针;
判断所述左次级数组指针和所述右次级数组指针是否有效;
若否,则返回上一步,继续在所述当前叶节点的父节点的结构数组继续寻找;
若是,则根据找到的所述左次级数组指针和链路记录,不断在所述左次级数组指针的次级节点数组中寻找所述左相邻叶节点,根据找到的所述右次级数组指针和链路记录,不断在所述右次级数组指针的次级节点数组中寻找所述右相邻叶节点;
进行所述当前叶节点的左链接和右链接;所述左链接为将所述当前叶节点的数组指针写入所述当前叶节点的左相邻叶节点的数组头部;所述右链接为将所述当前叶节点的右相邻叶节点的数组指针写入所述当前叶节点的数组头部。
具体的,一条数据的数组树链路创建完成后,将进行该叶节点(数组树末端数组)链接,即将相邻叶节点从一个方向进行链接。
具体的,根据树的层次关系及各层树的分支数量,获取树形数组,本算法中,索引占用的内存空间约为常规算法中索引占用的内存空间的1/3,本算法的检索效率大幅优于二分算法(8~10倍效率)。数据地址只存在于叶节点数组中,非叶节点的逻辑运算均在内存中实现,所以能够大幅减少读取操作,提高检索效率。在本算法的树结构中,非叶节点是单向顺序链接,所以能够方便的实现范围查找、数据遍历、数据分页等功能。更具体的,当检索到数组指针为空或当前数组长度小于指定的长度时,会被认为没有检索到,将返回空值。若检索到最后一位数字且数组内的指针不为空,则返回该指针,即数据的内存地址(或数据集编号)。本技术方案仅就基本的数据结构和功能进行了基本的描述和论证,在实际应用中,可根据需要进行优化和完善。
在上述实施例的基础上,所述基于同样的数据结构,查找数据位于多叉树的具体树叶位置,包括:
判断所有层级和当前层级是否查找完毕,若未查找完毕则将数据标识符分别与该级数据表中的数据标识符号进行比较;
若不相符,则与下一个数据标识符号进行比较,直至查找到或进入下一级表类推查找。
图9是本发明实施例提供的数据域的有序多叉树的遍历查找方法示意图,如图9所示,假定数据有L层,则数据标识符:DI(L)→DI(L-1)→DI(L-2)→……→DI(0)
在第l层中查找对应的树枝
SL01:判断所有层级查找完毕?
→是,到SL10
→否,到SL02
SL02:判断当前层级查找完毕?
→是,到SL09
→否,到SL03
SL03:判断数据标识符相符?将数据标识符分别与该级数据表中的数据标识符号进行比较
→是,到SL04
→否,回到SL02,与下一个数据标识符号进行比较,依次类推
SL04:获取下一级表标志
→可能为0x00、0x01、0xFF
SL05:判断有下一级表?
→是,0x00表示无下一级表SL06
→否,0x01表示有下一级表SL07
→否,0xFF表示本表结束SL06
SL06:获取执行函数指针
SL07:获取下一级表,到SL08
SL08:进入下一级表,到SL01,与下一级表的数据标识符号进行比较,依次类推
SL09:表示在当前层级表的所有标识符中查找均未匹配到对应的数据域,即该层级命令中的数据标识符非法,退出查找
SL10:表示在所有层级的所有表中查找均未匹配到对应的数据域,即所有层级命令中的数据标识符非法,退出查找。
假定数据域一共4级,即级数分别为第3级、第2级、第1级、第0级,各级数据域可以依次命名为DI3→DI2→DI1→DI0。
若DI3→DI2→DI1→DI0为0x00→0x00→0x00→0x00,
S1:在第L-1=3层中查找对应的树枝
S101:数据标识符相符?将数据标识符DI3=0x00分别与各根树枝的数据标识符号(0x00、0x01、0x02、0x03、0x04、0x05、0x06、0xFE、0xFF)进行比较
→是,本实例DI3=0x00在本级表中找到匹配项,到S102
S102:获取下一级表标志
→为0x01,到S103
S103:判断有下一级表?
→是,0x01表示有下一级表,到S104
S104:获取下一级表
→下一级表为RDI_00XX____,到S105
S105:进入下一级表RDI_00XX____,到S2
S2:在下一级表第L-2=2层中查找对应的树枝
S201:数据标识符相符?将数据标识符DI2=0x00分别与各根树枝的数据标识符号(0x00、0x01、0x02,0xFF)进行比较
→是,本实例DI2=0x00在本级表中找到匹配项,到S202
S202:获取下一级表标志
→为0x01,到S203
S203:有下一级表?
→是,0x01表示有下一级表,到S204
S204:获取下一级表
→下一级表为Read_0000XX__,到S205
S205:进入下一级表Read_0000XX__,到S3
S3:在下一级表第L-3=1层中查找对应的树枝
S301:数据标识符相符?将数据标识符DI1=0x00分别与各根树枝的数据标识符号(0x00、0x01、0x02、0x03、0x04、0xFF)进行比较
→是,本实例DI1=0x00在本级表中找到匹配项,到S302
S302:获取下一级表标志
→为0x01,到S303
S303:有下一级表?
→是,0x01表示有下一级表,到S304
S304:获取下一级表
→下一级表为Read_000000XX,到S305
S305:进入下一级表Read_000000XX,到S4
S4:在下一级表第L-4=0层中查找对应的树枝
S401:数据标识符相符?将数据标识符DI0=0x00分别与各根树枝的数据标识符号(0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08、0x09、0x0A、0x0B、0x0C、0xFF)进行比较
→是,本实例DI0=0x00在本级表中找到匹配项,到S402
S402:获取下一级表标志
→为0x00,到S403
S403:有下一级表?
→否,0x00表示无下一级表,到S404
S404:获取执行函数指针
→执行函数指针为(void*)Read_00000000,用来执行读取(当前)组合有功总电能
图10是本发明实施例提供的一种智能终端数据通信***结构示意图,如图10所示,包括:
多叉树构建模块1001用于获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;
数据查找模块1002用于构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
具体的如何通过多叉树构建模块1001和数据查找模块1002可用于执行图1所示的智能终端数据通信方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行每个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种智能终端数据通信方法,其特征在于,包括:
获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;
构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
2.根据权利要求1所述的智能终端数据通信方法,其特征在于,所述通信数据的帧数据结构包括:
帧起始符、从站地址域、控制码、数据长度、数据域、帧信息纵向校验码及帧结束符七个域组成。
3.根据权利要求2所述的智能终端数据通信方法,其特征在于,所述获取通信数据,基于所述通信数据构建数据域有序多叉树,包括:
基于所述通信数据建立数组,所述数组的元素数量为所述多叉树的层级;
数组的元素具体数值为所述多叉树的每个层级的分支节点数;
对数组元素进行按照从小到大进行排序,排序完之后的数组元素的顺序为所述多叉树的每个层级。
4.根据权利要求3所述的智能终端数据通信方法,其特征在于,所述方法还包括:
根据冒泡排序法对各个层级的分支节点数集中的每个数据域的种类进行排序,得到预处理各个层级的分支节点数集,其中所述冒泡排序法为比较两个相邻的元素,将值大的元素交换到右边。
5.根据权利要求1所述的智能终端数据通信方法,其特征在于,所述构建所述数据域有序多叉树每一层级的数据结构,包括:
构建基本数据的结构单元、同一层级的数据单元、所有层级的数据结构。
6.根据权利要求5所述的智能终端数据通信方法,其特征在于,所述构建所述数据域有序多叉树每一层级的数据结构,还包括:
所述数据结构采用链式数据结构,包括结点的数据域、指向父结点的指针域、指向左子结点的指针域、指向右子结点的指针域,并增加了指针域用于构建链式的存储数据;所述链表中每一个节点都包含此节点的数据和指向上一节点以及下一节点地址的指针。
7.根据权利要求6所述的智能终端数据通信方法,其特征在于,所述基于同样的数据结构,查找数据位于多叉树的具体树叶位置,包括:
判断所有层级和当前层级是否查找完毕,若未查找完毕则将数据标识符分别与该级数据表中的数据标识符号进行比较;
若不相符,则与下一个数据标识符号进行比较,直至查找到或进入下一级表类推查找。
8.一种智能终端数据通信***,其特征在于,包括:
多叉树构建模块,用于获取通信数据,基于所述通信数据构建数据域有序多叉树,通信数据中的数据种类、数据值分属不同的多叉树树枝;
数据查找模块,用于构建所述数据域有序多叉树每一层级的数据结构,基于同样的数据结构,查找数据位于多叉树的具体树叶位置。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述智能终端数据通信方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述智能终端数据通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211198021.XA CN116028674A (zh) | 2022-09-29 | 2022-09-29 | 一种智能终端数据通信方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211198021.XA CN116028674A (zh) | 2022-09-29 | 2022-09-29 | 一种智能终端数据通信方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116028674A true CN116028674A (zh) | 2023-04-28 |
Family
ID=86071128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211198021.XA Pending CN116028674A (zh) | 2022-09-29 | 2022-09-29 | 一种智能终端数据通信方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028674A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101516086A (zh) * | 2008-02-21 | 2009-08-26 | 卓望数码技术(深圳)有限公司 | 移动通讯的业务匹配方法 |
CN111581215A (zh) * | 2020-05-07 | 2020-08-25 | 钟士平 | 数组树数据储存方法、快速查找方法及可读储存介质 |
CN113760621A (zh) * | 2021-09-07 | 2021-12-07 | 四川中微芯成科技有限公司 | 触摸芯片的测试方法、装置、计算机设备和存储介质 |
CN114443646A (zh) * | 2021-12-28 | 2022-05-06 | 许昌开普检测研究院股份有限公司 | 基于双向线性链表目录检索的多叉树结构、电子设备及可读存储介质 |
-
2022
- 2022-09-29 CN CN202211198021.XA patent/CN116028674A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101516086A (zh) * | 2008-02-21 | 2009-08-26 | 卓望数码技术(深圳)有限公司 | 移动通讯的业务匹配方法 |
CN111581215A (zh) * | 2020-05-07 | 2020-08-25 | 钟士平 | 数组树数据储存方法、快速查找方法及可读储存介质 |
CN113760621A (zh) * | 2021-09-07 | 2021-12-07 | 四川中微芯成科技有限公司 | 触摸芯片的测试方法、装置、计算机设备和存储介质 |
CN114443646A (zh) * | 2021-12-28 | 2022-05-06 | 许昌开普检测研究院股份有限公司 | 基于双向线性链表目录检索的多叉树结构、电子设备及可读存储介质 |
Non-Patent Citations (3)
Title |
---|
田霆: ""基于PowerPC的电力载波路由器的实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 04, pages 136 - 261 * |
袁中明: ""可定制异步消息通信处理机制的研究与应用"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 01, pages 138 - 492 * |
邹学玉 等: ""基于Zigbee的数据监测上位机通信接口设计"", 《长江大学学报(自科版)》, vol. 11, no. 25, pages 36 - 40 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109885576A (zh) | 一种哈希表创建方法及***、计算设备及存储介质 | |
CN108197313B (zh) | 通过16位Trie树实现空间优化的词典索引方法 | |
CN103514201A (zh) | 一种非关系型数据库的数据查询方法和装置 | |
CN111190904A (zh) | 一种图-关系数据库混合存储的方法和装置 | |
CN104778258A (zh) | 一种面向协议数据流的数据抽取方法 | |
US11461317B2 (en) | Method, apparatus, system, device, and storage medium for answering knowledge questions | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN109325029A (zh) | 基于稀疏矩阵的rdf数据存储和查询方法 | |
CN112818013B (zh) | 时序数据库查询优化方法、装置、设备以及存储介质 | |
EP3955256A1 (en) | Non-redundant gene clustering method and system, and electronic device | |
EP2660729A1 (en) | Device and method for storing mass data based on tree structure | |
CN116028674A (zh) | 一种智能终端数据通信方法及*** | |
CN111262589B (zh) | 一种dfa空间压缩方法及装置 | |
CN117472959A (zh) | 一种基于Gskiplist的区块链高效查询***及动态构建方法 | |
CN113535828B (zh) | 时序数据的聚合查询方法、***、设备及存储介质 | |
CN115599897A (zh) | 基于知识图谱的配电网设备智能问答***构建方法及*** | |
CN114328486A (zh) | 基于模型的数据质量核查方法及装置 | |
CN113297204B (zh) | 索引生成方法及装置 | |
CN106383863A (zh) | 一种同构子图查询优化方法 | |
CN114595215A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110083603B (zh) | 一种基于邻接表实现节点路径的查询方法及*** | |
CN112528082A (zh) | 一种XML文档的流水线XPath查询方法、终端设备及存储介质 | |
CN110427396A (zh) | 电能表数据检索方法、装置、设备及计算机可读存储介质 | |
CN114817315B (zh) | 数据处理方法以及*** | |
CN117077067B (zh) | 一种基于智能匹配的信息***自动部署规划方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |