发明内容
本发明实施例提供一种通信设备数据补报方法、装置、通信设备及存储介质,以大大提高通信设备上报数据的完整性,并减少对数据库等外部环境的依赖以及对设备资源的需求,同时还可支持多通道数据补报的并行处理。
第一方面,本发明实施例提供了一种通信设备数据补报方法,该方法包括:
检查通信设备各个通道的网络链路是否正常,如果存在正常的目标通道,则确定所述目标通道是否存在对应的需要进行补报的待补报数据;
若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过所述目标通道将得到的报文进行上报。
可选的,所述组包信息以链表结构存储在所述存储器中,且每个通道对应一个第一链表,每个所述第一链表中的节点包括数据域和指针域,不包括表结构。
可选的,所述第一链表中的每个节点对应一个有效标记,所述有效标记用于指征对应节点是否已完成补报;
相应的,所述确定所述目标通道是否存在对应的需要进行补报的待补报数据,包括:
根据所述目标通道对应的第一链表中各个节点的有效标记确定所述目标通道是否存在所述待补报数据。
可选的,所述根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过所述目标通道将得到的报文进行上报,包括:
根据预设的单次上报最大条数进行组包并将得到的报文进行上报,若上报条数达到所述单次上报最大条数,则停止当前补报过程。
可选的,在所述检查通信设备各个通道的网络链路是否正常之前,还包括:
当有新的目标报文需要上报时,提取所述目标报文的组包信息并插入第二链表中;
创建一个定时器,每当所述第二链表中插入一个节点时更新一次所述定时器,且每有一条所述目标报文成功上报时删除所述第二链表中的对应节点;
当所述定时器超时时,将所述第二链表中的剩余节点存储的组包信息写入所述存储器中。
可选的,在所述检查通信设备各个通道的网络链路是否正常之后,还包括:
若不存在所述目标通道,则使得所述通信设备进入低功耗模式;或者,
在所述确定所述目标通道是否存在对应的需要进行补报的待补报数据之后,还包括:
若不存在所述待补报数据,则使得所述通信设备进入低功耗模式;或者,
在所述根据存储器中存储的所述待补报数据的组包信息依次进行组包,并将得到的报文进行上报之后,还包括:
若当前补报过程结束,则使得所述通信设备进入低功耗模式。
可选的,所述方法还包括:
当有所述目标报文需要上报时,使得所述通信设备退出低功耗模式。
第二方面,本发明实施例还提供了一种通信设备数据补报装置,该装置包括:
补报启动模块,用于检查通信设备各个通道的网络链路是否正常,如果存在正常的目标通道,则确定所述目标通道是否存在对应的需要进行补报的待补报数据;
补报执行模块,用于若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过所述目标通道将得到的报文进行上报。
第三方面,本发明实施例还提供了一种通信设备,该通信设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的通信设备数据补报方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所提供的通信设备数据补报方法。
本发明实施例提供了一种通信设备数据补报方法,首先检查通信设备各个通道的网络链路是否正常,如果存在链路正常的目标通道,则确定目标通道是否存在对应的需要进行补报的待补报数据,若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过目标通道将组包得到的报文进行上报。本发明实施例所提供的通信设备数据补报方法,通过存储组包信息,并在需要进行补报时根据组包信息重新组出报文上报,在保证网络环境较差情况下通信设备上报数据完整性的基础上,也减少了对数据库等外部环境的依赖以及对设备资源的需求,只要有通信模块和存储器的设备均可使用,对于应用场景及报文格式等也没有特别要求,可以在任意程序结构下挂载,适用范围极广。同时通过直接使用原有用于上报的通道进行补报,无需额外配置通道,也实现了支持多通道数据补报的并行处理。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的通信设备数据补报方法的流程图。本实施例可适用于在网络环境较差的情况下通信设备对上报失败的数据进行补报的情况,该方法可以由本发明实施例所提供的通信设备数据补报装置来执行,该装置可以由硬件和/或软件的方式来实现,一般可集成于通信设备中。如图1所示,具体包括如下步骤:
S11、检查通信设备各个通道的网络链路是否正常,如果存在正常的目标通道,则确定所述目标通道是否存在对应的需要进行补报的待补报数据。
具体的,在需要进行补报流程时,可以首先检查通信设备的各个通道的网络链路是否正常,如果各个通道的网络链路均不正常,则可以直接退出当前补报流程。如果存在网络链路正常的通道,则可以将该通道确定为目标通道,其中,目标通道的个数可以是一个或多个,且当目标通道为多个时,可以并行的对多个目标通道同时进行后续的处理。在确定目标通道之后,可以判断目标通道是否存在对应的需要进行补报的待补报数据,其中,待补报数据即可以是在正常上报过程中未成功完成上报的数据。若所有目标通道均没有需要进行补报的待补报数据,则可以直接退出当前补报流程。
S12、若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过所述目标通道将得到的报文进行上报。
相应的,若某个目标通道存在对应的待补报数据,则可以开始待补报数据的补报过程。具体的,针对待补报数据,可以预先仅对其组包信息进行存储,其中,组包信息即报文的重要信息,指组出包所必须的要素,具体可以包括组包时间和组包类型等等,在进行补报时,可以通过这些要素重新组出报文,即对于上报失败的数据,无需存储整个报文,从而减少对设备资源的占用,另外,待补报数据的组包信息可以存储在通信设备的外部存储器中。在开始补报过程之后,则可以按照原本上报的顺序,即组包信息的存储顺序依次根据组包信息进行组包,并陆续将组包得到的报文发送至对应的目标通道进行上报,如上所述,若目标通道为多个,则可以同时并行的针对各个目标通道进行组包和上报的过程。每完成一次组包上报的过程之后,可以检测存储器中是否还有需要补报的待补报数据的组包信息,若有,则可以继续组包上报的过程,若无,则可以退出当前补报流程。进一步可选的,所述根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过所述目标通道将得到的报文进行上报,包括:根据预设的单次上报最大条数进行组包并将得到的报文进行上报,若上报条数达到所述单次上报最大条数,则停止当前补报过程。具体的,在进行补报过程中,可以预先设置每个通道的单次上报最大条数,若当前补报过程组包上报条数达到该单次上报最大条数,则停止当前补报过程,并可等待下一次补报流程开启后再继续进行补报,从而避免由于有过多的数据需要补报而导致通信设备持续发送数据,进而导致设备电量快速损耗的问题,以实现在电量有限的情况下延长设备的使用时间。
其中,可选的,所述组包信息以链表结构存储在所述存储器中,且每个通道对应一个第一链表,每个所述第一链表中的节点包括数据域和指针域,不包括表结构。具体的,每个第一链表,可以用来表示一个通道需要补报的待补报数据,具体可以在第一链表的节点中存储待补报数据的组包信息。考虑到存储器可以是各种类型的外部存储器,存储量和擦写次数可能是有限的,因此每个第一链表中的节点可以只有数据域和指针域,而没有表结构,从而适应各种类型的外部存储器。
进一步可选的,所述第一链表中的每个节点对应一个有效标记,所述有效标记用于指征对应节点是否已完成补报;相应的,所述确定所述目标通道是否存在对应的需要进行补报的待补报数据,包括:根据所述目标通道对应的第一链表中各个节点的有效标记确定所述目标通道是否存在所述待补报数据。具体的,对于写入第一链表节点的组包信息,可以通过有效标记来确定其是否有效,有效则表示该组包信息对应的待补报数据尚未完成补报,需要进行补报,无效则表示该组包信息对应的待补报数据已补报成功,不需要进行补报,从而无需对写入存储器的数据频繁更改。相应的,若目标通道对应的第一链表中存在有效标记为有效的节点,则表示目标通道存在待补报数据,从而可以开启后续的补报过程。进一步的,在补报过程中,每组包且上报成功一次报文,均可以将对应节点的有效标记修改为无效,以保证补报过程的准确性。
在上述技术方案的基础上,可选的,在所述检查通信设备各个通道的网络链路是否正常之前,还包括:当有新的目标报文需要上报时,提取所述目标报文的组包信息并插入第二链表中;创建一个定时器,每当所述第二链表中插入一个节点时更新一次所述定时器,且每有一条所述目标报文成功上报时删除所述第二链表中的对应节点;当所述定时器超时时,将所述第二链表中的剩余节点存储的组包信息写入所述存储器中。具体的,可以在每次进行补报流程之前,首先进行补报存储流程,并可以由新的目标报文需要上报来触发该补报存储流程及补报流程,从而减少对通信模块的操作,减少设备功耗。可以创建一个第二链表,用于管理提取出的组包信息,以便得到需要补报的组包信息,当有新的目标报文需要上报时,可以提取目标报文的组包信息并插入第二链表中备用。同时创建一个定时器,用来管理超时,若定时器超时,则说明针对当前的目标报文上报过程,已暂时没有新的数据需要上报,即可认为当前上报过程结束,则可以在每在第二链表中插入一个节点时,更新一次定时器,以重新开始计时,直至定时器超时,同一时间点可以有多个通道的多个报文上报,则可以将多个报文对应的组包信息插入同一第二链表中备用,也可以创建多个第二链表分别存储各个通道的组包信息备用。另一方面,针对第二链表中的节点,每当有一条目标报文成功上报时,可以删除第二链表中的对应节点,则在定时器超时时,第二链表中的剩余节点存储的即是上报失败的目标报文的组包信息,从而可以将剩余节点存储的组包信息写入存储器中,以完成补报存储流程,当然,在定时器超时时,第二链表中可能不存在剩余节点,则表示目标报文全部上报成功,此时也可以视为完成补报存储流程。在完成补报存储流程,则可以参考上述内容,进入补报流程。
基于以上内容,进一步的,在通信设备上电后,可以首先搜索外部存储器,找到每个第一链表的上报节点和链表尾,如图2所示,以包括两个通道为例进行示出,其中实线表示第一通道,虚线表示第二通道,搜索结束后,可以得到第一通道的上报节点为0x130(即第一个有效标识为有效的节点),链表尾为0x230,第二通道的上报节点为0x120,链表尾为0x250。在获得每个第一链表的上报节点和链表尾之后,即可准备对其进行读写操作,包括补报存储流程的组包信息的写入,以及补报流程的组包信息的读取等。
在上述技术方案的基础上,可选的,在所述检查通信设备各个通道的网络链路是否正常之后,还包括:若不存在所述目标通道,则使得所述通信设备进入低功耗模式;或者,在所述确定所述目标通道是否存在对应的需要进行补报的待补报数据之后,还包括:若不存在所述待补报数据,则使得所述通信设备进入低功耗模式;或者,在所述根据存储器中存储的所述待补报数据的组包信息依次进行组包,并将得到的报文进行上报之后,还包括:若当前补报过程结束,则使得所述通信设备进入低功耗模式。进一步可选的,所述方法还包括:当有所述目标报文需要上报时,使得所述通信设备退出低功耗模式。具体的,在进入低功耗模式之后,可以关闭通信设备的通信模块,还可以根据不同需求,决定是否关闭其他外设,从而进一步降低通信设备的功耗。并且可以仅在有新的目标报文需要上报时退出低功耗模式,开始目标报文上报过程、补报存储流程以及补报流程,进入补报流程之后,若判断不存在网络链路正常的目标通道,则可以退出当前补报流程,并进入低功耗模式,若判断存在目标通道但不存在对应的待补报数据,也可以退出当前补报流程,并进入低功耗模式,若补报过程结束,即存储器中存储的组包信息已全部完成补报或者补报条数达到单次上报最大条数等,也可以退出当前补报流程,并进入低功耗模式。
本发明实施例所提供的技术方案,首先检查通信设备各个通道的网络链路是否正常,如果存在链路正常的目标通道,则确定目标通道是否存在对应的需要进行补报的待补报数据,若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过目标通道将组包得到的报文进行上报。通过存储组包信息,并在需要进行补报时根据组包信息重新组出报文上报,在保证网络环境较差情况下通信设备上报数据完整性的基础上,也减少了对数据库等外部环境的依赖以及对设备资源的需求,只要有通信模块和存储器的设备均可使用,对于应用场景及报文格式等也没有特别要求,可以在任意程序结构下挂载,适用范围极广。同时通过直接使用原有用于上报的通道进行补报,无需额外配置通道,也实现了支持多通道数据补报的并行处理。
实施例二
图3为本发明实施例二提供的通信设备数据补报装置的结构示意图,该装置可以由硬件和/或软件的方式来实现,一般可集成于通信设备中,用于执行本发明任意实施例所提供的通信设备数据补报方法。如图3所示,该装置包括:
补报启动模块31,用于检查通信设备各个通道的网络链路是否正常,如果存在正常的目标通道,则确定所述目标通道是否存在对应的需要进行补报的待补报数据;
补报执行模块32,用于若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过所述目标通道将得到的报文进行上报。
本发明实施例所提供的技术方案,首先检查通信设备各个通道的网络链路是否正常,如果存在链路正常的目标通道,则确定目标通道是否存在对应的需要进行补报的待补报数据,若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过目标通道将组包得到的报文进行上报。通过存储组包信息,并在需要进行补报时根据组包信息重新组出报文上报,在保证网络环境较差情况下通信设备上报数据完整性的基础上,也减少了对数据库等外部环境的依赖以及对设备资源的需求,只要有通信模块和存储器的设备均可使用,对于应用场景及报文格式等也没有特别要求,可以在任意程序结构下挂载,适用范围极广。同时通过直接使用原有用于上报的通道进行补报,无需额外配置通道,也实现了支持多通道数据补报的并行处理。
在上述技术方案的基础上,可选的,所述组包信息以链表结构存储在所述存储器中,且每个通道对应一个第一链表,每个所述第一链表中的节点包括数据域和指针域,不包括表结构。
在上述技术方案的基础上,可选的,所述第一链表中的每个节点对应一个有效标记,所述有效标记用于指征对应节点是否已完成补报;
相应的,补报启动模块31,包括:
待补报数据确定单元,用于根据所述目标通道对应的第一链表中各个节点的有效标记确定所述目标通道是否存在所述待补报数据。
在上述技术方案的基础上,可选的,补报执行模块32具体用于:
根据预设的单次上报最大条数进行组包并将得到的报文进行上报,若上报条数达到所述单次上报最大条数,则停止当前补报过程。
在上述技术方案的基础上,可选的,该通信设备数据补报装置,还包括:
组包信息提取模块,用于在所述检查通信设备各个通道的网络链路是否正常之前,当有新的目标报文需要上报时,提取所述目标报文的组包信息并插入第二链表中;
定时器更新模块,用于创建一个定时器,每当所述第二链表中插入一个节点时更新一次所述定时器,且每有一条所述目标报文成功上报时删除所述第二链表中的对应节点;
组包信息存储模块,用于当所述定时器超时时,将所述第二链表中的剩余节点存储的组包信息写入所述存储器中。
在上述技术方案的基础上,可选的,该通信设备数据补报装置,还包括:
第一低功耗模式进入模块,用于在所述检查通信设备各个通道的网络链路是否正常之后,若不存在所述目标通道,则使得所述通信设备进入低功耗模式;或者,
第二低功耗模式进入模块,用于在所述确定所述目标通道是否存在对应的需要进行补报的待补报数据之后,若不存在所述待补报数据,则使得所述通信设备进入低功耗模式;或者,
第三低功耗模式进入模块,用于在所述根据存储器中存储的所述待补报数据的组包信息依次进行组包,并将得到的报文进行上报之后,若当前补报过程结束,则使得所述通信设备进入低功耗模式。
在上述技术方案的基础上,可选的,该通信设备数据补报装置,还包括:
低功耗模式退出模块,用于当有所述目标报文需要上报时,使得所述通信设备退出低功耗模式。
本发明实施例所提供的通信设备数据补报装置可执行本发明任意实施例所提供的通信设备数据补报方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,在上述通信设备数据补报装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例三
图4为本发明实施例三提供的通信设备的结构示意图,示出了适于用来实现本发明实施方式的示例性通信设备的框图。图4显示的通信设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图4所示,该通信设备包括处理器41、存储器42、输入装置43及输出装置44;通信设备中处理器41的数量可以是一个或多个,图4中以一个处理器41为例,通信设备中的处理器41、存储器42、输入装置43及输出装置44可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器42作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的通信设备数据补报方法对应的程序指令/模块(例如,通信设备数据补报装置中的补报启动模块31及补报执行模块32)。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而执行通信设备的各种功能应用以及数据处理,即实现上述的通信设备数据补报方法。
存储器42可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据通信设备的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至通信设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置43可用于获取需要进行上报的数据,以及产生与通信设备的用户设置和功能控制有关的键信号输入等。输出装置44可用于数据上报等等。
实施例四
本发明实施例四还提供一种包含计算机可执行指令的存储介质,该计算机可执行指令在由计算机处理器执行时用于执行一种通信设备数据补报方法,该方法包括:
检查通信设备各个通道的网络链路是否正常,如果存在正常的目标通道,则确定所述目标通道是否存在对应的需要进行补报的待补报数据;
若存在,则根据存储器中存储的所述待补报数据的组包信息依次进行组包,并通过所述目标通道将得到的报文进行上报。
存储介质可以是任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM、兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到计算机系统。第二计算机系统可以提供程序指令给计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的通信设备数据补报方法中的相关操作。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。