Wsn中基于事件驱动的重编程方法及系统的制作方法

文档序号:7753566阅读:163来源:国知局
专利名称:Wsn中基于事件驱动的重编程方法及系统的制作方法
技术领域
本发明涉及WSN (无线传感器网络)技术领域,特别涉及一种WSN中基于事件驱动的重编程方法及系统。
背景技术
WSN(无线传感器网络)是由大量的随机分布的功能和性能不尽相同的传感器节点组成,节点间通过自组织的方式构成网络。图1是现有的无线传感器网络结构示意图, 如图1所示,节点自组织形成网络通过多跳中继的方式将数据传到汇聚节点(或称终端节点),再通过汇聚节点发到终端PC,再由终端PC传给更远的网络。无线传感器网络一般具有节点多、网络覆盖范围大、不易回收、节点能量有限等特点。随着无线传感器网络的发展,无线传感器的可重编程能力引起了越来越多的人的关注,但是由于部署节点多且不易回收的特点,将部署的节点重新搜集起来进行离线重编程非常困难,基本不可行。因此,PC端进行script高层语言的编译生成二进制代码、通过无线电发送编译生成的二进制代码包到特定节点、节点执行代码实现特定功能的在线编程模式成为了现在研究的热点。传统的无线传感器编程模型大多采用直接执行二进制代码包的方式来实现可重编程的能力,使得传感器节点按照程序要求实现新的功能。但是由于无线传感器的能量限制,往往实现的常驻功能不是一直执行的,而是由事件驱动的,但是传统的直接执行二进制代码包的方式无法满足由特定事件触发执行的需求。此外,在传统的底层操作系统中往往将事件驱动的编程方式作为主要的编程模型,但是其定义的事件往往是由硬件事件所触发的,而由于上层的虚拟机操作触发的事件(例如二进制代码的执行)往往不能捕捉,因此在虚拟机上的基于事件驱动的可编程模型是十分必要的,可以大大增加可重编程的灵活性。综上,现有的可重编程模型无法满足由事件触发的需求,其重编程的灵活性较低。

发明内容
(一)要解决的技术问题本发明要解决的技术问题是如何提供一种WSN中基于事件驱动的重编程方法及系统,以提高WSN重编程的灵活性。( 二 )技术方案为解决上述技术问题,本发明提供一种WSN中基于事件驱动的重编程方法,其包括步骤B:将代码包发送给重编程节点,所述代码包包括事件信息和事件触发后的重编程程序;C 所述重编程节点接收所述代码包,判断所述事件信息是否存在,如果存在,执行步骤E,否则,执行步骤D ;D 根据所述事件信息判断事件类型是否是应用程序事件,如果是,增加所述事件信息后执行步骤E,否则,结束流程;E 存储所述重编程程序以及所述重编程程序和所述事件信息的关联信息;F:事件触发事件处理模块,所述事件处理模块根据所述事件信息和所述关联信息查找所述重编程程序,执行引擎执行所述重编程程序。优选地,在所述步骤B之前,还包括步骤A =PC终端对kript级代码进行编译,组装后生成二进制的所述代码包。优选地,在所述步骤F之后,还包括步骤G 执行引擎执行所述重编程程序后,通知所述事件处理模块,所述事件处理模块等待对应所述事件信息的所有的重编程程序执行完毕后,根据事件类型相应地返回执行结果。优选地,所述步骤G具体包括步骤Gl 执行引擎执行所述重编程程序后,通知所述事件处理模块;G2:所述事件处理模块等待对应所述事件信息的所有的重编程程序执行完毕后, 判断事件类型是否是底层操作系统事件,如果是,将执行结果通知底层操作系统;否则,执行步骤G3 ;G3:判断事件类型是否是驱动执行器事件,如果是,将执行结果通知包处理流程器,否则执行步骤G4;G4 将执行结果通知虚拟机,所述执行引擎继续执行事件触发所述事件处理模块前被中断的操作。优选地,所述步骤E具体包括步骤El 所述事件处理模块向程序管理模块申请空间,并将所述重编程程序存储至所述空间;E2:所述事件处理模块存储所述重编程程序和所述事件信息的关联信息。本发明还提供一种WSN中基于事件驱动的重编程系统,其包括节点;所述节点包括驱动执行器,所述驱动执行器,用于维护报文在节点中的处理流程和重编程程序的执行; 所述报文中包含所述重编程程序。优选地,所述重编程系统还包括PC端编译器;所述PC端编译器用于对kript级代码进行编译,并将组装后生成二进制代码包发送给需要重编程的节点。优选地,所述节点还包括底层操作系统和应用程序;所述底层操作系统用于维护所述节点的一般性操作;所述应用程序包括已有的程序和重编程所产生的应用程序。优选地,所述驱动执行器包括虚拟机和包处理流程器;所述虚拟机用于实现传统的重编程功能,并且所述虚拟机还包括事件处理模块; 所述事件处理模块用于处理重编程程序的添加和删除、维护事件信息和重编程程序的关联信息以及事件触发时触发相应的重编程程序;所述包处理流程器包括流程管理模块和流程控制模块;所述流程管理模块用于在处理报文的整个过程中,触发相应的驱动执行器事件;所述流程控制模块用于在报文进入所述驱动执行器后,维护报文处理的整个流程。优选地,所述虚拟机还包括上下文管理模块、程序管理模块、代码解释器、执行引擎、报文收发模块和错误处理模块;所述上下文管理模块用于实现多个二进制代码程序的并发执行;所述二进制代码程序包括所述重编程程序;所述程序管理模块用于存储所述二进制代码程序;所述代码解释器用于解释所述二进制代码程序,并实现所述二进制代码程序的功能;所述执行引擎用于执行所述二进制代码程序;所述报文收发模块用于接收和发送报文,所述报文包括所述二进制代码程序;所述错误处理模块用于对所述驱动执行器运行过程产生的错误进行处理。(三)有益效果本发明的WSN中基于事件驱动的重编程方法及系统,对事件进行分类,并且存储事件和重编程程序的关联信息,不同的事件触发不同的重编程程序的执行,有效提高了 WSN 重编程的灵活性。


图1是现有的无线传感器网络结构示意图;图2是本发明实施例所述的WSN中基于事件驱动的重编程方法的流程图;图3是本发明实施例所述WSN中基于事件驱动的重编程系统的结构示意图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。本发明实施例中将事件分为三类底层操作系统事件、驱动执行器事件和应用程序事件。所述底层操作系统事件为原有底层操作系统所提供的事件,具体包括了硬件事件、 路由事件、系统事件等等由底层操作系统来维护的结构所触发的事件。驱动执行器主要用于维护报文在节点中的处理流程和重编程程序的执行,所述驱动执行器在报文处理流程中依次处于收到报文、执行程序前、执行程序、执行程序后、发送报文和舍弃报文等状态,并且所述驱动执行器在执行程序时执行相应的指令,我们将所述驱动执行器由于状态改变或者指令执行而触发的事件称之为驱动执行器事件。应用程序事件是指由用户或者编程者通过重编程的方式定义的,而且由重编程程序触发的事件。底层操作系统事件及驱动执行器事件无法重编程定义。图2是本发明实施例所述的WSN中基于事件驱动的重编程方法的流程图。如果2 所示,所述方法包括步骤A =PC终端对kript级代码进行编译,组装后生成二进制的所述代码包。步骤B 将代码包发送给重编程节点,所述代码包包括事件信息和事件触发后的重编程程序。PC终端通过无线电将所述代码包发送给重编程节点。所述事件信息主要包括底层操作系统事件、驱动执行器事件或者应用程序事件的事件代号。步骤C 所述重编程节点接收所述代码包,所述事件处理模块判断所述事件信息是否存在,如果存在,执行步骤E,否则,执行步骤D。步骤D 根据所述事件信息判断事件类型是否是应用程序事件,如果是,增加所述事件信息后执行步骤E,否则,结束流程。
步骤E 存储所述重编程程序以及所述重编程程序和所述事件信息的关联信息。所述步骤E具体包括步骤El 所述事件处理模块向程序管理模块申请空间,并将所述重编程程序存储至所述空间。步骤E2 所述事件处理模块存储所述重编程程序和所述事件信息的关联信息。所述事件处理模块通过建立所述空间的起始地址和所述事件代号的对应关系表,构建得到所述关联信息。步骤F 事件触发所述事件处理模块,所述事件处理模块根据所述事件信息和所述关联信息查找所述重编程程序,执行引擎执行所述重编程程序。步骤G 执行引擎执行所述重编程程序后,通知事件处理模块,所述事件处理模块等待对应所述事件信息的所有的重编程程序执行完毕后,根据事件类型相应地返回执行结果。一个所述事件信息可能会对应多个重编程程序。步骤G具体包括步骤Gl 执行引擎执行所述重编程程序后,通知事件处理模块。步骤G2 所述事件处理模块等待对应所述事件信息的所有的重编程程序执行完毕后,判断事件类型是否是底层操作系统事件,如果是,将执行结果通知底层操作系统;否则,执行步骤G3。步骤G3 判断事件类型是否是驱动执行器事件,如果是,将执行结果通知包处理流程器,否则执行步骤G4。步骤G4 将执行结果通知虚拟机,所述执行引擎继续执行事件触发所述事件处理模块前被中断的操作。本发明实施例所述的WSN中基于事件驱动的重编程系统包括PC端编译器和节
点ο所述PC端编译器用于对kript级代码进行编译,并将组装后生成二进制代码包发送给需要重编程的节点。所述节点包括驱动执行器、底层操作系统和应用程序。所述驱动执行器,用于维护报文在节点中的处理流程和重编程程序的执行。所述底层操作系统用于维护所述节点的一般性操作;所述应用程序包括已有的程序和重编程所产生的应用程序。所述驱动执行器包括虚拟机和包处理流程器。所述虚拟机用于实现传统的重编程功能,并且所述虚拟机还包括事件处理模块; 所述事件处理模块用于处理重编程程序的添加和删除、维护事件信息和重编程程序的关联信息以及事件触发时触发相应的重编程程序。所述包处理流程器包括流程管理模块和流程控制模块;所述流程管理模块用于在处理报文的整个过程中,触发相应的驱动执行器事件;所述流程控制模块用于在报文进入所述驱动执行器后,维护报文处理的整个流程。所述虚拟机还包括上下文管理模块、程序管理模块、代码解释器、执行引擎、报文收发模块和错误处理模块。所述上下文管理模块用于实现多个二进制代码程序的并发执行;所述二进制代码程序包括所述重编程程序;
所述程序管理模块用于存储所述二进制代码程序;所述代码解释器用于解释所述二进制代码程序,并实现所述二进制代码程序的功能;所述执行引擎用于执行所述二进制代码程序;所述报文收发模块用于接收和发送报文,所述报文包括所述二进制代码程序;所述错误处理模块用于对所述驱动执行器运行过程产生的错误进行处理。本发明实施例所述的WSN中基于事件驱动的重编程方法及系统,对事件进行分类,并且存储事件和重编程程序的关联信息,不同的事件触发不同的重编程程序的执行,有效提高了 WSN重编程的灵活性。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种WSN中基于事件驱动的重编程方法,其特征在于,包括步骤B 将代码包发送给重编程节点,所述代码包包括事件信息和事件触发后的重编程程序;C 所述重编程节点接收所述代码包,判断所述事件信息是否存在,如果存在,执行步骤 E,否则,执行步骤D ;D 根据所述事件信息判断事件类型是否是应用程序事件,如果是,增加所述事件信息后执行步骤E,否则,结束流程;E 存储所述重编程程序以及所述重编程程序和所述事件信息的关联信息; F 事件触发事件处理模块,所述事件处理模块根据所述事件信息和所述关联信息查找所述重编程程序,执行弓I擎执行所述重编程程序。
2.如权利要求1所述的方法,其特征在于,在所述步骤B之前,还包括步骤A=PC终端对kript级代码进行编译,组装后生成二进制的所述代码包。
3.如权利要求1所述的方法,其特征在于,在所述步骤F之后,还包括步骤G执行引擎执行所述重编程程序后,通知所述事件处理模块,所述事件处理模块等待对应所述事件信息的所有的重编程程序执行完毕后,根据事件类型相应地返回执行结果。
4.如权利要求3所述的方法,其特征在于,所述步骤G具体包括步骤 Gl 执行引擎执行所述重编程程序后,通知所述事件处理模块;G2 所述事件处理模块等待对应所述事件信息的所有的重编程程序执行完毕后,判断事件类型是否是底层操作系统事件,如果是,将执行结果通知底层操作系统;否则,执行步骤G3 ;G3 判断事件类型是否是驱动执行器事件,如果是,将执行结果通知包处理流程器,否则执行步骤G4;G4 将执行结果通知虚拟机,所述执行引擎继续执行事件触发所述事件处理模块前被中断的操作。
5.如权利要求1所述的方法,其特征在于,所述步骤E具体包括步骤El 所述事件处理模块向程序管理模块申请空间,并将所述重编程程序存储至所述空间;E2:所述事件处理模块存储所述重编程程序和所述事件信息的关联信息。
6.一种WSN中基于事件驱动的重编程系统,其特征在于,包括节点;所述节点包括驱动执行器,所述驱动执行器,用于维护报文在节点中的处理流程和重编程程序的执行;所述报文中包含所述重编程程序。
7.如权利要求6所述的方法,其特征在于,所述重编程系统还包括PC端编译器;所述 PC端编译器用于对kript级代码进行编译,并将组装后生成二进制代码包发送给需要重编程的节点。
8.如权利要求6所述的方法,其特征在于,所述节点还包括底层操作系统和应用程序; 所述底层操作系统用于维护所述节点的一般性操作;所述应用程序包括已有的程序和重编程所产生的应用程序。
9.如权利要求6所述的方法,其特征在于,所述驱动执行器包括虚拟机和包处理流程器;所述虚拟机用于实现传统的重编程功能,并且所述虚拟机还包括事件处理模块;所述事件处理模块用于处理重编程程序的添加和删除、维护事件信息和重编程程序的关联信息以及事件触发时触发相应的重编程程序;所述包处理流程器包括流程管理模块和流程控制模块;所述流程管理模块用于在处理报文的整个过程中,触发相应的驱动执行器事件;所述流程控制模块用于在报文进入所述驱动执行器后,维护报文处理的整个流程。
10.如权利要求9所述的方法,其特征在于,所述虚拟机还包括上下文管理模块、程序管理模块、代码解释器、执行引擎、报文收发模块和错误处理模块;所述上下文管理模块用于实现多个二进制代码程序的并发执行;所述二进制代码程序包括所述重编程程序;所述程序管理模块用于存储所述二进制代码程序;所述代码解释器用于解释所述二进制代码程序,并实现所述二进制代码程序的功能; 所述执行引擎用于执行所述二进制代码程序;所述报文收发模块用于接收和发送报文,所述报文包括所述二进制代码程序; 所述错误处理模块用于对所述驱动执行器运行过程产生的错误进行处理。
全文摘要
本发明公开了一种WSN中基于事件驱动的重编程方法及系统,涉及WSN(无线传感器网络)领域。所述方法包括步骤将代码包发送给重编程节点;重编程节点接收代码包,判断事件信息是否存在,如果存在,执行步骤E,否则,执行步骤D;D根据事件信息判断事件类型是否是应用程序事件,如果是,增加事件信息后执行步骤E,否则,结束流程;E存储重编程程序以及重编程程序和事件信息的关联信息;事件触发事件处理模块,事件处理模块根据事件信息和关联信息查找重编程程序,执行引擎执行重编程程序。所述方法通过不同的事件触发不同的重编程程序的执行,有效提高了WSN重编程的灵活性。
文档编号H04W84/18GK102262542SQ201110235268
公开日2011年11月30日 申请日期2011年8月16日 优先权日2011年8月16日
发明者任丰原, 何滔, 扈煜, 程鹏 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1