一种用于物联网智能设备的数据压缩传输方法与流程

文档序号:29465489发布日期:2022-04-02 03:14阅读:255来源:国知局
一种用于物联网智能设备的数据压缩传输方法与流程

1.本发明涉及物联网的数据传输技术领域,特别是涉及一种用于物联网智能设备的数据压缩传输方法。


背景技术:

2.随着万物互联时代的到来,物与物之间的连接方式也在不断发展和更新。在物联网领域,物联网设备(例如智能家居设备、智能穿戴设备、智能医疗设备以及智能锁的设备)具有体积小,性能有限,低功耗,需要稳定运行。其中,大多数传感器都是嵌入在芯片中,网络传输模块的能耗低,且功率小,普遍使用电池供电,如何使传输的数据精简,减少无线数据发射次数,降低发射功耗,提高智能设备续航时间是一个重要的考虑因素。在现有技术中,在物联网的网络通信和通用数据交换等应用场景中经常使用的技术是json或xml,在数据精简方面仍存在可以改进的空间。


技术实现要素:

3.本发明所要解决的技术问题在于,提供一种用于物联网智能设备的数据压缩传输方法,可以减少数据传输量,降低智能设备的功耗。
4.为解决上述技术问题,作为本发明的一方面,提供一种用于物联网智能设备的数据压缩传输方法,其包括如下步骤:
5.步骤s10,物联网的本端智能节点向对端智能节点发送数据时,根据需要传输数据生成proto格式的文件;
6.步骤s11,物联网的本端智能节点获得所述proto格式文件对应的c语言或java语言格式的编译文件;
7.步骤s12,采用protobuf工具将所述的编译文件进行序列化处理,采用varints编码形成二进制的文件,并封装为包含有定长包头和变长包体的数据包,其中,所述变长包体中包括有所述二进制文件,在所述数据包中包含有所有数据的校验和;
8.步骤s13,物联网的本端智能节点将所述数据包发送给对端智能节点;
9.步骤s14,对端智能节点接收所述数据包后,通过所述校验和对所述数据包进行校验,并采用protobuf工具对数据包中的二进制文件进行反序列化处理,获得其中的编译文件,以解析出对应的数据。
10.优选地,所述步骤s11进一步包括:
11.在本地编译文件库中查询是否存在当前proto格式的文件相应的c语言或java语言格式的编译文件,如果存在则调用所述编译文件;否则采用protobuf工具库进行编译,形成的c语言或java语言格式的编译文件。
12.优选地,所述物联网的本端智能节点为服务主站与智能设备中一个,而对端智能节点为服务主站与智能设备中另一个。
13.优选地,所述服务主站中存储有java语言格式的编译文件库;所述智能设备中存
储有c语言格式的编译文件库。
14.优选地,所述数据包中,所述定长包头至少包含有:幻数(magicnumber)、版本号、总长度、命令号及序列号信息;所述变长包体包括至少一个字段,每一字段均包括有标签、字段长度及字段内容;所述标签包括有字段编号以及本字段的编码类型;所述字段内容包含所述二进制文件内容;所述校验和为定长包头和变长包体的累加和。
15.优选地,所述智能设备为智能家居设备、智能穿戴设备、智能医疗设备或智能锁。
16.实施本发明实施例,具有如下的有益效果:
17.本发明公开了一种用于物联网智能设备的数据压缩传输方法。通过在不同的物联网设备之间传输的数据采用protobuf进行数据编解码,其获得的序列化后的数据的数据量非常小;同时,相比传统的二进制数据流,又可以对数据进行灵活赋值,而没有位数的限制,且无需移位等操作;
18.另外,利用profobuf工具进行编解码获得的数据,本身具备不具有可读性的弱加密特点。故本发明实施所采用的数据压编传输方法,尤其适用于体积小且性能有限,以及要求低功耗的物联网智能设备,可以减少数据传输量,降低智能设备的功耗,提高数据的安全性。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本发明的范畴。
20.图1为本发明提供的一种用于物联网智能设备的数据压缩传输方法的一个实施例的主流程示意图;
21.图2为图1中涉及的数据包中变长包体中数据结构示意图;
22.图3为图2中标签的结构示意图。
具体实施方式
23.为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
24.如图1所示,示出了本发明提供的一种用于物联网智能设备的数据压缩传输方法的一个实施例的主流程示意图;一并结合图2和图3所示,在本实施例中,所述方法包括如下步骤:
25.为解决上述技术问题,作为本发明的一方面,提供一种用于物联网智能设备的数据压缩传输方法,其包括如下步骤:
26.步骤s10,物联网的本端智能节点(如主站)向对端智能节点(如智能设备)发送数据时,根据需要传输数据生成proto格式的文件;
27.例如在一个例子中,该需要传输数据包括“int32 val=1”的内容,则proto格式的文件内容如下:
[0028][0029]
步骤s11,物联网的本端智能节点获得所述proto格式文件对应的c语言或java语言格式的编译文件;
[0030]
在一个具体的例子中,所述步骤s11进一步包括:
[0031]
在本地编译文件库中查询是否存在当前proto格式的文件相应的c语言或java语言格式的编译文件,如果存在则调用所述编译文件;否则采用protobuf工具库进行编译,形成的c语言或java语言格式的编译文件;
[0032]
可以理解的是,可以将常用的传输数据的proto格式的文件预先进行编译并存储于本地编译文件库中,在需要是只需调用即可,可以进一步提高运行效率。
[0033]
步骤s12,采用protobuf工具将所述的编译文件进行序列化处理,采用varints编码形成二进制的文件,并封装为包含有定长包头和变长包体的数据包,其中,所述变长包体中包括有所述二进制文件,在所述数据包中包含有所有数据的校验和;
[0034]
可以理解的是,本发明中的数据包为由protobuf工具封装而成;具体地,在智能节点之间传输的数据流,其中包含的数据包由定长包头和变长包体组成,其中数据包的格式如下所示:
[0035]
定长包头包含有幻数(bmagicnumber)、版本号(bver)、总长度(nlength)、命令号(ncmdid)以及序列号(nseq)等内容;
[0036]
而变长包体为由protalbuf打包的二进制数据。
[0037]
其中,数据包中各参数含义如下表1所示:
[0038]
表1数据包中参数含义表
[0039]
[0040][0041]
而变长包体中数据格式如图2所示,具体地,其中由protobuf编码的数据包括多个字段,每个字段可划分为标签(tag)、长度以及字段内容(value)。
[0042]
而标签的结构如图3所示,其中,标签包括字段编号和编码类型两个部分。编码类型由3个比特位构成,目前protobuf已经定义了6种编码类型,其中,包含varint编码类型。
[0043]
下述以varint编码类型为例来介绍一下,如何对编译文件进行序列化处理形成二进制的文件的过程。
[0044]
在标签中采用varints编码,varints编码的规则主要为以下三点:
[0045]
1、在每个字节开头的位设置了msb(most significant bit)位,标识是否需要继续读取下一个字节;
[0046]
2、存储数字对应的二进制补码;
[0047]
3、补码的低位排在前面;
[0048]
以一个简单的例子进行说明如下:
[0049]
int32 val=1;//设置一个int32的字段的值val=1;
[0050]
这时编码的结果如下:
[0051]
原码:0000...0000 0001//1的原码表示
[0052]
补码:0000...0000 0001//1的补码表示
[0053]
varints编码:0#000 0001(0x01)//1的varints编码,其中第一个字节的msb=0。
[0054]
具体的编码过程为:
[0055]
数字1对应补码0000...0000 0001(规则2),从末端开始取每7位一组并且反转排序(规则3),因为0000...0000 0001除了第一个取出的7位组(即原数列的后7位),剩下的均为0。所以只需取第一个7位组,无需再取下一个7位,那么第一个7位组的msb=0。最终得到0#000 0001(0x01)。
[0056]
然后对所述编码进行封装,即加上定长包头,不定长包体的其他内容,形成数据包。
[0057]
如下即示出了一个完整数据包的例子:
[0058]
ab(幻数)01(版本号)00 3b(总长度)2711(命令号)0001(序列号)(变长包体:0a 00 12 10 b4 3f 12 04 2a 02 e0 1c 2b dd 7d 02 90 62 13 a3 18 80 80 04 20 01 28 01 32 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 03 41 4d 33)(校验和)024f。
[0059]
步骤s13,物联网的本端智能节点将所述数据包发送给对端智能节点;
[0060]
步骤s14,对端智能节点接收所述数据包后,通过所述校验和对所述数据包进行校验,并采用protobuf工具对数据包中的二进制文件进行反序列化处理,获得其中的编译文件,以解析出对应的数据。
[0061]
具体地,对端智能节点接收到数据后,先校验数据累加和是否和数据中的verify值相同,如果相同则合法;然后获取数据的总长度(nlength)截取数据长度,通过命令号(ncmdid)找到反序列化的对象,使用protobuf工具将数据反序列化处理,获得其中的数据。
[0062]
下述仍以步骤s12中的例子来说明反序列化处理的过程:
[0063]
前述对“int32 val=1”编码结果为0#000 0001(0x01)。首先,每个字节的第一个位为msb位,msb=1表示需要再读一个字节(还未结束),msb=0表示无需再读字节(读取到此为止)。
[0064]
在上面的例子中,数字1的varints编码中msb=0,所以只需要读完第一个字节无需再读。去掉msb之后,剩下的000 0001就是补码的逆序,但是这里只有一个字节,所以无需反转,直接解释补码000 0001,还原即为数字1。
[0065]
注意:这里编码数字1,varints只使用了1个字节。而正常情况下int32将使用4个字节存储数字1,这里就达到了压缩编码的目的。
[0066]
故可以理解的是,varints的本质实际上是每个字节都牺牲一个bit位(msb),来表示是否已经结束(是否还需要读取下一个字节),msb实际上就起到了length的作用,正因为有了msb(length),所以我们可以摆脱原来那种无论数字大小都必须分配四个字节的窘境。通过varints我们可以让小的数字用更少的字节表示。从而提高了空间利用和效率。
[0067]
在一个具体的例子中,所述物联网的本端智能节点为服务主站与智能设备中一个,而对端智能节点为服务主站与智能设备中另一个。所述智能设备一般为低功耗的物联网小型智能设备,诸如为智能家居设备、智能穿戴设备、智能医疗设备或智能锁等。
[0068]
在一个具体的例子中,所述服务主站中存储有java语言格式的编译文件库;所述智能设备中存储有c语言格式的编译文件库。
[0069]
在一个具体的例子中,所述数据包中,所述定长包头至少包含有:幻数(magicnumber)、版本号、总长度、命令号及序列号信息;所述变长包体包括至少一个字段,每一字段均包括有标签、字段长度及字段内容;所述标签包括有字段编号以及本字段的编码类型;所述字段内容包含所述二进制文件内容;所述校验和为定长包头和变长包体的累加和。
[0070]
在另一个例子中,步骤s10中的proto文件可以如下:
[0071][0072][0073]
则在步骤s12中,所述proto文件的编译文件,通过google protobuf工具序列化为“0818120a77756a696e676368616f1a1677756a696e676368616f393240676d61696c2e636f6d”。
[0074]
在一个例子中,定义包头中参数如下:ncmdid为cmd_getperson=1,nlength=0x40,nseq=1,verify=0x14,则封装后的数据包各部分的内容为:
[0075]
ab(幻数)01(版本号)00 40(总长度)0001(命令号)0001(序列号)(变长包体:0818120a77756a696e676368616f1a1677756a696e676368616f393240676d61696c2e636f6d)、(校验和)0198。
[0076]
实施本发明实施例,具有如下的有益效果:
[0077]
本发明公开了一种用于物联网智能设备的数据压缩传输方法。通过在不同的物联网设备之间传输的数据采用protobuf进行数据编解码,其获得的序列化后的数据的数据量非常小;同时,相比传统的二进制数据流,又可以对数据进行灵活赋值,而没有位数的限制,且无需移位等操作;
[0078]
另外,利用profobuf工具进行编解码获得的数据,本身具备不具有可读性的弱加密特点。故本发明实施所采用的数据压编传输方法,尤其适用于体积小且性能有限,以及要求低功耗的物联网智能设备,可以减少数据传输量,降低智能设备的功耗,提高数据的安全性。
[0079]
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0080]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0081]
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1