欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种多协议数据集成的方法、系统、电子设备及存储介质独创技术45498字

一种多协议数据集成的方法、系统、电子设备及存储介质

2021-02-02 19:45:17

一种多协议数据集成的方法、系统、电子设备及存储介质

  技术领域

  本发明涉及通信技术领域,尤其涉及一种多协议数据集成的方法、系统、电子设备及存储介质。

  背景技术

  随着物联网技术的深入,万物互联逐步走入日常的生活中,智能穿戴、智能家居、智能办公设备逐步普及,大量的智能设备被广泛的应用在各个领域,因此需要智能设备从端到端、端到云等的集成与通信。

  但由于不同设备的设计、工艺、发展历史等原因,不同设备可能采用不同的协议进行数据交互,想要集成数量庞大的不同设备逐渐变得困难起来,严重阻碍了设备之间的互联互通。

  发明内容

  本发明提供的一种多协议数据集成的方法、系统、电子设备及存储介质,解决了上述问题。

  为了解决上述技术问题,本发明实施例提供了一种多协议数据集成的方法,所述方法应用于网关设备,所述网关设备配置有网络协议栈,所述网络协议栈包括:硬件层、网络层、应用层;所述方法包括:

  所述硬件层接收并解析多个设备发送的数据,每一个设备发送的数据所使用的协议不同于其他设备发送的数据所使用的协议;

  所述硬件层按照固定时间周期轮流对每一种协议数据进行时分切片,产生每一种协议数据各自对应的数据片段,并对所述各自对应的数据片段打包;

  所述硬件层对所述多个设备中每个设备发送的数据经时分切片后得到的所有数据片段打包,得到对应的数据包并发送给所述网络层,每个数据包携带有标志位,所述标志位表征每一种协议数据的协议类型和每一种协议数据各自对应的数据片段的数据长度;

  所述网络层按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失;

  在没有数据丢失的情况下,所述网络层向所述应用层发送经过信息校验的数据包;

  所述应用层接收并解析所述经过信息校验的数据包;

  所述应用层按照数据包携带的协议类型将同一种协议类型的数据进行聚合,得到同一种协议类型的所有数据,以提供给软件使用。

  可选地,所述硬件层按照固定时间周期轮流对每一种协议数据进行时分切片,产生每一种协议数据各自对应的数据片段,并对所述各自对应的数据片段打包,包括:

  所述硬件层在第一个固定时间周期内,对第一种协议数据按照第一切片频率进行切片,产生所述第一种协议数据对应的第一数量个数据片段,并对所述第一数量个数据片段分别打包,形成第一数量个数据包,所述第一数量为所述第一个固定时间周期与所述第一切片频率的比值;

  所述硬件层在第二个固定时间周期内,对第二种协议数据按照第二切片频率进行切片,产生所述第二种协议数据对应的第二数量个数据片段,并对所述第二数量个数据片段分别打包,形成第二数量个数据包,所述第二数量为所述第二个固定时间周期与所述第二切片频率的比值;

  其中,所述第一切片频率的大小根据所述第一种协议数据的协议类型确定;

  所述第二切片频率的大小根据所述第二种协议数据的协议类型确定;

  所述协议类型不同,各自对应的切片频率的大小不同,形成数据包的数量不同。

  可选地,所述硬件层解析多个设备发送的数据,包括:

  所述硬件层通过所述多个设备中每一个设备对应的设备SDK解析每一个设备发送的数据。

  可选地,所述网络层按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失,包括:

  若所述第一种协议数据对应的数据片段的数据长度小于所述第二种协议数据对应的数据片段的数据长度,所述网络层逐一判断所述第一数量个数据包中每一个数据包携带的数据长度是否等于第一预设长度,以确定所述第一种协议数据是否有数据丢失;

  若所述第一数量个数据包中每一个数据包携带的数据长度等于所述第一预设长度,所述网络层确定所述第一种协议数据没有数据丢失;

  若所述第一数量个数据包中任一一个数据包携带的数据长度不等于所述第一预设长度,所述网络层确定所述第一种协议数据有数据丢失;

  在确定所述第一种协议数据没有数据丢失后,所述网络层逐一判断所述第二数量个数据包中每一个数据包携带的数据长度是否等于第二预设长度,以确定所述第二种协议数据是否有数据丢失;

  其中,所述第一预设长度的大小根据所述第一种协议数据的协议类型确定;

  所述第二预设长度的大小根据所述第二种协议数据的协议类型确定;

  所述协议类型不同,各自对应的数据包携带的数据长度的大小不同。

  可选地,在没有数据丢失的情况下,所述网络层向所述应用层发送经过信息校验的数据包,包括:

  所述网络层逐一确定所述第一数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给所述应用层,直至所述第一数量个数据包中所有数据包发送给所述应用层;

  所述网络层逐一确定所述第二数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给所述应用层,直至所述第二数量个数据包中所有数据包发送给所述应用层。

  可选地,若所述第一数量个数据包中任一一个数据包携带的数据长度不等于所述第一预设长度,所述网络层确定所述第一种协议数据有数据丢失,还包括:

  所述网络层向所述硬件层发送错误标志,所述错误标志表征所述第一种协议数据对应的数据包中丢失数据包的标识;

  所述硬件层接收所述错误标志,重新将所述标识对应的数据包发送至所述网络层。

  本发明实施例还提供了一种多协议数据集成的系统,所述系统包括:网关设备和多个外接设备,所述网关设备配置有网络协议栈,所述网络协议栈包括:硬件层、网络层、应用层;所述网络协议栈用于执行以下方法:

  所述硬件层接收并解析多个外接设备发送的数据,每一个外接设备发送的数据所使用的协议不同于其他外接设备发送的数据所使用的协议;

  所述硬件层按照固定时间周期轮流对每一种协议数据进行时分切片,产生每一种协议数据各自对应的数据片段,并对所述各自对应的数据片段打包;

  所述硬件层对所述多个外接设备中每个外接设备发送的数据经时分切片后得到的所有数据片段打包,得到对应的数据包并发送给所述网络层,每个数据包携带有标志位,所述标志位表征每一种协议数据的协议类型和每一种协议数据各自对应的数据片段的数据长度;

  所述网络层按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失;

  在没有数据丢失的情况下,所述网络层向所述应用层发送经过信息校验的数据包;

  所述应用层接收并解析所述经过信息校验的数据包;

  所述应用层按照数据包携带的协议类型将同一种协议类型的数据进行聚合,得到同一种协议类型的所有数据,以提供给软件使用。

  可选地,所述硬件层按照固定时间周期轮流对每一种协议数据进行时分切片,产生每一种协议数据各自对应的数据片段,并对所述各自对应的数据片段打包的具体方法包括:

  所述硬件层在第一个固定时间周期内,对第一种协议数据按照第一切片频率进行切片,产生所述第一种协议数据对应的第一数量个数据片段,并对所述第一数量个数据片段分别打包,形成第一数量个数据包,所述第一数量为所述第一个固定时间周期与所述第一切片频率的比值;

  所述硬件层在第二个固定时间周期内,对第二种协议数据按照第二切片频率进行切片,产生所述第二种协议数据对应的数据片段,并对所述第二数量个数据片段分别打包,形成第二数量个数据包,所述第二数量为所述第二个固定时间周期与所述第二切片频率的比值;

  其中,所述第一切片频率的大小根据所述第一种协议数据的协议类型确定;

  所述第二切片频率的大小根据所述第二种协议数据的协议类型确定;

  所述协议类型不同,各自对应的切片频率的大小不同,形成数据包的数量不同。

  可选地,所述硬件层解析多个设备发送的数据的方法具体包括:

  所述硬件层通过所述多个外接设备中每一个外接设备对应的设备SDK解析每一个外接设备发送的数据。

  可选地,所述网络层按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失的具体方法包括:

  若所述第一种协议数据对应的数据片段的数据长度小于所述第二种协议数据对应的数据片段的数据长度,所述网络层逐一判断所述第一数量个数据包中每一个数据包携带的数据长度是否等于第一预设长度,以确定所述第一种协议数据是否有数据丢失;

  若所述第一数量个数据包中每一个数据包携带的数据长度等于所述第一预设长度,所述网络层确定所述第一种协议数据没有数据丢失;

  若所述第一数量个数据包中任一一个数据包携带的数据长度不等于所述第一预设长度,所述网络层确定所述第一种协议数据有数据丢失;

  在确定所述第一种协议数据没有数据丢失后,所述网络层逐一判断所述第二数量个数据包中每一个数据包携带的数据长度是否等于第二预设长度,以确定所述第二种协议数据是否有数据丢失;

  其中,所述第一预设长度的大小根据所述第一种协议数据的协议类型确定;

  所述第二预设长度的大小根据所述第二种协议数据的协议类型确定;

  所述协议类型不同,各自对应的数据包携带的数据长度的大小不同。

  可选地,在没有数据丢失的情况下,所述网络层向所述应用层发送经过信息校验的数据包的具体方法包括:

  所述网络层逐一确定所述第一数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给所述应用层,直至所述第一数量个数据包中所有数据包发送给所述应用层;

  所述网络层逐一确定所述第二数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给所述应用层,直至所述第二数量个数据包中所有数据包发送给所述应用层。

  可选地,若所述第一数量个数据包中任一一个数据包携带的数据长度不等于所述第一预设长度,所述网络层确定所述第一种协议数据有数据丢失后的具体方法包括:

  所述网络层向所述硬件层发送错误标志,所述错误标志表征所述第一种协议数据对应的数据包中丢失数据包的标识;

  所述硬件层接收所述错误标志,重新将所述标识对应的数据包发送至所述网络层。

  本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明以上任一所述的方法中的步骤。

  本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明以上任一所述的方法中的步骤。

  采用本发明提供的多协议数据集成的方法,由硬件层接收并解析不同设备发送的不同协议数据,之后通过固定时间周期轮流对不同协议数据时分切片,并对得到的数据片段打包,传输给网络层,由网络层验证数据的完整性,形成一个快速可靠的数据传输途径,最后由应用层聚合同一协议类型的完整数据,提供给最上层软件使用。本发明实质上不需要对多种协议数据进行协议转换,使用了一个网络协议栈实现不同协议设备的控制,解决了当前物联网的设备采用的协议多样,在控制端集成适配困难的问题,将多种物联网的设备协议进行高效集成,降低设备接入、研发适配的难度。另外,由于网络层形成了一个快速可靠的数据传输途径,同时还缩短了不同设备之间通信延迟,一定程度上提高了通信速率。

  附图说明

  为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

  图1是本发明实施例一种多协议数据集成的方法的流程图;

  图2是本发明实施例一种多协议数据集成的系统的示意图。

  具体实施方式

  下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

  发明人发现目前由于同一生产厂家的智能化设备基本为同一型号产品,自然其使用的通信协议也一样,但不同生产厂家的智能化设备,可能通信协议就不同了。例如:一般的安防、门禁等系统多数采用BACent协议进行通信;可视对话设备、综合保护设备等多数采用Modbus协议进行通信;电动窗帘、温控器等设备多数采用ZigBee协议进行通信;检测仪、体脂秤等设备多数采用蓝牙协议进行通信。

  上述多种协议的设备均有各自的控制方式,假若需要将上述设备集成起来使用,目前采用的方法均比较复杂,其主要有两种方法:

  1)、硬件层面统一协议:硬件层面统一协议是一种高效的集成方式,但是面临着标准制定时间周期长,普及慢等的问题。

  2)、软件层面适配SDK:软件层面设计SDK相比于硬件层面统一协议要灵活很多,但是每接入一类协议就要开发一类SDK,另外不同SDK之间的调用和通信也增加了时间成本,因延迟较高导致用户体验较差。

  还有另一种方法,是目前使用较广的一种方法,就是将多种协议的数据进行协议转换,均转换为同一种标准协议,例如:以BACent协议为标准协议,将其余所有协议的数据全部转换为BACent协议的数据,之后由一个控制终端即可实现对多种协议类型的智能化设备的控制。

  但上述方法由于存在协议转换,要么需要单独增加一个用于协议转换的设备,要么需要控制终端实现协议转换,不可避免的造成成本较高,处理数据较慢的问题,并且数据丢失率比较高。

  针对上述问题,发明人经过深入研究,创造性的在网关设备中增加一个网络协议栈,不用转换协议、不用增加设备、不用在硬件层面统一协议、也不用在软件层面适配SDK,即可实现多协议设备的集成、控制。以下对本发明的方案进行具体解释和说明。

  图1示出了本发明实施例一种多协议数据集成的方法的流程图,该方法应用于网关设备,网关设备配置有网络协议栈,网络协议栈包括:硬件层、网络层、应用层;多协议数据集成方法包括如下步骤:

  步骤101:硬件层接收并解析多个设备发送的数据,每一个设备发送的数据所使用的协议不同于其他设备发送的数据所使用的协议。

  本发明实施例中,网关设备通过硬件层接收并解析多个设备发送的数据,由于每一个设备发送的数据所使用的协议不同于其他设备发送的数据所使用的协议,因此,在实际物理结构上,针对每一个设备,网关设备上都需要有一个对应的物理接口或者物理模块,来实现数据的传输;当然,假若网关设备自身可能没有足够的物理接口或者物理模块,那么可以复用物理接口或者物理模块。

  作为一个示例:假设多个设备使用的协议包括:BACent协议、Modbus协议、ZigBee协议、蓝牙协议、WiFi协议、RS485协议,其中,BACent协议、Modbus协议、RS485协议是通过物理接口与网关设备连接,ZigBee协议、蓝牙协议、WiFi协议是通过无线模块和蓝牙模块与网关设备连接。

  网关设备中网络协议栈的硬件层通过上述物理接口和模块接收多个设备的数据,之后再通过每个设备各自的设备SDK解析出每个设备各自的数据。

  步骤102:硬件层按照固定时间周期轮流对每一种协议数据进行时分切片,产生每一种协议数据各自对应的数据片段,并对各自对应的数据片段打包。

  本发明实施例中,在硬件层解析得到每个设备各自的数据后,需要按照一个固定时间周期,轮流对每一种协议数据进行时分切片,即,每一种类型的协议数据均采用同样的时间来进行时分切片,以产生每一种协议数据各自对应的数据片段,并对各自对应的数据片段打包。

  沿用上述示例:假若硬件层接收并解析得到BACent协议、Modbus协议、ZigBee协议、蓝牙协议、WiFi协议、RS485协议的数据后,按照1秒的时间周期对上述协议数据进行时分切片,即,第1秒对BACent协议的数据进行时分切片,产生BACent协议数据对应的数据片段,并对BACent协议数据对应的数据片段打包;第2秒对Modbus协议的数据进行时分切片,产生Modbus协议数据对应的数据片段,并对Modbus协议数据对应的数据片段打包;第3秒对ZigBee协议的数据进行时分切片,产生ZigBee协议数据对应的数据片段,并对ZigBee协议数据对应的数据片段打包;依次类推,直至第6秒对RS485协议的数据进行时分切片,产生RS485协议数据对应的数据片段,并对RS485协议数据对应的数据片段打包。当然,可以理解的是,假若硬件层只接收到Modbus协议数据和蓝牙协议数据,那么硬件层只需要对这两种协议数据进行解析和时分切片。

  具体的,硬件层进行时分切片的方法为:

  步骤S1:硬件层在第一个固定时间周期内,对第一种协议数据按照第一切片频率进行切片,产生第一种协议数据对应的第一数量个数据片段,并对第一数量个数据片段分别打包,形成第一数量个数据包,第一数量为第一个固定时间周期与第一切片频率的比值。

  步骤S2:硬件层在第二个固定时间周期内,对第二种协议数据按照第二切片频率进行切片,产生第二种协议数据对应的第二数量个数据片段,并对第二数量个数据片段分别打包,形成第二数量个数据包,第二数量为第二个固定时间周期与第二切片频率的比值。

  本发明实施例中,硬件层在一个固定时间周期内,只对一种协议数据进行时分切片,而针对每一种协议数据,其时分切片所采用的切片频率不同,即,数据的协议类型不同,各自对应的切片频率的大小不同,自然形成数据包的数量不同。

  沿用上述示例:硬件层第1秒对BACent协议的数据进行时分切片,假设BACent协议的切片频率为0.1,那么1秒产生BACent协议数据对应的10个数据片段,并对这10个数据片段分别打包,形成10个数据包;硬件层第2秒对Modbus协议的数据进行时分切片,假设BACent协议的切片频率为1,那么1秒产生Modbus协议数据对应的1个数据片段,并对这1个数据片段打包,形成1个数据包。一般情况下,固定时间周期可以满足至少产生一个数据片段。

  步骤103:硬件层对多个设备中每个设备发送的数据经时分切片后得到的所有数据片段打包,得到对应的数据包并发送给网络层,每个数据包携带有标志位,标志位表征每一种协议数据的协议类型和每一种协议数据各自对应的数据片段的数据长度。

  本发明实施例中,硬件层对每个设备发送的数据经时分切片后得到的所有数据片段打包,即,硬件层需要对同一种协议数据的所有数据均时分切片后,得到所有数据对应的数据片段均打包。可以理解为:硬件层是按照固定时间周期轮流对每一个协议数据进行时分切片,那么若某一协议数据的所有数据较大时,在轮到该协议数据进行时分切片的第一个时间周期内无法对所有数据完成时分切片,那么剩余部分的数据将会在轮流到该协议数据的第二个时间周期内再次进行时分切片,若第二个时间周期还有剩余数据,那么再在轮流到该协议数据的第三个时间周期内再次进行时分切片,如此直至该协议数据的所有数据完成时分切片,硬件层再对该协议数据得到的所有数据片段分别进行打包。

  硬件层在得到所有数据对应的数据包后,将这些数据包发送给网络层,每个数据包携带有标志位,标志位表征每一种协议数据的协议类型和每一种协议数据各自对应的数据片段的数据长度。如前所述,由于每一种协议数据,其时分切片所采用的切片频率不同,则每一种协议数据对应的数据片段的数据长度自然不同。而一个时间周期可以满足同一个协议数据至少产生一个数据片段,并且同一个协议数据时分切片后得到的数据片段的数据长度均相同。

  沿用上述示例:硬件层第1秒对BACent协议的数据进行时分切片,产生BACent协议数据对应的10个数据片段,且BACent协议数据的所有数据完成时分切片,那么硬件层对这10个数据片段打包形成10个数据包,并将这10个数据包发送给网络层,这10个数据包中均携带有标志位,表征数据包对应的协议数据的协议类型为:BACent协议,每一个数据片段的数据长度假设为16字节;硬件层第2秒对Modbus协议的数据进行时分切片,产生Modbus协议数据对应的1个数据片段,但Modbus协议数据的所有数据没有完成时分切片,因此,硬件层对这1个数据片段打包,形成1个数据包,但不发送给网络层。

  之后,硬件层在第3秒对其他协议数据进行时分切片,等再次轮流到对Modbus协议的数据进行时分切片时,硬件层再次对Modbus协议的数据进行时分切片,再次产生Modbus协议数据对应的1个数据片段,若Modbus协议数据的所有数据依旧没有完成时分切片,硬件层再次对新产生的1个数据片段打包,再次形成1个数据包,共2个数据包,但依旧不发送给网络层。再等到第三次对Modbus协议的数据进行时分切片,第三次产生Modbus协议数据对应的1个数据片段,若Modbus协议数据的所有数据完成时分切片,硬件层再次形成1个数据包,此时共3个数据包,硬件层将这3个数据包发送给网络层,每一个数据包携带标志位,表征数据包对应的协议数据的协议类型为:Modbus协议,每一个数据片段的数据长度假设为64字节。

  步骤104:网络层按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失。

  本发明实施例中,网络层接收到硬件层发送的数据包,将按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失。如前所述,不同协议数据时分切片产生的数据切片的数据长度不同,可以理解的是,数据长度越短,传输时所需的时间自然就短,而信息校验自然也快。为了综合发挥出网络层的性能和效率,本发明实施例设置网络层按照数据包携带的数据长度从小到大的顺序,逐一进行信息校验,以确实是否有数据丢失。

  具体可以包括:

  步骤T1:若第一种协议数据对应的数据片段的数据长度小于第二种协议数据对应的数据片段的数据长度,网络层逐一判断第一数量个数据包中每一个数据包携带的数据长度是否等于第一预设长度,以确定第一种协议数据是否有数据丢失。

  步骤T2a:若第一数量个数据包中每一个数据包携带的数据长度等于第一预设长度,网络层确定第一种协议数据没有数据丢失。

  步骤T2b:若第一数量个数据包中任一一个数据包携带的数据长度不等于第一预设长度,网络层确定第一种协议数据有数据丢失。

  本发明实施例中,如前所述,不同协议数据进行时分切片后产生的数据片段的数据长度是不同的,因此,网络层首先对数据长度最短的数据包进行信息校验,校验完成后,再对数据长度第二短的数据包进行信息校验,以此类推,直至对所有接收到的数据包完成信息校验。

  所谓信息校验即是确定数据是否丢失的过程。如前所述,每一种协议数据进行时分切片后产生一定数量的数据片段,同一种协议数据的每一个数据切片的数据长度均是相同的,因此,网络层只需要根据不同协议类型设定不同的预设长度,判断该种协议数据时分切片形成的所有数据包中携带的数据长度,是否等于该种协议类型对应的预设长度,即可确定是否发生数据丢失。

  自然,若是该种协议数据时分切片形成的所有数据包中携带的数据长度,等于该种协议类型对应的预设长度,则没有发生数据丢失;若是该种协议数据时分切片形成的任一一个数据包中携带的数据长度,小于该种协议类型对应的预设长度,则发生数据丢失。

  当确定数据丢失,为了保证数据的完整性和准确性,网络层向硬件层发送错误标志,该错误标志表征该种协议数据对应的数据包中丢失数据包的标识;硬件层接收到错误标志后,重新将标识对应的数据包发送至网络层。即,网络层将再次接收到丢失的数据包,并再次信息校验。

  步骤T3:在确定第一种协议数据没有数据丢失后,网络层逐一判断第二数量个数据包中每一个数据包携带的数据长度是否等于第二预设长度,以确定第二种协议数据是否有数据丢失。

  可以理解的是,因为是逐一进行信息校验,因此对数据包携带的数据长度较短的完成信息校验后,自然就开始对数据包携带的数据长度较长的进行信息校验。

  沿用上述示例:硬件层将10个BACent协议的数据包发送给网络层,这10个数据包中均携带有标志位,表征数据包对应的协议数据的协议类型为:BACent协议,每一个数据片段的数据长度为16字节;硬件层将3个Modbus协议数据的数据包发送给网络层,这3个数据包均携带有标志位,表征数据包对应的协议数据的协议类型为:Modbus协议,每一个数据片段的数据长度为64字节。

  网络层按照数据长度的大小,首先逐一对10个BACent协议的数据包进行信息校验,判断每个BACent协议的数据包携带的数据长度是否等于BACent协议对应的预设长度16字节,确定BACent协议数据是否发生数据丢失,假若这10个数据包中携带的数据长度均是16字节,那么确定BACent协议数据未发生数据丢失。

  同理,BACent协议数据对应的10个数据包完成信息校验后,网络层将对3个Modbus协议的数据包进行信息校验,判断每个Modbus协议的数据包携带的数据长度是否等于Modbus协议对应的预设长度64字节,确定Modbus协议数据是否发生数据丢失,假若这3个数据包中有至少1个数据包携带的数据长度小于64字节,那么确定Modbus协议数据发生数据丢失。

  网络层将向硬件层发送错误标志,错误标志表征了发生丢失数据的数据包的标识,硬件层接收错误标志,将该标识对应的数据包重新发送至网络层。需要说明的是,硬件层接收到错误标志后,假若正在进行时分切片,那么硬件层会在完成当前的时分切片后,先行处理重新发送数据包,之后再继续完成前面未完成的时分切片。

  步骤105:在没有数据丢失的情况下,网络层向应用层发送经过信息校验的数据包。

  本发明实施例中,网络层在没有数据丢失的情况下,会向应用层发送经过信息校验的数据包,具体包括:

  网络层逐一确定第一数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给应用层,直至第一数量个数据包中所有数据包发送给应用层;网络层逐一确定第二数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给应用层,直至第二数量个数据包中所有数据包发送给应用层。

  本发明实施例中,为了提高网络层的传输效率,网络层在每确定一个数据包没有丢失数据时,都会将该数据包发送给应用层,而并不是等到所有数据包均信息校验完成后,再发送给应用层。由于每一个数据包本质上相对于原始协议数据都是数据长度较短的,因此在传输速率上有一定的提高。

  自然,若是某一个数据包出现数据丢失,之后网络层再次接收到硬件层重新发送的该数据包后,若当前正在进行信息校验,则处理完当前的信息校验并发送应用层后,转而对重新接收到的数据包进行信息校验,并在校验完成确定数据未丢失后将数据包发送给应用层,之后再继续处理前面未完的信息校验。网络层不但验证了数据的完整性,同时按照数据包的形式进行传输,形成一个快速可靠的数据传输途径。

  沿用上述示例:网络层逐一对10个BACent协议的数据包进行信息校验,每确定1个数据包未发生数据丢失,则将该数据包发送给应用层;假若10个数据包中的第6个数据包发生数据丢失,那么网络层向硬件层发送错误标志后,会继续对第7个数据包进行信息校验,直到网络层再次接收到第6个数据包,网络层将对第6个数据包再次信息校验,确定第6个数据包没有丢失数据,那么才将第6个数据包发送给应用层。

  同理,3个Modbus协议的数据包进行信息校验,以及发送至应用层的过程与上述10个BACent协议的数据包进行信息校验,以及发送至应用层的过程相同。

  步骤106:应用层接收并解析经过信息校验的数据包。

  本发明实施例中,网络层发送到应用层的数据包是经过信息校验的,因此保证了每个设备发送的协议数据的完整性和准确性。应用层接收到这些数据包后,将进行解析。

  步骤107:应用层按照数据包携带的协议类型将同一种协议类型的数据进行聚合,得到同一种协议类型的所有数据,以提供给软件使用。

  本发明实施例中,应用层解析数据包,自然会得到数据包中携带的协议类型,应用层会将同一协议类型的数据进行聚合,以得到同一种协议类型的所有数据,以提供给软件使用。

  如前所述可知,应用层是一个数据包一个数据包的接收,当网络层确定某一个数据包丢失数据时,会让硬件层重新发送,再次信息校验并确定未丢失数据后才会使得应用层接收到,这需要一定时间。因此,应用层接收到的数据包可能并不是按照一定顺序,甚至可能也不是按照同一协议类型排序的数据包。所以,应用层解析数据包后,需要按照同一协议类型,将该协议类型下的所有数据进行聚合,得到所有数据后,才发送给软件,以提供给软件使用。

  通过上述过程,就实现了多个协议的设备集成在一起使用,不用转换协议、不用增加设备、不用在硬件层面统一协议、也不用在软件层面适配SDK。并且由于网络层形成了一个快速可靠的数据传输途径,同时还缩短了不同设备之间通信延迟,一定程度上提高了通信速率。

  参照图2,示出了本发明实施例一种多协议数据集成的系统的示意图,该系统包括:网关设备和多个外接设备(图2中外接设备1、2、3…N),所述网关设备配置有网络协议栈,所述网络协议栈包括:硬件层、网络层、应用层;所述网络协议栈用于执行以下方法:

  所述硬件层接收并解析多个外接设备发送的数据,每一个外接设备发送的数据所使用的协议不同于其他外接设备发送的数据所使用的协议;

  所述硬件层按照固定时间周期轮流对每一种协议数据进行时分切片,产生每一种协议数据各自对应的数据片段,并对所述各自对应的数据片段打包;

  所述硬件层对所述多个外接设备中每个外接设备发送的数据经时分切片后得到的所有数据片段打包,得到对应的数据包并发送给所述网络层,每个数据包携带有标志位,所述标志位表征每一种协议数据的协议类型和每一种协议数据各自对应的数据片段的数据长度;

  所述网络层按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失;

  在没有数据丢失的情况下,所述网络层向所述应用层发送经过信息校验的数据包;

  所述应用层接收并解析所述经过信息校验的数据包;

  所述应用层按照数据包携带的协议类型将同一种协议类型的数据进行聚合,得到同一种协议类型的所有数据,以提供给软件使用。

  可选地,所述硬件层按照固定时间周期轮流对每一种协议数据进行时分切片,产生每一种协议数据各自对应的数据片段,并对所述各自对应的数据片段打包的具体方法包括:

  所述硬件层在第一个固定时间周期内,对第一种协议数据按照第一切片频率进行切片,产生所述第一种协议数据对应的第一数量个数据片段,并对所述第一数量个数据片段分别打包,形成第一数量个数据包,所述第一数量为所述第一个固定时间周期与所述第一切片频率的比值;

  所述硬件层在第二个固定时间周期内,对第二种协议数据按照第二切片频率进行切片,产生所述第二种协议数据对应的数据片段,并对所述第二数量个数据片段分别打包,形成第二数量个数据包,所述第二数量为所述第二个固定时间周期与所述第二切片频率的比值;

  其中,所述第一切片频率的大小根据所述第一种协议数据的协议类型确定;

  所述第二切片频率的大小根据所述第二种协议数据的协议类型确定;

  所述协议类型不同,各自对应的切片频率的大小不同,形成数据包的数量不同。

  可选地,所述硬件层解析多个外接设备发送的数据的方法具体包括:

  所述硬件层通过所述多个外接设备中每一个外接设备对应的设备SDK解析每一个外接设备发送的数据。

  可选地,所述网络层按照数据包携带的数据长度从小到大的顺序,逐一对接收到的每个数据包携带的标志位进行信息校验,以确定是否有数据丢失的具体方法包括:

  若所述第一种协议数据对应的数据片段的数据长度小于所述第二种协议数据对应的数据片段的数据长度,所述网络层逐一判断所述第一数量个数据包中每一个数据包携带的数据长度是否等于第一预设长度,以确定所述第一种协议数据是否有数据丢失;

  若所述第一数量个数据包中每一个数据包携带的数据长度等于所述第一预设长度,所述网络层确定所述第一种协议数据没有数据丢失;

  若所述第一数量个数据包中任一一个数据包携带的数据长度不等于所述第一预设长度,所述网络层确定所述第一种协议数据有数据丢失;

  在确定所述第一种协议数据没有数据丢失后,所述网络层逐一判断所述第二数量个数据包中每一个数据包携带的数据长度是否等于第二预设长度,以确定所述第二种协议数据是否有数据丢失;

  其中,所述第一预设长度的大小根据所述第一种协议数据的协议类型确定;

  所述第二预设长度的大小根据所述第二种协议数据的协议类型确定;

  所述协议类型不同,各自对应的数据包携带的数据长度的大小不同。

  可选地,在没有数据丢失的情况下,所述网络层向所述应用层发送经过信息校验的数据包的具体方法包括:

  所述网络层逐一确定所述第一数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给所述应用层,直至所述第一数量个数据包中所有数据包发送给所述应用层;

  所述网络层逐一确定所述第二数量个数据包中每一个数据包是否有数据丢失,并在每确定一个数据包没有丢失数据时,将该数据包发送给所述应用层,直至所述第二数量个数据包中所有数据包发送给所述应用层。

  可选地,若所述第一数量个数据包中任一一个数据包携带的数据长度不等于所述第一预设长度,所述网络层确定所述第一种协议数据有数据丢失后的具体方法包括:

  所述网络层向所述硬件层发送错误标志,所述错误标志表征所述第一种协议数据对应的数据包中丢失数据包的标识;

  所述硬件层接收所述错误标志,重新将所述标识对应的数据包发送至所述网络层。

  基于同一发明构思,本发明另一实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上任一所述的方法中的步骤。

  基于同一发明构思,本发明另一实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现本发明上述任一实施例所述的方法中的步骤。

  通过上述实施例,本发明提供的多协议数据集成的方法,由硬件层接收并解析不同设备发送的不同协议数据,之后通过固定时间周期轮流对不同协议数据按照不同切片频率进行时分切片,并对得到的数据片段打包,传输给网络层,由网络层校验数据的完整性,并每校验一个数据包后就传输给应用层,形成一个快速可靠的数据传输途径,最后由应用层聚合同一协议类型的完整数据,提供给最上层软件使用。本发明实质上不需要对多种协议数据进行协议转换,使用了一个网络协议栈实现不同协议设备的控制,解决了当前物联网的设备采用的协议多样,在控制端集成适配困难的问题,将多种物联网的设备协议进行高效集成,降低设备接入、研发适配的难度。另外,由于网络层形成了一个快速可靠的数据传输途径,同时还缩短了不同设备之间通信延迟,一定程度上提高了通信速率。

  本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

  本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

  这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

  这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

  最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

  上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

《一种多协议数据集成的方法、系统、电子设备及存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)