一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据包、数据包生成方法及数据包生成系统

2022-05-27 00:01:20 来源:中国专利 TAG:


1.本发明涉及数据包技术领域,特别是涉及一种数据包、数据包生成方法及数据包生成系统。


背景技术:

2.在现阶段物联网通信中,一些最常见的通信数据包的数据顺序以及内容位置都是固定的,并且不支持多功能选择,也就是说如果要传输某一种数据必须要按特定的格式进行传输,通用性较差,这也导致数据包的灵活性较差、效率低;在一些长数据的传输过程中,有些数据占用过多空闲的字节,但是常见的通信包并没有充分考虑这点,这就导致数据包过长、传输时间长等问题;当传输的数据包有一段或者多段数据与上一次传输的数据重复时,在现有的常见通信包很难找到应对这种情况的响应机制,当多次传输的数据相同时,还需要重复传输很长的一段数据包,从而使得数据传输的效率低。


技术实现要素:

3.本发明的目的是提供一种数据包、数据包生成方法及数据包生成系统,可以大大减少数据包的长度,提高灵活性的同时还能提高通信效率。
4.为实现上述目的,本发明提供了如下方案:
5.一种数据包,包括:由左向右依次排列的前导字节域、time域、id域、position域和state域;所述前导字节域用于表示当前时刻待传输的数据包是否与上一时刻待传输的数据包相同,所述time域用于表示数据包的传输时间,所述id域用于表示数据包的目的地址,所述position域用于表示数据包的位置,所述state域用于表示数据包的传输数据格式。
6.可选的,所述位置包括绝对位置信号和相对位置信号。
7.可选的,所述传输数据格式包括json格式和csv格式。
8.可选的,所述前导字节域包括:占用内存为4bit的忽略校验位,所述忽略校验位包括占用内存均为1bit的第一校验码、第二校验码、第三校验码和第四校验码,所述第一校验码用来表示当前时刻待传输的数据包中的所述time域是否与上一时刻待传输的数据包中的所述time域相同;所述第二校验码用来表示当前时刻待传输的数据包中的所述id域是否与上一时刻待传输的数据包中的所述id域相同;所述第三校验码用来表示当前时刻待传输的数据包中的所述position域是否与上一时刻待传输的数据包中的所述position域相同;所述第四校验码用来表示当前时刻待传输的数据包中的所述state域是否与上一时刻待传输的数据包中的所述state域相同。
9.可选的,所述time域由左向右依次为月、年、日、时、分、秒和微秒。
10.可选的,所述前导字节域还包括:排列在所述忽略校验位右侧的用户自定义位,所述用户自定义位用于填写设备号或者数据包序号。
11.一种数据包生成方法,包括:
12.获取当前时刻待传输的数据集合;所述数据集合包括传输时间、目的地址、传输数
据类型和传输数据格式;
13.对于所述当前时刻待传输的数据集合中任意一个元素,判断所述元素与目标元素是否相同,得到第一判断结果;所述目标元素为上一时刻待传输的数据集合中与所述元素对应的元素;
14.若所述第一判断结果为是;则将所述元素从所述当前时刻待传输的数据集合中去除得到数据包;
15.若所述第一判断结果为否,则将所述当前时刻待传输的数据集合确定为数据包。
16.一种数据包生成系统,包括:
17.获取模块,用于获取当前时刻待传输的数据集合;所述数据集合包括传输时间、目的地址、传输数据类型和传输数据格式;
18.判断模块,用于对于所述当前时刻待传输的数据集合中任意一个元素,判断所述元素与目标元素是否相同,得到第一判断结果;所述目标元素为上一时刻待传输的数据集合中与所述元素对应的元素;
19.第一数据包确定模块,用于若所述第一判断结果为是;则将所述元素从所述当前时刻待传输的数据集合中去除得到数据包;
20.第二数据包确定模块,用于若所述第一判断结果为否,则将所述当前时刻待传输的数据集合确定为数据包。
21.根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明数据包,包括:由左向右依次排列的前导字节域、time域、id域、position域和state域;所述前导字节域用于表示当前时刻待传输的数据包是否与上一时刻待传输的数据包相同,所述time域用于表示数据包的传输时间,所述id域用于表示数据包的目的地址,所述position域用于表示数据包的位置,所述state域用于表示数据包的传输数据格式,当传输数据有重复时可以进行省略,可以大大减少数据包的长度,提高灵活性的同时还能提高通信效率。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1为本发明实施例提供的tips数据包格式的结构示意图;
24.图2为本发明实施例提供的前导字节域的结构示意图;
25.图3为本发明实施例提供的time域的结构示意图;
26.图4为本发明实施例提供的id域的结构示意图;
27.图5为本发明实施例提供的当传输信号为绝对位置信号时position域的结构示意图;
28.图6为本发明实施例提供的当传输信号为相对位置信号时position域的结构示意图;
29.图7为本发明实施例提供的state域的结构示意图;
30.图8为本发明实施例提供的数据包的发送过程示意图;
31.图9为本发明实施例提供的数据包的接收过程示意图;
32.图10为本发明实施例提供的更具体的tips数据包的关系结构图;
33.图11为本发明实施例提供的tips数据包的结构树状图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
36.物联网是信息时代的重要支撑技术,本实施例提出一种物联网通信协议的数据包格式,命名为tips,其中t代表time域,i代表id域,p代表position域,s代表state域,面向物联网设备采集的共性需求,提出将时间、id、位置、状态四个关键属性作为通用物联网设备的传输内容,定义了针对上述传输内容的数据包格式,包含上述四个域,并规定了每个域的具体格式和标准,具体如下:如图1、图10和图11所示,数据包包括:由左向右依次排列的前导字节域、time域、id域、position域和state域;所述前导字节域用于表示当前时刻待传输的数据包是否与上一时刻待传输的数据包相同,所述time域用于表示数据包的传输时间,所述id域用于表示数据包的目的地址,所述position域用于表示数据包的位置,所述state域用于表示数据包的传输数据格式。
37.在实际应用中,如图2所示,所述前导字节域包括:占用内存为4bit的忽略校验位,所述忽略校验位包括占用内存均为1bit的第一校验码、第二校验码、第三校验码和第四校验码,所述第一校验码用来表示当前时刻待传输的数据包中的所述time域是否与上一时刻待传输的数据包中的所述time域相同;所述第二校验码用来表示当前时刻待传输的数据包中的所述id域是否与上一时刻待传输的数据包中的所述id域相同;所述第三校验码用来表示当前时刻待传输的数据包中的所述position域是否与上一时刻待传输的数据包中的所述position域相同;所述第四校验码用来表示当前时刻待传输的数据包中的所述state域是否与上一时刻待传输的数据包中的所述state域相同,0代表不省略,也就是说按照原形式原封不动的再次传输一遍,1代表省略,表示这次传输的数据与上次一样,本次不再进行重复传输,当接收到数据的时候,需要对前导字节进行解析,判断出哪部分域省略了而哪部分没有省略。
38.在实际应用中,所述前导字节域还包括:排列在所述忽略校验位右侧的用户自定义位(4bit),所述用户自定义位用于填写设备号或者数据包序号,前导字节域为1bytes。
39.在实际应用中,如图3所示,所述time域由左向右依次为月年日、时分秒和微秒,总共占据7个字节,包括日期(18bits)和时间(38bits),其中日期采用月年日的顺序来节省字节空间,时间可以精确到微秒,例如:解析过后得到数据092127,表示2021年09月27日;时间顺序为时分秒微秒,其中时分秒占18bits,微秒单独占20bits,例如:时分秒单元解析过后得到数据082454,表示08时24分54秒,微秒单元解析过后得到数据1024,表示1024微秒。
40.在实际应用中,如图4所示,id域包含包头和数据两个部分,其中包头是数据长度
选择位,占据2bits,用来选择id数据的长度。id数据采用自定义64进制编码的形式传输,支持数字和大小写字母,id数据的位数是可变的,可以通过数据长度选择位来进行选择,支持5位、9位、13位以及17位四种长度可调节。id域所占字节大小可调,根据所选位数不同而不同。64进制字符包含数字0-9,小写英文字母“a-z”,大写英文字母“a-z”及“ ”、
“‑”
,共64个有效字符,每个64进制字符占用6bits,相比传统的ascii码可缩短数据长度25%,有效降低通信负荷。其具体定义为和编码见表1。
41.id数据部分的长度有5位、9位、13位和17位四种选择,分别对应数据长度选择位的00、01、10、11,详细请查看表2数据长度选择表,对应的id域长度为4bytes,7bytes,10bytes,13bytes。
42.表1 64进制编码对照表
[0043][0044][0045]
表2 id数据长度选择表
[0046]
id数据长度选择位id数据长度
005位019位1013位1117位
[0047]
在实际应用中,position域包含功能选择位和数据位两部分,position域支持绝对位置(gpnss信号)和相对位置(固定原点相对坐标信号)两种数据的传输,占据10/80bytes,可以通过position功能选择位进行选择,功能选择位占据1bytes,position功能选择具体信息请看表3:
[0048]
表3 position功能选择表
[0049]
position功能选择位传输数据类型传输格式00gnss信号gnss通用数据格式01相对位置信号三维坐标值
[0050]
当传输的是gnss信号时,数据包的具体格式如图5所示,采用以gnss通用信号的格式进行传输,数据信号总共占据79bytes,包括gprmc信息数据、定位是否有效字节、pps信号锁定标志,所有信号均由ascii码的方式进行传输。其中gprmc信号数据为通用gnss格式,按通用方式进行解析即可获得经度纬度等信息。其中的具体说明请看表4:
[0051]
表4 gnss数据包数据定义
[0052][0053]
当传输相对坐标信号时,数据包的具体格式如图6所示,当传输的是相对位置的坐标信号时,只需传输x、y、z三轴坐标值,其中每个轴数据又分为整数部分和小数部分,整数部分占2bytes、小数部分占1bytes,每个轴数据占3bytes,所有的位置坐标数据总共占9bytes。相对位置坐标的数据定义如表5:
[0054]
表5 相对位置坐标数据定义
[0055][0056]
在实际应用中,如图7所示,state域总共分为三部分,分别是state功能选择位、数据长度位以及数据位。state功能选择位可以选择传输的数据类型,占据1bytes,支持选择的数据类型包括json格式和csv格式两种,其中,当为csv格式时需要先发送一条数据名称数据包,与之后传输的数据进行顺序对应;json传输键值对可直接解析调用,详细信息如表6所示,数据长度位表示将要传输数据的总长度,占据2bytes,数据位表示将要传输的数据。
[0057]
表6 state功能选择表
[0058]
state功能选择位传输数据格式00json格式01csv格式
[0059]
当传输的数据格式为json的时候,采用标准的json格式,例如{“humidity:51”,“temperature”:27.1},采用ascii码的形式进行传输,传输结束后可直接按json的通用解析方式进行解析。
[0060]
当传输的数据格式为csv的时候,需要先发送一个数据名称数据包,格式就是state数据包格式,传输的内容是接下来传输数据的数据名称,注意数据名称数据包只发送一次,而且必须是第一个进行传输,接下来传输的都是正常数据的数据包。传输完成后,按传输顺序进行一一对应,以逗号为间隔,将数据分别解析后进行对应处理。
[0061]
在实际应用中,数据包还包括:设置在state域后的1bytes的校验域用来验证整个数据包传输的数据是否有误,如果有误就要进行相对应的处理等等。
[0062]
本实施例还提供了一种上述数据包的生成方法,包括:
[0063]
获取当前时刻待传输的数据集合;所述数据集合包括传输时间、目的地址、传输数据类型和传输数据格式。
[0064]
对于所述当前时刻待传输的数据集合中任意一个元素,判断所述元素与目标元素是否相同,得到第一判断结果;所述目标元素为上一时刻待传输的数据集合中与所述元素对应的元素。
[0065]
若所述第一判断结果为是;则将所述元素从所述当前时刻待传输的数据集合中去除得到数据包。
[0066]
若所述第一判断结果为否,则将所述当前时刻待传输的数据集合确定为数据包。
[0067]
本实施例还提供了一种与上述方法对应的数据包生成系统,包括:
[0068]
获取模块,用于获取当前时刻待传输的数据集合;所述数据集合包括传输时间、目的地址、传输数据类型和传输数据格式。
[0069]
判断模块,用于对于所述当前时刻待传输的数据集合中任意一个元素,判断所述元素与目标元素是否相同,得到第一判断结果;所述目标元素为上一时刻待传输的数据集合中与所述元素对应的元素。
[0070]
第一数据包确定模块,用于若所述第一判断结果为是;则将所述元素从所述当前时刻待传输的数据集合中去除得到数据包。
[0071]
第二数据包确定模块,用于若所述第一判断结果为否,则将所述当前时刻待传输的数据集合确定为数据包。
[0072]
对上述数据包的发送与接收过程进行描述,如图8所示,数据包发送的过程具体包括:将收集到的time、id、position以及state都提供给tips中间件,tips中间件当中包含了数据处理模块、数据包生成模块、下层通信协议以及发送缓冲区。数据处理模块会基于上一次发送的数据包来判断本次需要传输的数据包中哪些域是可以省略的,比如如果本次要传输的id与上一次的没有区别,那么这一次可以不再重复传输,其他的同理。数据包生成模块将会按照本方法描述的数据包格式对数据进行打包处理,当数据包生成完成后将发送给下层通信协议,下层通信协议可以是mqtt、tcp/ip等等协议,当数据包发送出去的同时将会将数据包保存到发送缓冲区,发送缓冲区里包含了上一次发送的数据包,可以通过这个数据包与本次发送的数据包进行对比进而处理。
[0073]
数据包接收过程如图9所示,当通过下层通信协议接受到一个tips数据包的时候,首先要经过数据解析模块,在这里将会对前导字节以及各个域当中的数据进行解析,如果有省略的数据域,将会从接收缓冲区当中将上一次的数据读取出来,当数据解析完成后将会发送给数据重构模块,数据重构模块会将tips数据包当中的time、id、position以及state解析并发送出来,同时会将本次的数据包保存到接收缓冲区,方便下一次数据传输时使用。数据重构模块除了可以用于压缩和重构数据包以外,还可以对乱序和丢包进行管理,当发现有乱序的情况发生时,可以根据用户自定义序号的顺序对数据包进行重新排序,把它们调整到一个正确的位置上;如果发生了丢包现象,它会给发送端发送一个重传信号,将丢失的包重新进行一次传输,当所有信息都处理好了之后再进行输出。
[0074]
本发明的技术效果如下:
[0075]
1、为物联网设备的信息传输设计了统一格式,充分考虑了共性需求和设备差异,并通过引入64进制编码格式等机制,有效降低数据报文的长度,提升通信效率,id域采用了64进制的编码方式,当发送同样的字符时,可以更加高效的使用字节长度,例如当发送apple字符串时,用传统的ascii码的方式将占用40bits,而是用了64进制编码仅占用了30bits,节约了25%的数据长度。
[0076]
2、引进了处理重复数据段进行多次传输的响应机制,能够对数据包长度进行优化处理,当传输的数据相同时,可以使用1bit来代替重复的内容,比如当每次传输的id都相同的时候,那么便可以将这部分省略掉;再比如在某些情况下time也可以省略掉,当知道采样周期的时候,可以根据上一步的时间自动计算出下一步的时间;当传感器数据没有发生变化的时候重复传输相同的数据是非常没有必要的,不仅传输速度慢而且浪费资源,充分考虑了传感器的差异性,它能够兼容室内定位,室外定位的多种模块,支持不同类型的传感器
模块,支持多种id位数选择。
[0077]
3、引入了自定义设备号位和序号位,其中设备号是指当省略了重复数据传输的时候,如果没有指明这个数据包是哪一个设备的容易产生乱序等问题,所以当填写了设备号以后能够有效的避免乱序;当不需要确定是哪一个设备的时候,也可以添加一个序号作为区分,另外数据包发送的序号是有一定顺序的,可以通过接收的序号顺序来判断是否产生丢包,从而可以保证数据传输的可靠性。
[0078]
4、本发明可以大大减少数据包的长度,提高灵活性的同时还能提高通信效率。
[0079]
5、采用了统一的数据包格式,更方便的实现异构传感器的融合。
[0080]
6、该发明采用了特定的传输格式,每个域对应多少字节,分别代表着哪些意义都有明确规定,结构清晰,所以对于数据解析具有效率高、解析容易等优点,使传输的数据不容易产生混乱,每一帧数据都对应相应的时间以及定位信息,更加具有实时性,不同的域均支持多种功能的选择,可用于多个场景,id域数据位可变,根据需要可以选择不同的位数,使用起来更加方便,同时也能够节约传输的字节空间;position域既可以传输gnss信号,也可以传输相对位置坐标信号,根据使用场景的不同可以自定义传输信号;state域传输数据可以是json或者是csv的数据格式,根据需求不同可采用不同的格式,且数据格式标准,可直接导入数据库或进行其他操作,更加高效安全。
[0081]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0082]
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献