?

基于Web 的貨車檢修工序監測系統的研制

2012-08-16 08:03丁振凡王小明鄧建明邱新亮
華東交通大學學報 2012年5期
關鍵詞:手持機串口消息

丁振凡,王小明,鄧建明,邱新亮

(1.華東交通大學,江西南昌330013;2.南昌鐵路局,江西南昌330001)

隨著Web應用的普及,基于Web的監控應用越來越廣泛[1-2]。由于工業數據的實時變化特點,客戶瀏覽器要求能及時跟蹤顯示數據的變化。為了實現瀏覽器界面中內容的動態更新,研究者提出了各種辦法,總體上分為拉方式和推方式兩種,推方式采用Java Applet技術,用Socket通信接收數據[3],要求客戶方有一個消息接收線程等待服務器將變化數據推送過來。近年來,出現了富客戶端技術Flex,可通過消息服務技術實現實時監控[4]。拉方式有的采用ActiveX控件實現數據通信和顯示處理[5],近年來流行用客戶端的AJAX技術[6-7],利用AJAX結合VML是實現Web圖形化監控的一種方法[8]。本文采用AJAX實現Web頁面對鐵路貨車的檢修進程的實時監測。從而可以讓管理員及時了解各道維護臺上的工序進展[9],對工序超時情況能及時報警。監測過程的數據自動記錄到數據庫中,可容易進行各類統計分析和產生報表。

1 系統功能和基本構成

系統的功能主要在于通過Web頁面實時監測工地上的各工序進展。具體有:

1)車道各臺位工作進展監測:監視分布在各車道上的工序工作狀態;

2)工序完成輛份的數量及當前狀態監測:監視各個工序的當前完成維修輛份以及工序的當前狀態,用不同圖標指示;

3)超時報警消息的查閱:查詢記錄在數據庫中的報警信息;

4)所有各個工序的功效統計直方圖:以直方圖的形式顯示當天各工序的功效;

5)當天已維修車型數量的統計直方圖:按車型分類統計給出已維修數量的統計圖;

6)當天各臺位的維修任務及限時設置:設置各臺位要維修的車型及數量,以及工序完成一個輛份的超時時間限制。

系統的基本構成如圖1所示。通過Web服務器串口連接的無線通信模塊與手持機進行通信,監管人員通過瀏覽器界面對工地上6個車道30個工序的維修人員的工作狀態進行監控。

圖1 系統的基本組成Fig.1 The basic structure of the system

2 系統設計

系統采用拉方式進行工作。首先,Web服務端與手持機之間是采用串口通信,服務器的通信線程通過發送輪詢信息給手持機來查詢每個工序的工作進展。將所有手持機用戶的工序當前狀態信息用Current?Status類的靜態屬性保存,同時寫入數據庫進行登記。其次,客戶瀏覽器與Web服務器的通信也是采用定時詢問方式,客戶方通過AJAX定時發送XMLhttp訪問請求,根據服務器返回的JSON消息更新頁面上的顯示,從而實現對遠端所有手持機用戶工序狀態的動態監控。

圖2 系統的軟件模塊結構Fig.2 System software module structure

以下就Web服務器器端的主要模塊進行簡要說明:

1)串口通信線程(commService):負責與串口的連接和循環發送輪詢消息。并將接收的消息送消息緩沖區。

2)消息緩沖區(messageBuffer):實現消息的封裝及處理。其中包括兩個重要的方法,getMessage()方法從消息緩沖區取消息并進行處理;setMessage(String mess)方法將消息送消息緩沖區;由于該類的方法是由線程調用,所以涉及同步處理和對消息隊列的加鎖訪問控制。往消息緩沖區寫入消息由串口通信線程在收到一個完整消息后調用。

3)消息分析處理線程(messageMointor):專門接受處理消息隊列中消息的線程。它將循環讀取消息緩沖區的消息。它將調用messageBuffer類的getMessage()方法對消息進行分析處理,根據消息內容分析更新系統的狀態和進行數據庫登記處理。

4)系統工作狀態(CurrentStatus):引入若干Map對象記錄系統的狀態信息。系統的工作信息將記錄到數據庫中,同時,為了提高系統的工作效率,通過CurrentStatus類定義靜態屬性記錄系統的當前工作狀態信息。例如:

Map<Integer,Platform> alltw:所有臺位的工作信息;

Map<Integer,myPos> allgx:所有工序的工作信息;

其中,myPos記錄工序的屬性和訪問方法,主要屬性有工序編號、所在臺位、狀態信息、完成輛份數量、開工時間、單元開工時間等,Platform記錄臺位的屬性和訪問方法。

5)MVC控制器(monitorController):實現要監控信息的數據提取的處理邏輯,接受客戶瀏覽器的訪問請求,用Google的Gson工具將結果包裝為Json串格式返回給請求者。

6)數據庫訪問處理(repairlog):實現業務數據的記錄處理,以便為數據統計和數據查詢服務。利用Jd?bcTemplate實現數據庫的訪問處理,利用Spring IOC實現Bean的數據源連接的注入。

7)任務定時(TaskService):借助Spring的基于注解的任務定時調度功能規劃系統的工作時間,及時地完成每天的初始準備和收尾工作。

3 關鍵技術處理

3.1 用AJAX間隔訪問Web服務實現動態監測

3.1.1 用Spring實現REST風格的Web服務

在Web服務端,用Spring編程實現REST風格的Web服務。以工序監控為例,客戶方發送訪問請求后,Web服務端將返回各工序進展的信息作為響應。由于Web服務與瀏覽器之間不能直接傳遞對象,必須采用特殊手段進行包裝處理。常用包裝形式有XML和Json[10],Json是一種易于被JavaScript解析的對象消息格式,系統利用Google提供的Gson對象的toJson方法進行轉換[11]。以下控制器代碼將存儲所有工序的集合對象轉換為Json字符串。

myPos為一個封裝工序當前狀態信息的類,其中含有工序的編號、開工時間、當前所在臺位、工程進展狀態等信息。通過CurrentStatus類的靜態屬性記錄有各工序的狀態信息。值得注意的是,由于響應消息是將字符串返回給客戶方,需設置http響應頭內容格式為text/plain。

3.1.2 瀏覽器頁面通過AJAX實現工序進展的動態監視

系統通過各種顏色的圖片來表示工序的狀態,對頁面上的顯示元素進行有序的標識,以便程序中能循環處理。通過AJAX技術實現內容顯示的實時變化[12]。以下為工序進展及狀態查詢的Javascript腳本函數代碼,通過Javascript的setTimeout方法實現定時間隔執行,讓initProcess方法每隔2秒執行1次,從而完成對服務器數據的輪詢訪問。在initProcess方法內,首先,通過XMLHttpRequest對象發送URL訪問請求,通過XMLHttpRequest對象的responseText屬性得到服務端的響應消息。然后,調用JavaScript的eval函數將服務器返回的JSON文本轉化為對象形式。最后,根據對象數據項的值,利用DHTML技術更改頁面元素的HT?ML內容,從而實現對相關對象的實時監測顯示[12]。

圖3為系統的工序監控界面。每個工序的當前狀態通過不同顏色的圖標指示。工序完成的檢修數量通過數字顯示。

圖3 監視工序的狀態及進展Fig.3 The process status and progress monitoring

3.2 利用Spring任務定時控制線程的工作

為了讓系統在非工作時間處于“休息狀態”,尤其是通信線程,在休息時間發送輪詢信號是沒有意義的。有必要對系統的線程和工作狀態進行特殊處理。Spring的任務調度為應用系統中特定任務的執行安排提供了有效的支持。Spring的TaskScheduler可通過@Scheduled注解進行定義,其任務施加執行對象可以是任何一個方法,給任務編寫提供了很大方便。注解中通過cron參數指定任務執行的時間點。以下為每天6點啟動消息接收線程的實現代碼:

值得一提的是,Spring的任務定時要用到AOP(面向切面編程)的功能,因此,要在應用工程的類路徑中引入aopalliance.jar包。

3.3 利用移動通信技術實現手持機與主機的通信

Web服務器方通過Java串口編程與手持機通信。移動通信模塊連接在串口上,實現無線信號和串口數據的轉換,因此,實際的數據通信變成串口通信。在手持機端用戶界面簡單,用戶通過點擊按鈕發送自己的狀態進展消息,向主機報告在哪個臺位完成了一份維修任務。

3.3.1 主機與手持機的消息交換

主機采用輪詢機制詢問每個工序和檢測道的工作狀態信息。監管人員在完成一道工序后將發送信號給主機。主機每次在輪詢一個手持機時發送“ask,手持機號”的消息。只有匹配編號的手持機才給予應答。

手持機沒應答,主機在超時后,將自動詢問下一手持機,如此循環往復。手持機發送信號反饋工序和車道的工作狀態。手持機的應答消息中包括:消息識別碼,工序或車道號,工作進程,所在臺位等。

通信消息的設計與處理是項目較為復雜部分,在消息接受處理過程中涉及各類狀態變量的改變和數據記錄登記,如:工序的開工時間、超時等信息取決于對收到消息的分析處理。這里消息分:車道新批開始、工序進展消息、工序請求關機等。

3.3.2 服務器端的Java串行通信編程

服務器端的串口通信線程從串口接收數據,將數據放入消息緩存。消息處理線程在緩存中有消息時將從wait中醒來,然后讀取消息進行解析處理。服務端采用Java Comm工具包實現對串口通信的編程處理[13]。Java串口通信的基本過程是:①裝載驅動程序;②打開串口,進行串口的初始化;③通過串口的輸入輸出流實現數據讀寫訪問。串口通信編程處理的難點是保持通信雙方收發消息的同步,數據消息格式的設計與多線程規劃是提高通信處理效率的關鍵。本系統采用的無線傳輸,在通信距離遠時還需要添加中繼進行轉發。

4 結束語

系統通過手持機與主機之間的無線通信收集工地操作員發送的工序進展信息。利用AJAX技術實現與Web服務器的通信及頁面內容的動態顯示。管理人員可以通過Web界面對工地的維修進展進行實時監測,對各道工序的工作狀態能進行記錄、報警和統計。該系統的設計思路也可用于其他類似的Web遠程監控系統中。

[1]呂海東,高際邦.基于DWR反向AJAX的Web監控系統[J].微型機與應用,2010,29(13):60-62.

[2]徐永晉,陶萬強.基于Web的智能居家生活系統監控軟件關鍵技術及實現[J].儀表技術,2010(3):11-13.

[3]范云芝,陳樹平.利用Socket實現基于Web的遠程監測系統[J].陜西工學院學報,2005,21(1):53-55.

[4]趙振華,廉東本.基于Flex的WebGIS框架的研究與應用[J].計算機系統應用,2011(11):146-149.

[5]熊亮,張鍇.一種新型接觸網開關綜合監控系統的設計與實現[J].華東交通大學學報,2012,29(4):86-91.

[6]丁振凡.AJAX技術在網絡考試分析中的應用[J].華東交通大學學報,2007,24(5):74-76.

[7]張曼琳,顧容,徐夢.基于Ajax技術的高校在線考試系統的設計與實現[J].中國教育信息化,2012(5):44-48.

[8]丁振凡.利用AJAX結合VML實現Web圖形化監控[J].電腦編程技巧與維護,2012(12):84-85.

[9]竇慧東.鐵路貨車輪對檢修工序控制系統[D].西南交通大學,2005:5-6.

[10]丁振凡.基于AJAX結合Spring MVC的信息訪問服務模式研究[J].計算機時代,2012(6):25-29.

[11]丁振凡.Spring REST風格Web服務的Json消息封裝及解析研究[J].智能計算機與應用,2012,2(2):9-11.

[12]丁振凡.Web編程實踐教程[M].北京:清華大學出版社,2011.

[13]丁振凡,王小明,鄧建明,等.基于Java的串口通信應用編程[J].微型機與應用,2012,31(13):84-86.

猜你喜歡
手持機串口消息
淺談AB PLC串口跟RFID傳感器的通訊應用
一張圖看5G消息
基于WIA—PA的無線手持機設計
從拿手機 的姿勢看你是怎樣的人
北斗高精度手持機在航測外業中的應用
數字電源內部數據傳輸的串口通信方法實現
USB接口的多串口數據并行接收方法探索
基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
消息
消息
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合