发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种实现无线传感器网络可视化的方法,使用户可以在本地或远程实时观察所获取的传感数据,以及无线传感器网络网络结构和网络内部数据包的发送过程。
(二)技术方案
为达到上述目的,本发明的技术方案是这样实现的:
一种实现无线传感器网络可视化的方法,该方法包括:
A、启动监听进程获取无线传感器网络中网关节点通过串口向主机发送的数据包;
B、对获取的数据包进行解析,提取出每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载;
C、根据解析出的数据包的源地址字段构建节点分布视图来可视化节点分布,根据解析出的数据包传输路径上各节点ID号在所述节点分布视图上绘制数据包的路由曲线来可视化数据包的发送过程,根据解析出的传感数据负载构建传感数据视图,通过在所述传感数据视图上绘制各节点传感数据的实时曲线来可视化传感数据负载的变化。
步骤A中所述获取数据包是以每个数据包的开始标志和结束标志来判断接收的二进制数据流中数据包的开始和结束的。
所述数据包开始标志为0×8e,结束标志为0×7e,在数据包内不再出现开始标志和结束标志;在数据包内部如需要传输开始标志0×8e,则将0×8e转换为0×8d 0×6e,传输0×8d时将0×8d转换成0×8d 0×6d;在数据包内部如果需要传输结束标志0×7e,则将0×7e转换成0×7d 0×6e,传输0×7d时将0×7d转换成0×7d 0×5d;在接收的时候再将转换之后的字节还原。
步骤C中所述根据解析出的数据包的源地址字段构建节点分布视图来可视化节点分布包括:根据解析出的数据包的源地址字段发现当前网络中存在着哪些节点,并将发现的节点以一个小球的形式显示出来,在小球旁边标明节点的地址;选择一张表征节点所分布的实际环境的图片作为地图背景,将发现的节点拖动到与实际分布相对应的位置,构建节点分布视图。
在所述构建节点分布视图的过程中,地图背景和所有节点的绘制采用双缓冲的方式,即先在内存中绘制好,然后直接将内存中的图像数据直接输出到屏幕中。
步骤C中所述根据解析出的数据包传输路径上各节点ID号在所述节点分布视图上绘制数据包的路由曲线来可视化数据包的发送过程包括:当数据包到达时,解析出数据包中的路由数据,获取该数据包所经过的各个节点的ID号,然后在所述节点分布视图上绘制路由包的路由曲线,并高亮显示发送数据包的节点。
在绘制所述路由曲线时,直接在屏幕上绘制,绘制完后启动定时器,当定时器消息到来时,擦除绘制效果。所述擦除是以双缓冲方式重新绘制地图背景和已发现的节点。
步骤C中所述根据解析出的传感数据负载构建传感数据视图,通过在所述传感数据视图上绘制各节点传感数据的实时曲线来可视化传感数据负载的变化包括:对所述节点分布视图上的每个节点配置一个传感数据链表和一个曲线数组,并建立一个绘制曲线的定时器;当解析出新的传感数据时,将解析出的传感数据缓存到每个节点对应的链表中;当定时器消息到达时,从节点的传感数据链表中取出一个数据放到节点对应的曲线数组中,再从所述曲线数组中取出各个节点对应的数据,根据从所述曲线数组中取出的数据绘制节点传感数据的实时曲线。
所述曲线数组用于保存最近绘制过的N个传感数据值,N为一个根据视觉效果设定的经验值;每次绘制消息到来时,从节点的传感数据链表中取出一个数据放到节点对应的曲线数组中;如果曲线数组已满,则插入新数据,删除最先存入的数据。
所述绘制节点传感数据的实时曲线,是根据曲线数组中保存的数据进行绘制的;当传感数据的获取的速度比绘制的速度慢时,从节点的传感数据链表中取数据时总是取最后一个数据;在读取传感数据的时候,如果发现超过用户设定的阈值,则发出警告信息。
在进行远程可视化时,所述步骤B与步骤C之间进一步包括:将解析出的每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载保存到数据库中,并远程获取数据库中保存的每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载。
预先在终端配置提供可视化服务的ActiveX控件,听述远程获取数据库中保存的每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载包括:所述ActiveX控件首先连接上远程服务器上的数据库,如果需要查看当前网络数据,则定时从数据库中读取当前网络的运行数据信息,即读取网络当前每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载;如果需要查看网络历史活动信息,则从数据库的历史数据表中读取网络的历史数据信息,即读取网络以前每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载。
该方法进一步包括:显示解析出来的传感数据包中的数据,可视化原始数据包的内容。
所述显示解析出来的传感数据包中的原始数据包括:采用分栏的方式将解析出来的传感数据包中的数据以十六进制数值显示出来,每一列代表着一定含义的字段,每一行代表一个数据包;当用户选中某一行数据时,再以树形方式显示选中数据包的层次结构,显示原始数据包的内容。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、利用本发明,可以自动解析从网关节点(或称为基站)发送过来的数据,并以图形化的方式展示网络内部各个传感器节点间的数据包通信过程,方便网络管理者或用户实时的观察无线传感器网络的活动情况。
2、本发明提供的这种实现无线传感器网络可视化的方法,以实时曲线的方式显示网络所监测到的境参数的动态变化过程,并且可以设置阈值,当某个节点所监测到的传感数据超过该阈值时,输出报警提示信息。通过这种途径来辅助使用者分析传感数据。
3、本发明提供的这种实现无线传感器网络可视化的方法,在绘制网络的活动情况时采用了双缓冲绘制方式与直接绘制相结合,有效的防止出现闪烁现象,并且比单纯用双缓冲效率更高。
4、本发明提供的这种实现无线传感器网络可视化的方法,加入对网络的支持,使用者在网站上注册,登录后,请求可视化服务。这样可以让更多的人,在不同的地方同时观察同一个无线传感器网络的状况。
5、本发明提供的这种实现无线传感器网络可视化的方法,用户在本地可视化时可以按照传感器节点在实际环境中的分布情况拖动软件视图中节点标识,使软件中的节点位置与实际的节点分布大致对应,这样在缺乏精确定位技术的情况下,也能形象的观察网络的活动情况。同时用户拖动节点形成的节点分布信息,也会存入数据库中,以使远程用户也可以观察到同样的效果。
6、本发明提供的这种实现无线传感器网络可视化的方法,由于引入了数据库支持,每次实验所收集的数据都将存入到数据库当中,可以通过上面提到方法的去分析数据,既方便回放历史数据,再现历史场景,同时也为诊断网络错误,分析网络性能提供了原始数据。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
如图1所示,图1为本发明提供的实现无线传感器网络可视化总体技术方案的实现流程图,该方法包括以下步骤:
步骤101:启动监听进程获取无线传感器网络中网关节点通过串口向主机发送的数据包;
步骤102:对获取的数据包进行解析,提取出每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载;
步骤103:根据解析出的数据包的源地址字段构建节点分布视图来可视化节点分布,根据解析出的数据包传输路径上各节点ID号在所述节点分布视图上绘制数据包的路由曲线来可视化数据包的发送过程,根据解析出的传感数据负载构建传感数据视图,通过在所述传感数据视图上绘制各节点传感数据的实时曲线来可视化传感数据负载的变化。
上述步骤101中所述获取数据包是以每个数据包的开始标志和结束标志来判断接收的二进制数据流中数据包的开始和结束的。所述数据包开始标志为0×8e,结束标志为0×7e,在数据包内不再出现开始标志和结束标志;在数据包内部如需要传输开始标志0×8e,则将0×8e转换为0×8d 0×6e,传输0×8d时将0×8d转换成0×8d 0×6d;在数据包内部如果需要传输结束标志0×7e,则将0×7e转换成0×7d 0×6e,传输0×7d时将0×7d转换成0×7d0×5d;在接收的时候再将转换之后的字节还原。
上述步骤103中所述根据解析出的数据包的源地址字段构建节点分布视图来可视化节点分布包括:根据解析出的数据包的源地址字段发现当前网络中存在着哪些节点,并将发现的节点以一个小球的形式显示出来,在小球旁边标明节点的地址;选择一张表征节点所分布的实际环境的图片作为地图背景,将发现的节点拖动到与实际分布相对应的位置,构建节点分布视图,这样视图中的各个节点所组成的网络就与实际的网络对应起来了。在所述构建节点分布视图的过程中,地图背景和所有节点的绘制采用双缓冲的方式,即先在内存中绘制好,然后直接将内存中的图像数据输出到屏幕中,这样可以有效的防止频繁绘制时出现闪烁现象。
上述步骤103中所述根据解析出的数据包传输路径上各节点ID号在所述节点分布视图上绘制数据包的路由曲线来可视化数据包的发送过程包括:当数据包到达时,解析出数据包中的路由数据,获取该数据包所经过的各个节点的ID号,然后在所述节点分布视图上绘制路由包的路由曲线,并高亮显示发送数据包的节点,以此来观察网络内部的活动情况。在绘制所述路由曲线时,直接在屏幕上绘制,绘制完后启动定时器,当定时器消息到来时,擦除绘制效果。所述擦除是以双缓冲方式重新绘制地图背景和已发现的节点,视觉效果就形成擦除。
上述步骤103中所述根据解析出的传感数据负载在所述节点分布视图上绘制节点传感数据的实时曲线来可视化传感数据负载的变化包括:对所述节点分布视图上的每个节点配置一个传感数据链表和一个曲线数组,并建立一个绘制曲线的定时器;当解析出新的传感数据时,将解析出的传感数据缓存到每个节点对应的链表中;当定时器消息到达时,从节点的传感数据链表中取出一个数据放到节点对应的曲线数组中,再从所述曲线数组中取出各个节点对应的数据,根据从所述曲线数组中取出的数据绘制节点传感数据的实时曲线。
所述曲线数组用于保存最近绘制过的N个传感数据值,N为一个根据视觉效果设定的经验值;每次绘制消息到来时,从节点的传感数据链表中取出一个数据放到节点对应的曲线数组中;如果曲线数组已满,则插入新数据,删除最先存入的数据。
所述绘制节点传感数据的实时曲线,是根据曲线数组中保存的数据进行绘制的,只绘制对应曲线数组中保存的数据,这样利用视觉暂留使得曲线具有滚动的效果,给人一种实时性的感觉。当传感数据的获取的速度比绘制的速度慢时,从节点的传感数据链表中取数据时总是取最后一个数据;在读取传感数据的时候,如果发现超过用户设定的阈值,则发出警告信息。
该方法在步骤103之后进一步包括:显示解析出来的传感数据包中的数据,可视化原始数据包的内容。所述显示解析出来的传感数据负载中的数据包括:采用分栏的方式将解析出来的传感数据包中的数据以十六进制数值显示出来。每一列代表着一定含义的字段,每一行代表一个数据包;当用户选中某一行数据时,再以树形方式显示选中数据包的层次结构,显示原始数据包的内容。
如图2所示,图2为本发明提供的实现无线传感器网络可视化总体架构的结构示意图。该总体架构包括一个一定规模的无线传感器网络(网络中应包含一个网关节点,所有数据将发送给网关节点),一台服务器主机,数台请求服务的客户机。其中服务器主机上的软件结构如图3所示。它包括数据收集和本地可视化软件、mysql数据库,apache(提供远程访问),php解释器,提供可视化服务的网站程序。
基于图1所述的实现无线传感器网络可视化总体技术方案的实现流程图和图2所述的实现无线传感器网络可视化总体架构的结构示意图,以下结合具体的实施例对本发明实现无线传感器网络可视化的方法进一步详细说明。
实施例一
在本实施例中,以实现无线传感器网络本地可视化为例,以下结合附图进一步说明实现无线传感器网络本地可视化的详细方法和步骤。
如图4所示,图4为依照本发明第一个实施例实现无线传感器网络本地可视化的方法流程图,该方法包括以下步骤:
步骤401:通过启动一个监听进程来获取无线传感器网络中网关节点(或称为基站)通过串口向主机发送的数据包。
定义每个数据包开始标志为0×8e,定义结束标志为0×7e,以此标志来判断通过串口接收到的二进制数据流中数据包的开始和结束。在数据包内不能再出现包开始和结束标志,在数据包内部如需要传输包开始标志0×8e,则将0×8e转换为0×8d 0×6e,传输0×8d时将0×8d转换成0×8d 0×6d;如果需要传输包结束标志0×7e,则将0×7e转换成0×7d 0×6e,传输0×7d时将0×7d转换成0×7d 0×5d。在接收的时候再将转义之后的字节还原。
步骤402:对接收到的数据包进行解析,提取出每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载。
步骤403:通过数据包的源地址字段发现网络中存在的传感器节点,并将发现的节点以一个小球显示在节点分布视图中。一段时间后,大部分或全部的节点都已经发现。用户可以拖动视图中节点标识(用小球表示),使视图中节点的分布与传感器节点的实际分布相同,便于观察。
步骤404:通过获取的数据包的传输路径上各节点ID号,以这些节点在视图上的坐标为基准点绘制拟和曲线,同时高亮显示数据包发送的源节点,并用箭头指向数据包发送的目的节点,以此来可视化数据包的发送过程。
步骤405:传感数据负载的可视化,则用与时间轴相关的曲线来表示,可以便于观察传感数据随时间的的波动变化。
实施例二
在本实施例中,以实现无线传感器网络远程可视化为例,以下结合附图进一步说明实现无线传感器网络远程可视化的详细方法和步骤。
如图5所示,图5为依照本发明第二个实施例实现无线传感器网络远程可视化的方法流程图,该方法包括以下步骤:
步骤501:从网关节点收集数据。通过启动一个监听进程来获取无线传感器网络中网关节点(或称为基站)通过串口向主机发送的数据包。
每个数据包开始标志定义为0×8e,结束标志定义为0×7e,以此标志来判断通过串口接收到的二进制数据流中数据包的开始和结束。在数据包内不能再出现包开始和结束标志,在数据包内部如需要传输包开始标志0×8e,则将0×8e转换为0×8d 0×6e,传输0×8d时将0×8d转换成0×8d 0×6d;如果需要传输包结束标志0×7e,则将0×7e转换成0×7d 0×6e,传输0×7d时将0×7d转换成0×7d 0×5d。在接收的时候再将转义之后的字节还原。
步骤502:对接收到的数据包进行解析,提取出每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载,将解析出的数据存入到数据库中。
在本步骤中,将将解析出的数据存入到数据库中是将远程可视化所需要的数据保存到mysql数据库中,为远程可视化提供一个数据接口。主要保存经过解析之后的数据,包括发送数据包的节点地址,数据所经过路径上的节点的地址,数据包中所携带的传感数据的值,还有在本地可视化阶段让用户拖动各个传感器节点所获取的各节点分布的相对位置信息,这样在远程可视化的时候可以将发现的节点直接显示在对应的位置,方便形象地观察网络行为。
步骤503:用户在网站上注册登录后,选择查看当前网络的数据。用户发出请求后,提供可视化服务的ActiveX控件会自动下载到用户主机中。ActiveX控件首先连接上远程服务器上的数据库,如果当前网络处在运行中,则定时从数据库中读取当前网络的运行信息。主要是读取接收到的各个数据包,提取出每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载。
步骤504:通过数据包的源地址字段发现网络中存在的传感器节点,并将发现的节点以一个小球显示在节点分布视图中。一段时间后,大部分或全部的节点都已经发现。在本地视图中用户拖动节点后,节点的分布信息会存入到数据库中。远程的ACTIVEX控件会定时的读取这些分布信息,并映射到控件的视图当中。
步骤505:通过获取的数据包的传输路径上各节点ID号,以这些节点在视图上的坐标为基准点绘制拟和曲线,同时高亮显示数据包发送的源节点,并用箭头指向数据包发送的目的节点,以此来可视化数据包的发送过程。
步骤506:传感数据负载的可视化,则用与时间轴相关的曲线来表示,可以便于观察传感数据随时间的的波动变化。
在上述步骤503至506实现远程可视化的过程中,首先借助于服务器端软件apache提供远程访问的功能,接着利用PHP实现一个WEB界面,在mysql数据库中建立一个用户表,用于验证访问网站的用户的合法性。然后将可视化的功能封装在一个ActiveX控件里面,并制作控件对应的INF文件(用于在访问本网站用户的机器上安装控件),将控件和所需要的动态链接库文件打包成CAB格式(压缩控件文件,减小因为传输造成的延时),在HTML网页文件中调用。当用户使用WEB浏览器请求可视化服务的时候,会自动下载CAB文件并提示是否安装该控件,安装之后就可以观察到可视化效果。
远程可视化也提供了三个功能:节点分布视图、实时曲线视图、原始数据视图。实现步骤与本地可视化大体近似。为了在远程方便的观察网络的行为我们必须知道节点的分布情况,所以此处还需要借助数据库中保存的节点分布的相对坐标信息。因为WEB页面上的空间相对较小一些,而且也不可能与本地可视化的视图一一对应,所以此处还须对坐标进行一些转换。转换过程如下:
database=ylocal*localWidth+xlocal;
XWeb=((float)(database%localWidth)/localWidth)*webWidth;
YWeb=((float)(database/localWidth)/localHeight)*webWidth;
Database表示在数据库中的坐标值,类型是整型,xlocal和ylocal为对应的节点在本地视图中的x、y坐标,xWeb和yWeb为经过换算之后对应节点在WEB控件中应该显示的x、y坐标,localWidth和localHeight为本地视图的宽度和高度,webWidth和webHeight为控件在页面上的宽度和高度。
显示数据包发送情况时,对从数据库中读出的数据包进行缓存,这样就能基本上再现整个网络的活动过程。在绘制曲线的时候,为了保证实时性,则只从数据库中取出各个节点最新的传感数据并显示。另外有可能用户请求实时可视化服务的时候,数据库中可能已经储存了大量的历史数据,可视化这些历史数据会耗费大量的时间,而不能反应当前网络的情况。所以在第一次访问数据库时,一般只取读取最近收集到的若干组数据,一般为15组数据。
实施例三
在本实施例中,以实现无线传感器网络远程历史数据可视化为例,阐述如何回放历史数据,再现网络过去某段时间的活动情况。在回放历史数据之前,数据库中应存储有过去实验所收集的历史数据。以下结合附图进一步说明实现无线传感器网络远程历史数据可视化的详细方法和步骤。
如图6所示,图6为依照本发明第三个实施例实现无线传感器网络远程历史数据可视化的方法流程图,该方法包括以下步骤:
步骤601:用户在提供可视化服务的网站上注册,通过验证后,就可以到登录提供可视化服务的网站。
步骤602:从历史数据列表中选择所要查看历史数据。用户发出请求后,提供可视化服务的ActiveX控件会自动下载到用户主机中。
步骤603:ActiveX控件首先连接上远程服务器上的数据库,定时从与步骤602中选择的历史数据对应的数据库中读取一定数量的数据包,提取出每个数据包的源地址字段、数据包传输路径上各节点ID号、传感数据负载。
步骤604:通过数据包的源地址字段发现网络中存在的传感器节点,并将发现的节点以一个小球显示在节点分布视图中。一段时间后,大部分或全部的节点都已经发现。在本地视图中用户拖动节点后,节点的分布信息会存入到数据库中。远程的ACTIVEX控件会定时的读取这些分布信息,并映射到控件的视图当中。
步骤605:通过获取的数据包的传输路径上各节点ID号,以这些节点在视图上的坐标为基准点绘制拟和曲线,同时高亮显示数据包发送的源节点,并用箭头指向数据包发送的目的节点,以此来可视化数据包的发送过程。
步骤606:传感数据负载的可视化,则用与时间轴相关的曲线来表示,可以便于观察传感数据随时间的的波动变化。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。