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

一种消息处理方法、电子设备及存储介质与流程

2021-10-19 21:33:00 来源:中国专利 TAG:电子设备 消息 计算机 方法 存储介质


1.本技术涉及计算机技术领域,尤其涉及一种消息处理方法、电子设备及存储介质。


背景技术:

2.如图1所示,在单核mcu与协议栈的通讯过程中,例如基于ble通讯、网络通讯、wifi通讯,消息的发送流程或接收流程常用的处理手段为串行处理,即:从协议栈(ble、wifi、网络)获取数据后随即处理数据。
3.如果系统与协议栈的通讯频繁,但是其它操作(如按键操作、电量上报等)无需紧急响应时,如:系统在处理当前数据时,协议栈又出现接收数据或者又出现要发送的数据时,由于要将现有的通讯数据处理完成,才能处理下一个数据,所以其它操作将无法响应或者响应混乱,影响消息处理的准确性及实时性。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本技术提供了一种消息处理方法、电子设备及存储介质。
5.第一方面,本技术提供了一种消息处理方法,包括:消息处理器确定所述消息集中的首个消息结点对应的消息类型,其中,所述消息集用于按照时间先后顺序存储消息结点,所述消息结点为基于接收到的消息数据生成,并由消息调度器添加至所述消息集中的,所述消息类型为向协议栈发送或者从所述协议栈接收;所述消息处理器基于所述消息类型对所述消息结点进行处理;消息处理器基于所述消息类型对所述消息结点进行处理,包括:若所述消息结点的消息类型为向协议栈发送,消息处理器利用预设协议对所述消息结点进行封装,并向所述协议栈发送封装后的消息数据;若所述消息结点的消息类型为从所述协议栈接收,消息处理器利用预设协议对所述消息结点进行解析,得到消息数据。
6.可选地,消息调度器将所述消息结点添加至消息集中,包括:消息调度器在所述消息结点的数据域中读取优先级数据位对应的优先级信息;若根据所述优先级信息确定所述消息结点的优先级是否高于所述消息集中其它消息结点的优先级;若所述消息结点的优先级高于所述消息集中其它消息结点的优先级,将所述消息结点插入所述消息集中其它消息结点的头部;若所述消息结点的优先级低于所述消息集中其它消息结点的优先级,将所述消息结点插入所述消息集中其它消息结点的尾部;若所述消息结点的优先级低于所述消息集中若干个消息结点的优先级,且高于所述消息集中剩余若干个消息结点的优先级,将所述消息结点插入所述消息集中若干个消息
结点与剩余若干个消息结点之间。
7.可选地,消息调度器将所述消息结点添加至消息集中之前,所述方法还包括:所述消息调度器确定是否存在所述消息集,若存在所述消息集,将所述消息结点添加至消息集中;若不存在所述消息集,创建所述消息集,将所述消息结点插入所述消息集中。
8.可选地,消息处理器确定所述消息集中的首个消息结点对应的消息类型,包括:消息处理器在所述消息结点的数据域中读取消息类型标识;若所述消息类型标识对应发送类型,确定所述消息结点的消息类型为向协议栈发送;若所述消息类型标识为接收类型,确定所述消息结点的消息类型为从所述协议栈接收。
9.可选地,消息处理器基于所述消息类型对所述消息结点进行处理,包括:若所述消息结点的消息类型为向协议栈发送,消息处理器利用预设协议对所述消息结点进行封装,并向所述协议栈发送封装后的消息数据;若所述消息结点的消息类型为从所述协议栈接收,消息处理器利用预设协议对所述消息结点进行解析,得到消息数据。
10.可选地,消息处理器基于所述消息类型对所述消息结点进行处理之后,所述方法还包括:所述消息调度器删除所述消息结点,并计算所述消息集的当前长度;若所述消息集的当前长度为0,所述消息调度器释放所述消息集占用的空间;若所述消息集的当前长度大于0,执行消息处理器确定所述消息集中的首个消息结点对应的消息类型的步骤。
11.可选地,所述方法还包括:在消息处理器基于所述消息类型对所述消息结点进行处理过程中,若检测到优先级高于所述消息处理器处理所述消息结点的高优先级操作,消息处理器暂停基于所述消息类型对所述消息结点进行处理;待所述高优先级操作完成后,消息处理器继续基于所述消息类型对所述消息结点进行处理。
12.可选地,所述方法还包括:在消息处理器基于所述消息类型对所述消息结点进行处理过程中,若所述消息集中消息结点的头部被插入高优先级的消息结点,所述消息处理器暂停处理所述消息结点,并优先处理所述高优先级的消息结点;待所述高优先级的消息结点处理完毕时,处理被暂停处理的所述消息结点。
13.第二方面,本技术提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的消息处理方法。
14.第三方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质上
存储有消息处理方法的程序,所述消息处理方法的程序被处理器执行时实现第一方面任一所述的消息处理方法的步骤。
15.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:本发明实施例通过首先构建用于按照时间先后顺序存储消息结点的消息集,这些消息结点为基于接收到的消息数据生成,并由消息调度器添加至所述消息集中的,然后,消息处理器可以确定所述消息集中的首个消息结点对应的消息类型,并基于消息类型对所述消息结点进行处理,也就是说,本发明实施例在每次接收到消息数据时,根据消息数据生成消息结点,并由消息调度器将消息结点添加至消息集中,然后由消息处理器基于消息结点的消息类型对消息结点进行处理。
16.实现通过消息调度器将消息结点按照接收到的时间先后顺序存储在消息集中,实现最大限度的保留所有通讯数据,然后由消息处理器将消息集中首个消息结点按照消息类型进行处理,反复执行以上过程,可以实现消息结点的顺序存储及顺序处理,避免一次只处理一个消息而忽略其它消息的情况,使得每个消息结点都能够得到处理,提高消息处理的准确性及实时性。
附图说明
17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
19.图1为本技术实施例提供的一种与协议栈进行串行发送或者串行接收数据流程示意图;图2为本技术实施例提供的一种实际应用中的系统架构图;图3为本技术实施例提供的一种消息处理方法的流程图;图4为本技术实施例提供的一种消息结点的内部结构示意图;图5为本技术实施例提供的一种消息调度器将消息结点添加至消息集的流程图;图6为本技术实施例提供的一种实际应用中进行消息处理的流程图;图7为本技术实施例提供的一种电子设备的结构图。
具体实施方式
20.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.相关技术中,如果系统与协议栈的通讯频繁,但是其它操作(如按键操作、电量上报等)无需紧急响应时,如:系统在处理当前数据时,协议栈又出现接收数据或者又出现要发送的数据时,由于要将现有的通讯数据处理完成,才能处理下一个数据,所以其它操作将无法响应或者响应混乱,影响消息处理的准确性及实时性。
22.为此,本发明实施例提供了一种消息处理方法、电子设备及存储介质,消息处理方法可以应用于如图2所示的消息处理模块中,消息处理模块可以与协议栈、数据发送模块和数据接收模块通信,如图2,从架构图中可以看出,消息处理模块可以作为“协议栈”与“底层数据处理”(发送模块和接收模块)的中间层,管理着接收与发送的消息资源,具有对各类消息统筹安排的作用;并且不依赖与协议栈类型以及底层平台,方便在各个硬件平台进行移植。
23.如图3所示,所述消息处理方法包括:步骤s101,消息处理器确定所述消息集中的首个消息结点对应的消息类型。
24.在本发明实施例中,所述消息集用于按照时间先后顺序存储消息结点,即消息集(message array)是由消息结点组成的消息集合,“消息集”的本质是单向链表,“消息结点”依据产生的先后顺序依次连接;所述消息结点为基于接收到的消息数据生成,并由消息调度器添加至所述消息集中的,也即,将从协议栈接收到的未解析数据以及系统产生的要发送到协议栈的未打包数据处理成“消息结点”,将产生的“消息结点”通过“消息调度器”连接组成“消息集”。由于数据处理时间大多是消耗在接收数据的解析过程以及发送数据的打包过程,因此将从协议栈接收到的未解析数据及系统产生的要发送到协议栈的未打包数据处理成“消息结点”,这样可以最高效的将数据保留,把解析过程或者打包过程交给后面的“消息处理器”。
25.本发明实施例中,消息结点(message node)是指由协议栈接收到的一包未处理的数据包或者是由系统产生的并且已打包完成即将发送到协议栈的一包数据包。各个消息结点的产生依赖于从协议栈接收的消息或系统自身产生的将要发送到协议栈的消息,为了对消息结点进行统一调度,需要使用特定机制对消息结点进行封装,然后挂载到消息集的特定位置。
26.如图4所示,消息结点包括数据域和指针域,其中,数据域是一个数据结构,此结构包括“消息级别变量”、“应用数据长度”、“消息类型(发送数据或接收数据)”和“应用数据指针”等,待发送的数据与接收的数据是数据域中“应用数据指针”指向的数组;指针域可以用于链接消息集中的消息结点。
27.消息处理器(message processor)用于对消息集上的消息结点进行处理。消息调度器(message scheduler)用于创建消息集,对消息集上的消息结点进行调度。“消息处理器”本质是一个只指向“消息集”(单向链表)第一个“消息结点”的指针。
[0028]“消息处理器”处理完一个“消息结点”,“消息调度器”删掉此结点,那么下一个“消息结点”将作为“消息集”的第一个“消息结点”。在“消息处理器”处理消息过程中,如果系统出现高优先级操作打断消息处理,那么“消息调度器”将不会删除未完成处理的“消息结点”,在系统高优先级操作完成后,“消息处理器”将继续处理此“消息结点”。
[0029]
如果有一个高优先级的“消息结点”产生,并且需要优先处理,那么通过“消息调度器”将此“消息结点”调度成“消息集”的第一个“消息结点”。
[0030]
步骤s102,所述消息处理器基于所述消息类型对所述消息结点进行处理。
[0031]
消息处理器可以根据数据域的数据结构中消息类型的对消息结点进行处理,消息集的消息结点处理顺序为从消息集的头部顺序执行,直至消息集的尾部。
[0032]
本发明实施例通过首先构建用于按照时间先后顺序存储消息结点的消息集,这些
消息结点为基于接收到的消息数据生成,并由消息调度器添加至所述消息集中的,然后,消息处理器可以确定所述消息集中的首个消息结点对应的消息类型,并基于消息类型对所述消息结点进行处理,也就是说,本发明实施例在每次接收到消息数据时,根据消息数据生成消息结点,并由消息调度器将消息结点添加至消息集中,然后由消息处理器基于消息结点的消息类型对消息结点进行处理。
[0033]
实现通过消息调度器将消息结点按照接收到的时间先后顺序存储在消息集中,实现最大限度的保留所有通讯数据,然后由消息处理器将消息集中首个消息结点按照消息类型进行处理,反复执行以上过程,可以实现消息结点的顺序存储及顺序处理,避免一次只处理一个消息而忽略其它消息的情况,使得每个消息结点都能够得到处理,提高消息处理的准确性及实时性。
[0034]
在本发明的又一实施例中,如图5所示,消息调度器将所述消息结点添加至消息集中,包括:步骤201,消息调度器在所述消息结点的数据域中读取优先级数据位对应的优先级信息;步骤202,若根据所述优先级信息确定所述消息结点的优先级是否高于所述消息集中其它消息结点的优先级;消息调度器可以将该消息结点的优先级与消息集中其它消息结点的优先级比较。
[0035]
步骤203,若所述消息结点的优先级高于所述消息集中其它消息结点的优先级,将所述消息结点插入所述消息集中其它消息结点的头部;步骤204,若所述消息结点的优先级低于所述消息集中其它消息结点的优先级,将所述消息结点插入所述消息集中其它消息结点的尾部;步骤205,若所述消息结点的优先级低于所述消息集中若干个消息结点的优先级,且高于所述消息集中剩余若干个消息结点的优先级,将所述消息结点插入所述消息集中若干个消息结点与剩余若干个消息结点之间。
[0036]
随着不断的将不同优先级的消息结点插入到消息集中,消息集中相同优先级的消息结点会按时间先后顺序排序,这样,消息处理器可以依次处理优先级最高且接收时间最早的消息结点,然后处理优先级最高且接收时间稍早的消息结点
……
再处理优先级次高且接收时间最早的消息结点,再处理优先级次高且接收时间稍晚的消息结点
……
直至消息集中所有消息结点处理完毕。
[0037]
本发明实施例可以基于每个消息结点的优先级,将后续接收到的消息结点按照优先级顺序插入至消息集中,这样,可以按照优先级顺序处理消息结点,能最大限度的响应系统高优先级操作而不会影响通讯数据的处理,避免延误处理重要的消息结点。
[0038]
在本发明的又一实施例中,消息调度器将所述消息结点添加至消息集中之前,所述方法还包括:步骤301,所述消息调度器确定是否存在所述消息集,若存在所述消息集,将所述消息结点添加至消息集中;步骤302,若不存在所述消息集,创建所述消息集,将所述消息结点插入所述消息集中。
[0039]
本发明实施例在每次接收到消息数据,并基于消息数据生成消息结点后,在将消
息结点插入至消息集之前,首先确定是否存在消息集,若存在,直接添加,若不存在,创建消息集,并将该消息结点添加至该创建的消息集,保证在产生消息结点时,必然存在消息集来存储消息结点,以便于在不断的产生消息结点时,可以按照时间先后顺序对消息结点进行顺序存储,避免消息的丢失、遗漏处理及处理错误,提高消息处理的准确性及实时性。
[0040]
在本发明的又一实施例中,消息处理器确定所述消息集中的首个消息结点对应的消息类型,包括:步骤401,消息处理器在所述消息结点的数据域中读取消息类型标识;步骤402,若所述消息类型标识对应发送类型,确定所述消息结点的消息类型为向协议栈发送;步骤403,若所述消息类型标识为接收类型,确定所述消息结点的消息类型为从所述协议栈接收。
[0041]
相应的,消息处理器基于所述消息类型对所述消息结点进行处理,包括:步骤404,若所述消息结点的消息类型为向协议栈发送,消息处理器利用预设协议对所述消息结点进行封装,并向所述协议栈发送封装后的消息数据;步骤405,若所述消息结点的消息类型为从所述协议栈接收,消息处理器利用预设协议对所述消息结点进行解析,得到消息数据。
[0042]
本发明实施例中,“消息处理器”始终指向“消息集”中第一个“消息结点”,“消息处理器”会根据“消息结点”数据域的特定数据位判断是“接收数据”还是“发送数据”。如果是“接收数据”,“消息处理器”会根据制定的协议将“消息结点”解析,并根据解析后的数据依据协议进行处理;如果是“发送数据”,“消息处理器”会根据制定的协议将“消息结点”封装,然后发送至协议栈。
[0043]
本发明实施例通过设置传输标识,可以便于区分消息结点的消息类型,进而便于依据不同的消息类型,对消息结点进行不同的处理。
[0044]
在本发明的又一实施例中,消息处理器基于所述消息类型对所述消息结点进行处理之后,所述方法还包括:所述消息调度器删除所述消息结点,并计算所述消息集的当前长度;若所述消息集的当前长度为0,所述消息调度器释放所述消息集占用的空间;若所述消息集的当前长度大于0,执行消息处理器确定所述消息集中的首个消息结点对应的消息类型的步骤。
[0045]
本发明实施例中,如果“消息处理器”将“发送数据”或者“接收数据”处理完成,“消息调度器”会删除“消息结点”,然后计算“消息集”的长度。如果长度为0,那么“消息调度器”释放“消息集”空间,系统将继续等待“发送数据”或者“接收数据”的出现;如果“消息集”长度不为0,则继续进行消息处理器确定所述消息集中的首个消息结点对应的消息类型的步骤。也就是说,本发明实施例能够在消息集为空时,自动删除消息集占用的空间,节省系统资源。
[0046]
在本发明的又一实施例中,所述方法还包括:在消息处理器基于所述消息类型对所述消息结点进行处理过程中,若检测到优先级高于所述消息处理器处理所述消息结点的高优先级操作,消息处理器暂停基于所述消息类型对所述消息结点进行处理;
待所述高优先级操作完成后,消息处理器继续基于所述消息类型对所述消息结点进行处理。
[0047]
本发明实施例中,如果在处理数据过程中,系统出现高优先级操作,打断了数据处理,那么正在处理的“消息结点”不删除,等待系统处理完高优先级操作完成后重新进行“消息结点”的处理。也就是说,在系统出现应急操作时,可以优先处理应急操作,待应急操作处理完成后,可以继续对消息结点进行处理。
[0048]
在本发明的又一实施例中,所述方法还包括:在消息处理器基于所述消息类型对所述消息结点进行处理过程中,若所述消息集中消息结点的头部被插入高优先级的消息结点,所述消息处理器暂停处理所述消息结点,并优先处理所述高优先级的消息结点;待所述高优先级的消息结点处理完毕时,处理被暂停处理的所述消息结点。
[0049]
本发明实施例中,如果在处理数据过程中,系统产生高优先级“消息结点”,打断了数据处理,那么正在处理的“消息结点”不删除,“消息调度器”将高优先级“消息结点”挂载至“消息集”第一个“消息结点”,“消息处理器”优先处理高优先级“消息结点”。也就是说,在消息集中消息结点的头部被插入高优先级的消息结点时,可以优先处理该被插入的消息结点,待该高优先级的消息结点被处理完成后,可以继续对之前暂停处理的消息结点进行处理。
[0050]
为了便于理解本方案,还提供一种实际应用中进行消息处理的整体流程的实施例,如下:如图6所示,接收待向协议栈发送的消息数据或者协议栈发出的消息数据,基于该消息数据生成消息结点,消息调度器确定是否存在消息集,若存在消息集,将消息结点添加至消息集中;若不存在消息集,创建消息集,将消息结点插入所述消息集中。
[0051]
在将消息结点添加至消息集时,消息调度器在消息结点的数据域中读取优先级数据位对应的优先级信息;若根据优先级信息确定消息结点的优先级是否高于消息集中其它消息结点的优先级;若消息结点的优先级高于消息集中其它消息结点的优先级,将消息结点插入消息集中其它消息结点的头部;若消息结点的优先级低于消息集中其它消息结点的优先级,将消息结点插入消息集中其它消息结点的尾部;若消息结点的优先级低于消息集中若干个消息结点的优先级,且高于消息集中剩余若干个消息结点的优先级,将消息结点插入消息集中若干个消息结点与剩余若干个消息结点之间。
[0052]
同时,消息处理器确定所述消息集中的首个消息结点对应的消息类型,具体地,消息处理器在消息结点的数据域中读取消息类型标识;若传输标识为第一数值,确定消息结点的消息类型为向协议栈发送;若传输标识为第二数值,确定消息结点的消息类型为从协议栈接收。
[0053]
若消息结点的消息类型为向协议栈发送,消息处理器利用预设协议对消息结点进行封装,并向协议栈发送封装后的消息数据;若消息结点的消息类型为从协议栈接收,消息处理器利用预设协议对消息结点进行解析,得到消息数据。
[0054]
消息处理器基于消息类型对消息结点进行处理之后,消息调度器删除消息结点,并计算消息集的当前长度;若消息集的当前长度为0,消息调度器释放消息集占用的空间;若消息集的当前长度大于0,执行消息处理器确定消息集中的首个消息结点对应的消息类
型的步骤。
[0055]
在本发明的又一实施例中,还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现前述任一方法实施例所述的消息处理方法。
[0056]
本发明实施例提供的电子设备,处理器通过执行存储器上所存放的程序实现了通过首先构建用于按照时间先后顺序存储消息结点的消息集,这些消息结点为基于接收到的消息数据生成,并由消息调度器添加至所述消息集中的,然后,消息处理器可以确定所述消息集中的首个消息结点对应的消息类型,并基于消息类型对所述消息结点进行处理,也就是说,本发明实施例在每次接收到消息数据时,根据消息数据生成消息结点,并由消息调度器将消息结点添加至消息集中,然后由消息处理器基于消息结点的消息类型对消息结点进行处理。
[0057]
实现通过消息调度器将消息结点按照接收到的时间先后顺序存储在消息集中,实现最大限度的保留所有通讯数据,然后由消息处理器将消息集中首个消息结点按照消息类型进行处理,反复执行以上过程,可以实现消息结点的顺序存储及顺序处理,避免一次只处理一个消息而忽略其它消息的情况,使得每个消息结点都能够得到处理,提高消息处理的准确性及实时性。
[0058]
上述电子设备提到的通信总线1140可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0059]
通信接口1120用于上述电子设备与其他设备之间的通信。
[0060]
存储器1130可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non

volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0061]
上述的处理器1110可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field

programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0062]
在本发明的又一实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有消息处理方法的程序,所述消息处理方法的程序被处理器执行时实现前述任一方法实施例所述的消息处理方法的步骤。
[0063]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在
涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0064]
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜