掌桥专利:专业的专利平台
掌桥专利
首页

属性通讯编解码方法、编码装置、解码装置及系统

文献发布时间:2023-06-19 09:36:59


属性通讯编解码方法、编码装置、解码装置及系统

技术领域

本发明涉及编解码技术领域,尤其涉及一种属性通讯编解码方法、编码装置、解码装置、系统。

背景技术

目前,随着物联网的发展,各种系统(例如家用的智能家居系统,工业上各种工业设备的监测系统)通常会包含各种传感器或控制器(例如用于采集温度、电压、电流的传感器,用于控制开关的控制器)等,而这些传感器或控制器等通常抽象为一个个属性点,进而传感器或控制器产生的数据即为属性点值,传输这些属性点值需要进行通讯编码。

常用的属性点值(数据)通讯编码有:IT(L)V方式和CMD+V方式。(1)、IT(L)V方式:以属性的标识、类型、值的长度及值进行传输,其中,I:属性标识,T:属性类型,L:属性长度(当属性值为字符串才有其值),V:属性值。(2)、CMD+V方式:CMD值用于标识传输业务类型,V:与业务类型对应的所有属性值。前者支持多个属性,但ITL三个属性都是固定长度方式,这样需要更多通讯流量;后者虽然流量较少但固定了长度,不支持可变属性,不够灵活。

发明内容

本发明要解决的技术问题在于,针对现有技术的缺陷,提供一种属性通讯编解码方法、编码装置、解码装置、系统。

本发明解决其技术问题所采用的技术方案是:构造一种属性通讯编解码方法,其特征在于,编码过程包括:

S1:获取待传输的属性值;

S2:根据预设编码格式,对待传输的属性值进行编码得到编码后的数据;

其中,所述预设编码格式为:由若干字节依次排列构成一串编码序列;所述编码序列包括:位于所述编码序列最前端的属性值索引字节K、位于所述属性值索引字节K后面的属性值长度字节L、位于所述属性值长度字节L后面的的属性值字节V;所述属性值长度字节L用于表示属性值字节V的值长度;所述属性值字节V为根据所述待传输的属性值的属性类型采用不同的编码方式进行编码压缩得到。

优选地,所述属性类型包括:字符串、无符号整数、有符号整数、浮点型、二进制类型、双精度数值;

若所述待传输的属性值的属性类型为字符串,则采用字符编码得到所述属性值字节V;

若所述待传输的属性值的属性类型为无符号整数,则采用varint编码方式进行编码得到所述属性值字节V;

若所述待传输的属性值的属性类型为有符号整数,则先通过zigzag编码将所述待传输的属性值转换为无符号整数,再采用varint编码方式进行编码得到所述属性值字节V;

若所述待传输的属性值的属性类型为浮点型,则采用gorilla paper encoding算法进行编码得到所述属性值字节V;

若所述待传输的属性值的属性类型为二进制类型,则将二进制的属性值本身作为所述属性值字节V;

若所述待传输的属性值的属性类型为双精度数值,则使用64位二进制进行编码得到所述属性值字节V。

优选地,所述属性值长度字节L的类型为无符号整数,采用varint编码方式进行编码。

优选地,所述属性值索引字节K的类型为无符号整数,采用varint编码方式进行编码。

优选地,所述属性值索引字节K包括:用于表示所述属性类型的第一部分和用于表示属性索引值的第二部分,所述第一部分位于所述编码序列最前端,所述第二部分位于所述第一部分的后面,其中所述第二部分的类型为无符号整数,采用varint编码方式进行编码。

可选的,解码过程包括:

A1:获取待解码的所述编码后的数据;

A2:读取所述属性值索引字节K获取属性索引值;

A3:读取所述属性值长度字节L获取属性值字节V的长度,根据所述属性值字节V的长度提取出属性值字节V;

A4:根据所述属性索引值对应的属性值类型和编码方式对所述属性值字节V进行解码。

可选的,解码过程包括:

B1:获取待解码的所述编码后的数据;

B2:先读取所述属性索引字节K的第一部分获取属性类型,再读取所述属性索引字节的第二部分获取属性索引值;

B3:读取所述属性值长度字节L获取属性值字节V的长度,根据所述属性值字节V的长度提取出属性值字节V;

B4:根据获取的属性类型对应的编码方式和获取的属性索引值对所述属性值字节V进行解码。

本发明还提供一种属性通讯编码装置,包括存储模块和处理模块及存储在存储模块上并可在处理模块上运行的计算机程序,所述处理模块执行所述计算机程序时实现如上述所述的编码过程。

本发明还提供一种属性通讯解码装置,包括存储模块和处理模块及存储在存储模块上并可在处理模块上运行的计算机程序,所述处理模块执行所述计算机程序时实现上述所述的解码过程。

本发明还提供一种属性通讯系统,包括:终端和平台,其中,

所述终端包括:如上述所述的属性通讯编码装置以及用于传输编码后的数据的传输装置;

所述平台包括:用于接收所述编码后的数据的接收装置以及如上述所述的属性通讯解码装置。

实施本发明的技术方案,具有以下有益效果:本发明首先定义一种用于属性值编码的预设编码格式,该预设编码格式包括属性值索引字节K、属性值长度字节L、属性值字节V。通过该KLV形式的预设编码格式可以支持不同属性值的传输。然后,根据待传输的属性值的属性类型引入不同的编码方式对属性值进行编码压缩得到属性值字节V,从而使属性值的传输长度可变,使用灵活,节省通讯流量。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明实施例提供的属性通讯编解码方法中编码过程的流程图;

图2是本发明中预设编码格式的一种结构示意图;

图3是本发明中预设编码格式的另一种结构示意图;

图4是本发明实施例提供的属性通讯编解码方法中一种解码过程的流程图;

图5是本发明实施例提供的属性通讯编解码方法中另一种解码过程的流程图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

实施例1

如图1所示,图1是本发明实施例提供的属性通讯编解码方法中编码过程的流程图。该方法的编码过程包括:

S1:获取待传输的属性值。

结合背景技术可以清楚,属性值可以为系统中诸如:温度传感器、电压传感器、电流传感器、控制开关的控制器、计时器等器件产生的温度、电压、电流、开关量、时间等数据。

S2:根据预设编码格式,对待传输的属性值进行编码得到编码后的数据;

其中,参考图2,预设编码格式为:由若干字节依次排列构成一串编码序列;编码序列包括:位于编码序列最前端的属性值索引字节K(Key)、位于属性值索引字节K后面的属性值长度字节L(Length)、位于属性值长度字节L后面的属性值字节V(Value);属性值长度字节L用于表示属性值字节V的值长度;属性值字节V为根据待传输的属性值的属性类型采用不同的编码方式进行编码压缩得到。

具体的,属性值索引字节K,用于标识此段编码序列的属性值的名称、类型等,属性值索引字节K的内容(即属性值的索引值)为预定义的。属性值长度字节L携带有属性值字节V的值长度信息。属性值字节V携带有待传输的属性值信息,其为根据待传输的属性值的属性类型采用不同的编码方式进行编码压缩得到。

在一些可选实施例中,待传输的属性值的属性类型包括但不限于:字符串、无符号整数、有符号整数、浮点型、二进制类型、双精度数值。

下面列举一些实际应用中可能的例子以示说明,如下表1所示:

表1

进一步地,属性值字节V为根据待传输的属性值的属性类型采用不同的编码方式进行编码压缩得到,具体如下:

若待传输的属性值的属性类型为字符串,则采用字符编码得到属性值字节V;

若待传输的属性值的属性类型为无符号整数,则采用varint编码方式进行编码得到属性值字节V;

若待传输的属性值的属性类型为有符号整数,则先通过zigzag编码将待传输的属性值转换为无符号整数,再采用varint编码方式进行编码得到属性值字节V;

若待传输的属性值的属性类型为浮点型,则采用gorilla paper encoding算法进行编码得到属性值字节V;

若待传输的属性值的属性类型为二进制类型,则将二进制的属性值本身作为属性值字节V;

若待传输的属性值的属性类型为双精度数值,则使用64位二进制进行编码得到属性值字节V。

在一些可选实施例中,属性值长度字节L的类型为无符号整数,采用varint编码方式进行编码。

下面,为便于理解,结合表1的内容举例说明上述根据属性类型采用不同的编码方式进行编码的方式,如表2所示:

表2

在一些可选实施例中,属性值长度字节L的类型为无符号整数,采用varint编码方式进行编码。属性值索引字节K的类型为无符号整数,采用varint编码方式进行编码。

可以理解的,由于属性值索引字节K的内容(即属性值的索引值),以及属性值长度字节L(即属性值字节V的值长度)均为无符号整数(例如表2中1个字节、2个字节等),也即属性值长度字节L和属性值索引字节K的类型为无符号整数,因此也可以使用varint编码方式进行编码压缩,进一步缩减编码后的数据的大小,以减少通讯流量。

下面,为便于理解,结合表2中的内容举例说明使用varint编码方式对属性值长度字节L进行压缩的方式,如表3所示:

表3

进一步的,结合表1中的属性索引值举例说明使用varint编码方式对属性值索引字节K进行压缩的方式,如表4所示:

表4

这里需要说明的是,上述出现的编码方式的具体编码原理请参考现有的资料,这里仅给出一些实际中可能的例子的编码结果以示说明,而具体的编码过程这里不再赘述。

对应的,本实施例提供的属性通讯编解码方法中解码过程包括:

A1:获取待解码的所述编码后的数据;

A2:读取属性值索引字节K获取属性索引值;

A3:读取属性值长度字节L获取属性值字节V的长度,根据属性值字节V的长度提取出属性值字节V;

可以理解的,若属性值索引字节K和属性值长度字节L采用了varint编码方式进行编码压缩,那么在读取过程中需要根据varint编码原理进行解码操作。

A4:根据属性索引值对应的属性值类型和编码方式对属性值字节V进行解码。

可以理解的,在一些可能的实施例中,执行解码过程的平台存储有例如表1的关系表,读取出的属性索引值后就可以根据表1获取对应的属性值的类型、编码方式、名称等,进而对属性值字节V进行解码得到属性值。

需要说明的是,同时传输多个属性值时,将每个属性值按上述编码方法进行编码得到对应的编码序列单元(即一个KLV包),再将多个编码序列单元按一定的规则首尾相接排列。经过本发明编码方法进行编码后得到编码序列单元为紧凑的二进制序列,且由于属性值长度字节L的存在,不需要像现有的编码方式一样在两个编码序列单元之间加入分隔符(如#)以作区分,因此编码序列单元之间也是紧凑的二进制形式。另外,如果无法读取某个编码序列单元中的属性值索引字节K,那么可以根据该编码序列单元的属性值长度字节L忽略相应长度的属性值字节V,继续处理下一个编码序列单元,避免其中一个数据出现错误导致整个数据均无法解码。

实施例2

参考图3,在实施例1的基础上,本实施例的不同之处在于:

本实施例中,属性值索引字节K包括:用于表示属性类型的第一部分和用于属性索引值的第二部分,第一部分位于编码序列最前端,第二部分位于第一部分的后面,其中第二部分的类型为无符号整数,采用varint编码方式进行编码。

优选地,第一部分由3个bit(位,又称比特)构成,3个比特的二进制数的数值范围足以定义常见的属性类型。

下面举例以示说明,如表5所示:

表5

可以理解的,通过属性值索引字节K的第一部分来定义属性类型,可以不依赖接收编码后的数据的平台的存储功能,在后续解码过程中,平台可以进行快速解码。

对应的,本实施例提供的属性通讯编解码方法中解码过程包括:

B1:获取待解码的编码后的数据;

B2:先读取属性索引字节K的第一部分获取属性类型,再读取属性索引字节的第二部分获取属性索引值;

B3:读取属性值长度字节L获取属性值字节V的长度,根据属性值字节V的长度提取出属性值字节V;

B4:根据获取的属性类型对应的编码方式和获取的属性索引值对所述属性值字节V进行解码。

可以理解的,获取属性类型后可以直接根据相应的编码方式对属性值字节V进行解码,再根据属性索引值获取属性值对应的名称等信息,即可解析出属性值。

本发明还提供一种属性通讯编码装置,包括存储模块和处理模块及存储在存储模块上并可在处理模块上运行的计算机程序,处理模块执行计算机程序时实现本发明属性通讯编解码方法的编码过程。

相应的,本发明还提供一种属性通讯解码装置,包括存储模块和处理模块及存储在存储模块上并可在处理模块上运行的计算机程序,处理模块执行所述计算机程序时实现实现本发明属性通讯编解码方法的解码过程。

可以理解,存储模块包括:随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。

进一步的,本发明还提供一种属性通讯系统,包括:终端和平台,其中,

终端包括:本发明提供的属性通讯编码装置以及用于传输编码后的数据的传输装置;

平台包括:用于接收所述编码后的数据的接收装置以及本发明提供的属性通讯解码装置。

可以理解,终端包括但不限于数据采集器、PC机、手机、平板电脑等,平台包括但不限于后台PC机、后台服务器、云服务器等。而终端与平台之间的通讯方式可以是有线或无线通讯,通过本发明的属性通讯编解码方法,终端在传输属性值的过程中相应的可以节省带宽或流量。

本发明的方案,支持不同属性值的传输,并且根据待传输的属性值的属性类型引入不同的编码方式对属性值进行编码压缩,使属性值的传输长度可变,使用灵活,节省通讯流量。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置或系统而言,其应用本发明实施例公开的方法,所以描述的比较简单,相关之处参见方法部分说明即可。

本发明是通过具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换和等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。

技术分类

06120112237442