基于Web Services的嵌入式农业物联网测控系统
支持应用软件运行。
2.3.2 智能网关Web Services服务
Web Services是本系统的重要组成部分,从表面上看,Web Services服务就是一个Web应用程序,它向外界暴露出一个API接口,用户可以通过编程方式在Internet上调用这些Web Services应用程序。从深层次上看,Web服务是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络中被描述、发布、查找、调用。Web Services基于可扩展的标记语言(XML)消息交换,其所使用协议都是开放的标准协议,调用接口更加规范且与平台无关;调用方法采用简单对象访问协议(SOAP),其定义了其消息格式,实现实体间的信息交换;使用Web Services描述语言(WSDL)描述网络服务及其访问信息,WSDL描述了Web Services及其函数、参数和返回值等。
本系统的软件架构如图2:主要有Web Serice接口层、服务抽象层、信息采集与控制层。
1)Web Services接口层
由于嵌入式系统的计算及存储资源有限,本文使用gSOAP轻量级的开源工具实现Web Serices网络接口。gSOAP编译工具提供了一个SOAP /XML关于C/C++语言的实现,屏蔽了SOAP协议的具体实现细节,系统开发者只需关注具体的逻辑实现即可。gSOAP开发工具主要由gSoap编译器和运行时库组成,gSoap编译器包括WSDL解析器(wsdl2h)、存根和框架编译器(soapcpp2),WSDL解析器可以把WSDL文件解析成相应的C/C++的头文件(.h)主要用于Web Service客户端开发,存根和框架编译器根据头文件中函数定义生成存根和框架文件主要用于Web Service服务端开发,stdsoap2.c是运行时库文件,编译时必须包含该文件。本系统中嵌入式网关对外服务,所以只实现服务端程序。开发服端的应用程序的过程如图3所示。
开发服务端程序,用户定义一个C/C++头文件(.h),这个头文件包含服务函数的名称、输入/输出参数和相应的数据类型声明,声明的函数需要在相应的C/C++文件中实现。该头文件经gSoap编译器编译后,即可生成服务端端框架以及WSDL文件。获取传感器参数和控制设备的头文件如图4所示。
这个头文件定义了Web Service的基本属性:通信方式、文字编码、命名空间、服务地址、接口参数声明以及两个服务接口函数ns_sen sor、ns_device。
依据图定义的头文件,按照图服务端开发步骤系统Web服务的实现程序的主要代码如图5所示。
2)服务抽象层
服务抽象层屏蔽不同传感器和可控设备的细节,为gSoap网络接口层提供支持,如图6两个接口函数的具体实现方法就属于这一层。传感器数据来源可能来自数据库、其他进程、或者ZigBee网络等等,而实现一个设备动作(如帘幕收展)因为耗时较长需要创建新进程控制多个继电器协同工作。这就需要将抽象的查询和控制命令解析为具体的实现过程,当新增、修改指令时只需修改本层即可。
3)信息采集与控制层
信息采集和控制层主要完成具体的数据采集和控制过程。信息采集主要指通过ZigBee网络将模拟传感器的电流或电压值转换为数字值或按照通信协议获取数字传感器的测量值。控制主要指根据抽象层的设备控制命令完成具体设备的控制,如控制ZigBee板某个载继电器的闭合或者通过某个PWM接口控制步进电机运转。当有新的物理设备加入时,只需要修改本层代码即可。
2.4 视频监控
由于通用ARM处理器核心不包含DSP视频处理模块,因此如果通过软件实现视频编码及流化,实践表明一般只能实现较低帧率且较低分辨率的输出,画质较差,容易造成CPU占用率高、系统不稳定。如果加入IPC(网络摄像机)专业处理器会造硬件成本和软件研发成本巨大提高。近年来监控产品价格逐渐降低,选择成熟稳定的网络摄像机作为视频监控是较好的方案。网络摄像机一般会提供SDK(软件开发包)这使得视频开发快捷方便。
2.5 应用层
根据软件工程松耦合分层设计思想和农业生产需求额多样性,本系统中的应用层设计划分力应用服务子层、业务逻辑子层以及用户交互子层。每一层都抽象地定义各自的功能以及对外接口。这样每层都可以使用任何开发语言(如C#,Java等)独立地开发,层与层之间通过统一的接口进行通信,目前层与层通信采用了共享数据库数据以及进程间通信技术,避免系统某一层的改变影响其他层。
3 系统运行与测试
本系统已成功应用于江苏某农业科技示范园内的两座玻璃温室。位于办公区的服务器距离温室距离大于500米,通过无线网桥可以流畅的查看高清视频,观察植物生长状况。每个温室内包括DHT21温湿度传感器(单总线)、JTBQ-6光照传感器(电流输出)、S-100H二氧化碳传感器(电压输出),温室具有侧窗、天窗、保温幕等多种设备需要控制,ZigBee控制节点连
- 基于Web和硬件可重构技术的远程抄表设计(02-28)
- 吉时利为3700系列系统开关/万用表固件增加图形绘制工具包(05-24)
- 基于VRML的虚拟机房的设计与实现(06-07)
- 云计算与虚拟化的融合 (10-04)
- Web网络传感器的远程数据采集系统设计(07-07)
- 一种WLAN自动化测试平台的设计及实现(03-27)