快速、 准确地采集和监控到工地上塔式起重机(简称塔机)的工作数据信息在建筑工程领域极为重要。但是, 由于受到现场环境的影响以及测量工具的限制, 明显存在数据信息传递速度慢、 准确度低和补救措施实施慢等缺点, 很容易造成紧急事件处理的延误。因此, 工作人员希望对塔机的工作数据进行更为方便的远程监控, 如基于通用分组无线服务技术(General Packet Radio Service, GPRS)、 网页和个人计算机(Personal Computer, PC)客户端的塔机监控技术手段。然而这种监控方式也让工作人员的工作地点仅仅局限在办公室等室内有计算机的地方。本文设计了一种基于 Android 操作系统的智能移动终端信息监控系统, 充分利用手机的便利性, 只要能上网, 就能随时随地观测到全国各地每台塔机的工作数据。
1.监控系统方案设计
便携式塔机监控系统基于硬件的数据采集功能,其工作步骤是:先将装有传感器的采集电路板采集到的各个数据信息(高度、 幅度、 角度和载重等)发送到处理器 ARM9 中;然后将这些数据从 ARM9 处理器通过串口发送到 GPRS 模块, 通过这个模块将数据发送到服务器的数据库(MySQL)中;最后在网页和 Android 操作系统界面上可以方便地观测采集到的数据信息。便携式塔机监控系统的总体框架如图 1 所示。
2.硬件基础综述
在便携式塔机监控系统中,硬件部分主要负责数据的采集和发送,其核心模块包括:处理器模块、各个参数的数据采集模块和GPRS模块。其中,处理器芯片采用三星公司精简指令集微处理器(Advanced RISC Ma-chines, ARM9)系列中的S3C2440 微处理器,该芯片不仅能够嵌入相关操作系统,对控制起到管理的作用,并且具有较高的工作频率和独立的硬件资源。
数据采集模块市场上有很多种,基本原理都是利用传感器来进行模拟/数字(A/D)转换, 将采集到的模拟信号转化成数字信号,发送给ARM9微处理器,对于这些传感器的选择,重点参考其性价比和精确度。
在整个监控系统的硬件部分,GPRS模块是最关键的,因为它决定着数据在网络上传输的效率。本系统选择西门子MC37i 双频GSM/GPRS模块,它具有重量轻、功耗低等特点, 并且是目前市场上尺寸最小的双频GSM/GPRS模块,其优势在于永久在线连接、快速数据存储和更快的数据下载速度。在软件方面,通过AT指令控制GPRS模块MC37i。AT指令一般用于终端设备与PC应用之间的连接和通信,它是从终端设备或数据终端设备、向终端适配器或数据电路终端设备发送的。
此外,通过PPP协议实现GPRS模块与GPRS网络的连接,这种连接方式方便将来与 Internet相连并将数据发送到PC服务器端的数据库MySQL中,这样,既可以将数据库中的数据在网站的显示界面上监控,也可以在 Android 操作系统平台终端的界面上进行观测。网页上的监控数据界面如图2 所示,下面,针对后者各部分设计原理及流程进行详细介绍。
要想实现本系统在 Android 操作系统平台终端上的应用,总体上可分Web服务器端的架构搭建和Android 操作系统平台客户端应用软件的设计。其中服务器端负责数据接收和存储,客户端软件(即智能手机)负责信息的接收以及界面显示。
3.服务器端设计
3.1 SSH 整合框架概念
塔机监控系统中的服务器端Web 架构使用了SSH整合框架。所谓SSH整合框架就是:Web 层最成熟稳定的技术Struts +业务层框架Spring+存取数据库的解决方案Hibernate。本系统中SSH整合框架为:Hibernate +Struts2 +Spring,其中2指产品的版本代号。下面阐述各个框架的概念以及整合的特点。
(1)Hibernate 框架
Hibernate 是一个功能强大的开源对象关系映射(Object Relational Mapping,ORM)框架工具,允许开发者使用常见的Java 语言特性实现对象模型到关系数据库的映射,它利用反射机制在运行时实现持久化一个对象的各种操作,保证了源码的简练和完全地面向对象风格。同时,Hibernate也是一个非常流行的、开源的、易于配置和运行的且基于 Java 数据库连接标准(Java DataBase Connectivity Standard,JDBC)的对象- 关系映射(JORM)引擎,支持 Oracle、DB2、SQL Server 和MySQL 等主流数据库系统。此外,Hibernate可以用在任何需要将Java对象和数据库表格中的数据进行操作的Java应用中。
Hibernate包括两类配置文件。第一类配置文件为hibernate.cfg.xml。在服务器启动时,Hibernate 查询第一类配置文件里面的属性来进行操作,例如数据库连接字符串和密码第二类配置文件是映射描述文件(文件扩展名为* . hbm. xml),它将告诉 Hibernate如何将特定的Java类和一个或者多个数据库表格中的数据进行映射。
(2)Struts2 框架
Struts 是基于MVC(Model,View,Controller)体系结构的Web应用程序框架,MVC设计模式由模型(M)、视图(V)和控制器(C)三部分组成。Struts 最大的用途就是自动获取表单参数(FormBean),以及将控制器与视图分离,将应用程序分解为业务逻辑、控制逻辑和表现逻辑,降低了各逻辑层之间的耦合度,提高了应用程序的开发速度以及可维护性和可重用性。
本系统中用到的是Struts2框架,其代码和Struts1的代码并不兼容,包括的包文件和配置文件都不一样,Struts1 的程序必须加以修改才能运行于Struts2 之下,可以认为它们是两个不同的框架。与Struts1相比,Struts2 在Action类、线程模式、Servlet 依赖和可测性方面都有其独特的优点。
Struts2 的执行流程为: Web 服务器启动解析struts.xml、初始化消息文件和Action路径映射等资源,初始化框架→用户请求(.action)→Struts2过滤器使用对象工厂(Object Factory,可以是自带或者是Spring 框架)创建 Action 类的示例→执行轻量级的控制反转(IOC)和拦截器(包括解析表单参数,文件上传,将解析结果注入 Action 对象)→调用 Action 中用户编写的业务方法→根据返回的结果(Result)路径转向视图层。
本文的返回结果设为Json列表格式,并且直接Android 终端(客户端)的应用程序读取。
(3)Spring 框架
Spring是基于企业间Java环境(Java 2 Enterprise Edition,J2EE)平台上分层的应用程序框架。简单来说,它是一个轻量级的控制反转(IOC) 和面向切面(AOP)的容器框架。
首先,Spring 的IOC包括控制反转和依赖注入。控制反转就是由容器来控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控;依赖注入就是组件之间的依赖关系由容器在运行期决定,由容器将某种依赖关系动态地注入到组件之中。
其次,Spring就是其AOP应用。Spring 容器集成了TransactionTemplate 处理方式,它封装了所有对事务处理的功能,包括异常时事务回滚、操作成功时的数据提交等复杂业务功能。这些功能都由Spring 容器来管理,大大减少了程序员的代码量,也能对事务进行很好的管理和控制。
(4)SSH 框架的整合
在本系统开发中,Struts2、Spring 和Hibernate这三个开源框架在Web应用中各自的侧重 点不同。Struts2主要侧重把表现层和逻辑层分开;Spring 主要是对业务层的层次细化,即更深层次的降低耦合程度;Hibernate主要负责Java对象和关系数据库之间的映射。SSH 整合框架正结合了这三个框架各自的特点及Web应用分层思想,并为Web 应用各层提供了相应的整合策略。Web应用中SSH整合框架的分层架构图如图3 所示。
3.2服务器系统设计
(1)数据库设计
服务器系统中的数据库使用的是 MySQL,用来存储塔机监控设备上的GPRS模块发送过来的采集到的数据信息(载重、幅度和高度等),以及手机客户端应用程序中需要显示的关于设备的详细信息(比如:所在省市、设备编号、日期时间,以及相应的文字图片),这些信息都要显示在网页上和 Android 操作系统界面上,以便工作人员观测。所以,有必要新建一个数据表格tower,并新增Id、city等字段来存放相应的数据,部分SQL代码如下:
CREATE TABLE 'tower' ('Id' int(11) NOT NULL AUTO_INCREMENT,/ /设置表格Id的自增方式' province' varchar(20) DEFAULT NULL,/ /为tower创建province 属性
'city' varchar(20) DEFAULT NULL,/ /创建 city 属性— — —城市
'pic' varchar(20) DEFAULT NULL,/ /创建 pic 属性— — —图片
'dir' varchar(20) DEFAULT NULL,/ /创建 dir 属性
PRIMARY KEY ('Id') / /将本表的 Id 作为主键) ENGINE = MyISAMAUTO_INCREMENT = 1 DEFAULT CHAR-SET = utf8/ /设置字符集编码为utf8
(2)数据持久层设计
数据持久层是通过Hibernate框架来完成的。根据本文第(1)节中所阐述的数据库表格 tower的设计,可以为MyEclipse 编译环境的Web工程添加Hi-bernate功能来创建相应的配置文件hibernate.cfg.xml,然后配置连接数据库和所操作实体类对应配置文件信息的
Hibernate参数,利用MyEclipse 的“反向工程技术”生成相应实体类和实体映射文件 tower.hbm.xml,此时,实体类和实体关系表一一对应,而实体映射文件描述了这种对应关系。
(3)业务层设计
业务层的设计主要是通过 Spring 框架来完成的。为了将控制层和业务层分开,又可将业务层分为Dao层、业务逻辑层以及Web层。Dao层完成对持久化对象的交互;业务逻辑层是以 Dao层为基础,通过对Dao组件的调用,封装完成业务逻辑层的工作;Web 层包括 MVC 模式中的控制层和表现层,采用Struts2 完成。因此,在本项目中通过在源代码文件夹(src)中创建以下的“包类”来实现。
1)com.tower.action包中的 RiverAction.java类负责响应手机端发出的请求。该类继承com.opensym-phony.xwork2.ActionSupport 类,这样极大地简化了Struts2 的Action 开发。
2)com.twoer.biz 包中的TowerBiz.java负责处理获取“关注设备”的列表方法 getTowerImpList()以及获取各省份分类设备列表 getTowerListByType()。
3) com.twoer.dao包中的TowerDAO.java负责编写数据处理的方法,由TowerBiz.java 获取。
4)在 web.xml和struts.xml这两个配置文件中分别设置Struts2的过滤器和返回Json 格式列表:
<action name = " towerAction" class = " com.twoer.action.TowerAc-tion"><result type = "json" /></action>
4.Android 客户端应用设计
1.Android 操作系统
Android 是Google公司开发的基于Linux开源的移动设备终端平台,它包括操作系统、 用户界面、中间件和应用程序,同时其开放性不存在任何以阻碍移动产业创新的专有权障碍。
首先,Android的操作系统架构采用了分层的形式其架构图如图4所示。从图4所示可以看出,Android操作系统分为四层,从高层到低层分别是应用程序层、应用程序框架层、 系统运行库层和Linux 核心层。
其次,Android 操作系统应用极为广泛,它的优点如下。1)其简单性使得软件解决方案很容易找到并实施,为开源软件开发人员提供方便的框架和平台。2)其开放性让软件本身的灵活性比专有软件产品具有更大的自由和个性化。3)Android操作系统由Google 公司主导研发,应用方面拥有其他系统无可比拟的优势。用户在使用 Android 的在线软件时,可以与本系统在计算机上使用的Google服务进行真正的无缝连接,实现Google服务的完全同步。
Android操作系统中建立的是Android SDK + Java JDK 6 + Eclipse 3.5的开发环境,该环境是基于Android 2.3.3版本的模拟器开发的。
2数据监控应用开发
(1)客户端应用结构
手机客户端应用程序的操作主要包括刷新设备列表和查看设备参数两个步骤, 这两个步骤都通过源代码中的三类(客户端工具类、 实体类和界面相关类)来实现, 客户端应用程序结构图如图 5 所示。
Y7KLEPW@~T)M9U8~JEZWUA3.jpg
(2)客户端操作流程
用户使用 Android 操作系统极其简单, 运行软件后进入设备选择的主界面, 在主界面可以看到最上面一栏有四个图标, 分别代表四类属性的设备, 即关注设备、 江苏设备、 安徽设备和浙江设备, 然后根据用户所要监控设备所在的属性/城市点击相应的图标, 将其所对应的参数 “type” 发送给服务器端, 并读取服务器返回的数据列表(格式为 Json 列表), 在 Activity 界面中显示, 设备列表画面如图6a 所示。读取 Json 列表这部分代码在工具类 ConnetWeb. java 中实现。Json 列表部分代码如下:
String str = connWeb(url);/ /根据请求的地址参数 url 获取返回结果
JSONObject job = new JSONObject(str);/ /转换 JsonObject 对象
JSONArray jay = job. getJSONArray ( " sblist");/ /获取 JsonArray对象
for (int i = 0;i < jay. length();i + = 1) {JSONObject temp = (JSONObject) jay. get(i);……/ /在此设置塔机设备参数并添加到列表中}
由于屏幕空间问题, 在列表中只列出了设备的地址和编号, 所以, 在每条列表条目上设置了监听器来跳转到另一个 Activity 界面, 查看相应设备的详细信息, 跳转代码如下:tripListView. set. OnItemClickListener(new OnItemClickListener()) / /设置监听器代码
用户进入设备列表后, 点击列表中的设备即可观测到相应设备的详细信息, 设备详细信息画面如图 6b 所示。此时已经将设备采集到的即时数据全部快速、 准确地显示在手机上, 并且每次刷新都能重新获取最新数据。塔机监控系统手机显示画面如图6 所示。 mani� �<��[ z="" an="" style="mso-bidi-font-size:14px">Google公司开发的基于Linux开源的移动设备终端平台,它包括操作系统、 用户界面、中间件和应用程序,同时其开放性不存在任何以阻碍移动产业创新的专有权障碍。
首先,Android的操作系统架构采用了分层的形式其架构图如图4所示。从图4所示可以看出,Android操作系统分为四层,从高层到低层分别是应用程序层、应用程序框架层、 系统运行库层和Linux 核心层。
其次,Android 操作系统应用极为广泛,它的优点如下。1)其简单性使得软件解决方案很容易找到并实施,为开源软件开发人员提供方便的框架和平台。2)其开放性让软件本身的灵活性比专有软件产品具有更大的自由和个性化。3)Android操作系统由Google 公司主导研发,应用方面拥有其他系统无可比拟的优势。用户在使用 Android 的在线软件时,可以与本系统在计算机上使用的Google服务进行真正的无缝连接,实现Google服务的完全同步。
(3)报警通知
报警是便携式塔机监控系统的一个重要组成部分, 及时报警可以帮助工作人员及时了解塔机设备现场的状况。现有技术中经常会用到蜂鸣器报警, 但是, 如果有了手机监控的加入, 可以添加手机短信报警功能(短信是通过硬件系统中的 GPRS 芯片 MC37i发送), 通过短信报警实现负责人不在现场也能及时提示工作人员对系统进行修复, 起到了多重监督的作用, 防止对设备造成损坏以及不堪的后果。
报警短信程序如下:
if(WEIGHTH > 6000. 00 | | HEIGHTH > 120. 00 | | RANGE >50. 00 | | ANGLE > 120. 00 | | LIJU > 300000. 00 ){beep(…) ;sentsms (…);}elseendif