快速、 準確地采集和監(jiān)控到工地上塔式起重機(簡稱塔機)的工作數據信息在建筑工程領域極為重要。但是, 由于受到現場環(huán)境的影響以及測量工具的限制, 明顯存在數據信息傳遞速度慢、 準確度低和補救措施實施慢等缺點, 很容易造成緊急事件處理的延誤。因此, 工作人員希望對塔機的工作數據進行更為方便的遠程監(jiān)控, 如基于通用分組無線服務技術(General Packet Radio Service, GPRS)、 網頁和個人計算機(Personal Computer, PC)客戶端的塔機監(jiān)控技術手段。然而這種監(jiān)控方式也讓工作人員的工作地點僅僅局限在辦公室等室內有計算機的地方。本文設計了一種基于 Android 操作系統的智能移動終端信息監(jiān)控系統, 充分利用手機的便利性, 只要能上網, 就能隨時隨地觀測到全國各地每臺塔機的工作數據。
1.監(jiān)控系統方案設計
便攜式塔機監(jiān)控系統基于硬件的數據采集功能,其工作步驟是:先將裝有傳感器的采集電路板采集到的各個數據信息(高度、 幅度、 角度和載重等)發(fā)送到處理器 ARM9 中;然后將這些數據從 ARM9 處理器通過串口發(fā)送到 GPRS 模塊, 通過這個模塊將數據發(fā)送到服務器的數據庫(MySQL)中;最后在網頁和 Android 操作系統界面上可以方便地觀測采集到的數據信息。便攜式塔機監(jiān)控系統的總體框架如圖 1 所示。
2.硬件基礎綜述
在便攜式塔機監(jiān)控系統中,硬件部分主要負責數據的采集和發(fā)送,其核心模塊包括:處理器模塊、各個參數的數據采集模塊和GPRS模塊。其中,處理器芯片采用三星公司精簡指令集微處理器(Advanced RISC Ma-chines, ARM9)系列中的S3C2440 微處理器,該芯片不僅能夠嵌入相關操作系統,對控制起到管理的作用,并且具有較高的工作頻率和獨立的硬件資源。
數據采集模塊市場上有很多種,基本原理都是利用傳感器來進行模擬/數字(A/D)轉換, 將采集到的模擬信號轉化成數字信號,發(fā)送給ARM9微處理器,對于這些傳感器的選擇,重點參考其性價比和精確度。
在整個監(jiān)控系統的硬件部分,GPRS模塊是最關鍵的,因為它決定著數據在網絡上傳輸的效率。本系統選擇西門子MC37i 雙頻GSM/GPRS模塊,它具有重量輕、功耗低等特點, 并且是目前市場上尺寸最小的雙頻GSM/GPRS模塊,其優(yōu)勢在于永久在線連接、快速數據存儲和更快的數據下載速度。在軟件方面,通過AT指令控制GPRS模塊MC37i。AT指令一般用于終端設備與PC應用之間的連接和通信,它是從終端設備或數據終端設備、向終端適配器或數據電路終端設備發(fā)送的。
此外,通過PPP協議實現GPRS模塊與GPRS網絡的連接,這種連接方式方便將來與 Internet相連并將數據發(fā)送到PC服務器端的數據庫MySQL中,這樣,既可以將數據庫中的數據在網站的顯示界面上監(jiān)控,也可以在 Android 操作系統平臺終端的界面上進行觀測。網頁上的監(jiān)控數據界面如圖2 所示,下面,針對后者各部分設計原理及流程進行詳細介紹。
要想實現本系統在 Android 操作系統平臺終端上的應用,總體上可分Web服務器端的架構搭建和Android 操作系統平臺客戶端應用軟件的設計。其中服務器端負責數據接收和存儲,客戶端軟件(即智能手機)負責信息的接收以及界面顯示。
3.服務器端設計
3.1 SSH 整合框架概念
塔機監(jiān)控系統中的服務器端Web 架構使用了SSH整合框架。所謂SSH整合框架就是:Web 層最成熟穩(wěn)定的技術Struts +業(yè)務層框架Spring+存取數據庫的解決方案Hibernate。本系統中SSH整合框架為:Hibernate +Struts2 +Spring,其中2指產品的版本代號。下面闡述各個框架的概念以及整合的特點。
(1)Hibernate 框架
Hibernate 是一個功能強大的開源對象關系映射(Object Relational Mapping,ORM)框架工具,允許開發(fā)者使用常見的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),以及將控制器與視圖分離,將應用程序分解為業(yè)務邏輯、控制邏輯和表現邏輯,降低了各邏輯層之間的耦合度,提高了應用程序的開發(fā)速度以及可維護性和可重用性。
本系統中用到的是Struts2框架,其代碼和Struts1的代碼并不兼容,包括的包文件和配置文件都不一樣,Struts1 的程序必須加以修改才能運行于Struts2 之下,可以認為它們是兩個不同的框架。與Struts1相比,Struts2 在Action類、線程模式、Servlet 依賴和可測性方面都有其獨特的優(yōu)點。
Struts2 的執(zhí)行流程為: Web 服務器啟動解析struts.xml、初始化消息文件和Action路徑映射等資源,初始化框架→用戶請求(.action)→Struts2過濾器使用對象工廠(Object Factory,可以是自帶或者是Spring 框架)創(chuàng)建 Action 類的示例→執(zhí)行輕量級的控制反轉(IOC)和攔截器(包括解析表單參數,文件上傳,將解析結果注入 Action 對象)→調用 Action 中用戶編寫的業(yè)務方法→根據返回的結果(Result)路徑轉向視圖層。
本文的返回結果設為Json列表格式,并且直接Android 終端(客戶端)的應用程序讀取。
(3)Spring 框架
Spring是基于企業(yè)間Java環(huán)境(Java 2 Enterprise Edition,J2EE)平臺上分層的應用程序框架。簡單來說,它是一個輕量級的控制反轉(IOC) 和面向切面(AOP)的容器框架。
首先,Spring 的IOC包括控制反轉和依賴注入??刂品崔D就是由容器來控制程序之間的(依賴)關系,而非傳統實現中,由程序代碼直接操控;依賴注入就是組件之間的依賴關系由容器在運行期決定,由容器將某種依賴關系動態(tài)地注入到組件之中。
其次,Spring就是其AOP應用。Spring 容器集成了TransactionTemplate 處理方式,它封裝了所有對事務處理的功能,包括異常時事務回滾、操作成功時的數據提交等復雜業(yè)務功能。這些功能都由Spring 容器來管理,大大減少了程序員的代碼量,也能對事務進行很好的管理和控制。
(4)SSH 框架的整合
在本系統開發(fā)中,Struts2、Spring 和Hibernate這三個開源框架在Web應用中各自的側重 點不同。Struts2主要側重把表現層和邏輯層分開;Spring 主要是對業(yè)務層的層次細化,即更深層次的降低耦合程度;Hibernate主要負責Java對象和關系數據庫之間的映射。SSH 整合框架正結合了這三個框架各自的特點及Web應用分層思想,并為Web 應用各層提供了相應的整合策略。Web應用中SSH整合框架的分層架構圖如圖3 所示。
3.2服務器系統設計
(1)數據庫設計
服務器系統中的數據庫使用的是 MySQL,用來存儲塔機監(jiān)控設備上的GPRS模塊發(fā)送過來的采集到的數據信息(載重、幅度和高度等),以及手機客戶端應用程序中需要顯示的關于設備的詳細信息(比如:所在省市、設備編號、日期時間,以及相應的文字圖片),這些信息都要顯示在網頁上和 Android 操作系統界面上,以便工作人員觀測。所以,有必要新建一個數據表格tower,并新增Id、city等字段來存放相應的數據,部分SQL代碼如下:
CREATE TABLE 'tower' ('Id' int(11) NOT NULL AUTO_INCREMENT,/ /設置表格Id的自增方式' province' varchar(20) DEFAULT NULL,/ /為tower創(chuàng)建province 屬性
'city' varchar(20) DEFAULT NULL,/ /創(chuàng)建 city 屬性— — —城市
'pic' varchar(20) DEFAULT NULL,/ /創(chuàng)建 pic 屬性— — —圖片
'dir' varchar(20) DEFAULT NULL,/ /創(chuàng)建 dir 屬性
PRIMARY KEY ('Id') / /將本表的 Id 作為主鍵) ENGINE = MyISAMAUTO_INCREMENT = 1 DEFAULT CHAR-SET = utf8/ /設置字符集編碼為utf8
(2)數據持久層設計
數據持久層是通過Hibernate框架來完成的。根據本文第(1)節(jié)中所闡述的數據庫表格 tower的設計,可以為MyEclipse 編譯環(huán)境的Web工程添加Hi-bernate功能來創(chuàng)建相應的配置文件hibernate.cfg.xml,然后配置連接數據庫和所操作實體類對應配置文件信息的
Hibernate參數,利用MyEclipse 的“反向工程技術”生成相應實體類和實體映射文件 tower.hbm.xml,此時,實體類和實體關系表一一對應,而實體映射文件描述了這種對應關系。
(3)業(yè)務層設計
業(yè)務層的設計主要是通過 Spring 框架來完成的。為了將控制層和業(yè)務層分開,又可將業(yè)務層分為Dao層、業(yè)務邏輯層以及Web層。Dao層完成對持久化對象的交互;業(yè)務邏輯層是以 Dao層為基礎,通過對Dao組件的調用,封裝完成業(yè)務邏輯層的工作;Web 層包括 MVC 模式中的控制層和表現層,采用Struts2 完成。因此,在本項目中通過在源代碼文件夾(src)中創(chuàng)建以下的“包類”來實現。
1)com.tower.action包中的 RiverAction.java類負責響應手機端發(fā)出的請求。該類繼承com.opensym-phony.xwork2.ActionSupport 類,這樣極大地簡化了Struts2 的Action 開發(fā)。
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公司開發(fā)的基于Linux開源的移動設備終端平臺,它包括操作系統、 用戶界面、中間件和應用程序,同時其開放性不存在任何以阻礙移動產業(yè)創(chuàng)新的專有權障礙。
首先,Android的操作系統架構采用了分層的形式其架構圖如圖4所示。從圖4所示可以看出,Android操作系統分為四層,從高層到低層分別是應用程序層、應用程序框架層、 系統運行庫層和Linux 核心層。
其次,Android 操作系統應用極為廣泛,它的優(yōu)點如下。1)其簡單性使得軟件解決方案很容易找到并實施,為開源軟件開發(fā)人員提供方便的框架和平臺。2)其開放性讓軟件本身的靈活性比專有軟件產品具有更大的自由和個性化。3)Android操作系統由Google 公司主導研發(fā),應用方面擁有其他系統無可比擬的優(yōu)勢。用戶在使用 Android 的在線軟件時,可以與本系統在計算機上使用的Google服務進行真正的無縫連接,實現Google服務的完全同步。
Android操作系統中建立的是Android SDK + Java JDK 6 + Eclipse 3.5的開發(fā)環(huán)境,該環(huán)境是基于Android 2.3.3版本的模擬器開發(fā)的。
2數據監(jiān)控應用開發(fā)
(1)客戶端應用結構
手機客戶端應用程序的操作主要包括刷新設備列表和查看設備參數兩個步驟, 這兩個步驟都通過源代碼中的三類(客戶端工具類、 實體類和界面相關類)來實現, 客戶端應用程序結構圖如圖 5 所示。
Y7KLEPW@~T)M9U8~JEZWUA3.jpg
(2)客戶端操作流程
用戶使用 Android 操作系統極其簡單, 運行軟件后進入設備選擇的主界面, 在主界面可以看到最上面一欄有四個圖標, 分別代表四類屬性的設備, 即關注設備、 江蘇設備、 安徽設備和浙江設備, 然后根據用戶所要監(jiān)控設備所在的屬性/城市點擊相應的圖標, 將其所對應的參數 “type” 發(fā)送給服務器端, 并讀取服務器返回的數據列表(格式為 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);……/ /在此設置塔機設備參數并添加到列表中}
由于屏幕空間問題, 在列表中只列出了設備的地址和編號, 所以, 在每條列表條目上設置了監(jiān)聽器來跳轉到另一個 Activity 界面, 查看相應設備的詳細信息, 跳轉代碼如下:tripListView. set. OnItemClickListener(new OnItemClickListener()) / /設置監(jiān)聽器代碼
用戶進入設備列表后, 點擊列表中的設備即可觀測到相應設備的詳細信息, 設備詳細信息畫面如圖 6b 所示。此時已經將設備采集到的即時數據全部快速、 準確地顯示在手機上, 并且每次刷新都能重新獲取最新數據。塔機監(jiān)控系統手機顯示畫面如圖6 所示。 mani? ?<??[ z="" an="" style="mso-bidi-font-size:14px">Google公司開發(fā)的基于Linux開源的移動設備終端平臺,它包括操作系統、 用戶界面、中間件和應用程序,同時其開放性不存在任何以阻礙移動產業(yè)創(chuàng)新的專有權障礙。
首先,Android的操作系統架構采用了分層的形式其架構圖如圖4所示。從圖4所示可以看出,Android操作系統分為四層,從高層到低層分別是應用程序層、應用程序框架層、 系統運行庫層和Linux 核心層。
其次,Android 操作系統應用極為廣泛,它的優(yōu)點如下。1)其簡單性使得軟件解決方案很容易找到并實施,為開源軟件開發(fā)人員提供方便的框架和平臺。2)其開放性讓軟件本身的靈活性比專有軟件產品具有更大的自由和個性化。3)Android操作系統由Google 公司主導研發(fā),應用方面擁有其他系統無可比擬的優(yōu)勢。用戶在使用 Android 的在線軟件時,可以與本系統在計算機上使用的Google服務進行真正的無縫連接,實現Google服務的完全同步。
(3)報警通知
報警是便攜式塔機監(jiān)控系統的一個重要組成部分, 及時報警可以幫助工作人員及時了解塔機設備現場的狀況?,F有技術中經常會用到蜂鳴器報警, 但是, 如果有了手機監(jiān)控的加入, 可以添加手機短信報警功能(短信是通過硬件系統中的 GPRS 芯片 MC37i發(fā)送), 通過短信報警實現負責人不在現場也能及時提示工作人員對系統進行修復, 起到了多重監(jiān)督的作用, 防止對設備造成損壞以及不堪的后果。
報警短信程序如下:
if(WEIGHTH > 6000. 00 | | HEIGHTH > 120. 00 | | RANGE >50. 00 | | ANGLE > 120. 00 | | LIJU > 300000. 00 ){beep(…) ;sentsms (…);}elseendif