国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Web 的貨車檢修工序監(jiān)測(cè)系統(tǒng)的研制

2012-08-16 08:03:20丁振凡王小明鄧建明邱新亮
關(guān)鍵詞:手持機(jī)串口消息

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

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

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

1 系統(tǒng)功能和基本構(gòu)成

系統(tǒng)的功能主要在于通過Web頁面實(shí)時(shí)監(jiān)測(cè)工地上的各工序進(jìn)展。具體有:

1)車道各臺(tái)位工作進(jìn)展監(jiān)測(cè):監(jiān)視分布在各車道上的工序工作狀態(tài);

2)工序完成輛份的數(shù)量及當(dāng)前狀態(tài)監(jiān)測(cè):監(jiān)視各個(gè)工序的當(dāng)前完成維修輛份以及工序的當(dāng)前狀態(tài),用不同圖標(biāo)指示;

3)超時(shí)報(bào)警消息的查閱:查詢記錄在數(shù)據(jù)庫中的報(bào)警信息;

4)所有各個(gè)工序的功效統(tǒng)計(jì)直方圖:以直方圖的形式顯示當(dāng)天各工序的功效;

5)當(dāng)天已維修車型數(shù)量的統(tǒng)計(jì)直方圖:按車型分類統(tǒng)計(jì)給出已維修數(shù)量的統(tǒng)計(jì)圖;

6)當(dāng)天各臺(tái)位的維修任務(wù)及限時(shí)設(shè)置:設(shè)置各臺(tái)位要維修的車型及數(shù)量,以及工序完成一個(gè)輛份的超時(shí)時(shí)間限制。

系統(tǒng)的基本構(gòu)成如圖1所示。通過Web服務(wù)器串口連接的無線通信模塊與手持機(jī)進(jìn)行通信,監(jiān)管人員通過瀏覽器界面對(duì)工地上6個(gè)車道30個(gè)工序的維修人員的工作狀態(tài)進(jìn)行監(jiān)控。

圖1 系統(tǒng)的基本組成Fig.1 The basic structure of the system

2 系統(tǒng)設(shè)計(jì)

系統(tǒng)采用拉方式進(jìn)行工作。首先,Web服務(wù)端與手持機(jī)之間是采用串口通信,服務(wù)器的通信線程通過發(fā)送輪詢信息給手持機(jī)來查詢每個(gè)工序的工作進(jìn)展。將所有手持機(jī)用戶的工序當(dāng)前狀態(tài)信息用Current?Status類的靜態(tài)屬性保存,同時(shí)寫入數(shù)據(jù)庫進(jìn)行登記。其次,客戶瀏覽器與Web服務(wù)器的通信也是采用定時(shí)詢問方式,客戶方通過AJAX定時(shí)發(fā)送XMLhttp訪問請(qǐng)求,根據(jù)服務(wù)器返回的JSON消息更新頁面上的顯示,從而實(shí)現(xiàn)對(duì)遠(yuǎn)端所有手持機(jī)用戶工序狀態(tài)的動(dòng)態(tài)監(jiān)控。

圖2 系統(tǒng)的軟件模塊結(jié)構(gòu)Fig.2 System software module structure

以下就Web服務(wù)器器端的主要模塊進(jìn)行簡(jiǎn)要說明:

1)串口通信線程(commService):負(fù)責(zé)與串口的連接和循環(huán)發(fā)送輪詢消息。并將接收的消息送消息緩沖區(qū)。

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

3)消息分析處理線程(messageMointor):專門接受處理消息隊(duì)列中消息的線程。它將循環(huán)讀取消息緩沖區(qū)的消息。它將調(diào)用messageBuffer類的getMessage()方法對(duì)消息進(jìn)行分析處理,根據(jù)消息內(nèi)容分析更新系統(tǒng)的狀態(tài)和進(jìn)行數(shù)據(jù)庫登記處理。

4)系統(tǒng)工作狀態(tài)(CurrentStatus):引入若干Map對(duì)象記錄系統(tǒng)的狀態(tài)信息。系統(tǒng)的工作信息將記錄到數(shù)據(jù)庫中,同時(shí),為了提高系統(tǒng)的工作效率,通過CurrentStatus類定義靜態(tài)屬性記錄系統(tǒng)的當(dāng)前工作狀態(tài)信息。例如:

Map<Integer,Platform> alltw:所有臺(tái)位的工作信息;

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

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

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

6)數(shù)據(jù)庫訪問處理(repairlog):實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的記錄處理,以便為數(shù)據(jù)統(tǒng)計(jì)和數(shù)據(jù)查詢服務(wù)。利用Jd?bcTemplate實(shí)現(xiàn)數(shù)據(jù)庫的訪問處理,利用Spring IOC實(shí)現(xiàn)Bean的數(shù)據(jù)源連接的注入。

7)任務(wù)定時(shí)(TaskService):借助Spring的基于注解的任務(wù)定時(shí)調(diào)度功能規(guī)劃系統(tǒng)的工作時(shí)間,及時(shí)地完成每天的初始準(zhǔn)備和收尾工作。

3 關(guān)鍵技術(shù)處理

3.1 用AJAX間隔訪問Web服務(wù)實(shí)現(xiàn)動(dòng)態(tài)監(jiān)測(cè)

3.1.1 用Spring實(shí)現(xiàn)REST風(fēng)格的Web服務(wù)

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

myPos為一個(gè)封裝工序當(dāng)前狀態(tài)信息的類,其中含有工序的編號(hào)、開工時(shí)間、當(dāng)前所在臺(tái)位、工程進(jìn)展?fàn)顟B(tài)等信息。通過CurrentStatus類的靜態(tài)屬性記錄有各工序的狀態(tài)信息。值得注意的是,由于響應(yīng)消息是將字符串返回給客戶方,需設(shè)置http響應(yīng)頭內(nèi)容格式為text/plain。

3.1.2 瀏覽器頁面通過AJAX實(shí)現(xiàn)工序進(jìn)展的動(dòng)態(tài)監(jiān)視

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

圖3為系統(tǒng)的工序監(jiān)控界面。每個(gè)工序的當(dāng)前狀態(tài)通過不同顏色的圖標(biāo)指示。工序完成的檢修數(shù)量通過數(shù)字顯示。

圖3 監(jiān)視工序的狀態(tài)及進(jìn)展Fig.3 The process status and progress monitoring

3.2 利用Spring任務(wù)定時(shí)控制線程的工作

為了讓系統(tǒng)在非工作時(shí)間處于“休息狀態(tài)”,尤其是通信線程,在休息時(shí)間發(fā)送輪詢信號(hào)是沒有意義的。有必要對(duì)系統(tǒng)的線程和工作狀態(tài)進(jìn)行特殊處理。Spring的任務(wù)調(diào)度為應(yīng)用系統(tǒng)中特定任務(wù)的執(zhí)行安排提供了有效的支持。Spring的TaskScheduler可通過@Scheduled注解進(jìn)行定義,其任務(wù)施加執(zhí)行對(duì)象可以是任何一個(gè)方法,給任務(wù)編寫提供了很大方便。注解中通過cron參數(shù)指定任務(wù)執(zhí)行的時(shí)間點(diǎn)。以下為每天6點(diǎn)啟動(dòng)消息接收線程的實(shí)現(xiàn)代碼:

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

3.3 利用移動(dòng)通信技術(shù)實(shí)現(xiàn)手持機(jī)與主機(jī)的通信

Web服務(wù)器方通過Java串口編程與手持機(jī)通信。移動(dòng)通信模塊連接在串口上,實(shí)現(xiàn)無線信號(hào)和串口數(shù)據(jù)的轉(zhuǎn)換,因此,實(shí)際的數(shù)據(jù)通信變成串口通信。在手持機(jī)端用戶界面簡(jiǎn)單,用戶通過點(diǎn)擊按鈕發(fā)送自己的狀態(tài)進(jìn)展消息,向主機(jī)報(bào)告在哪個(gè)臺(tái)位完成了一份維修任務(wù)。

3.3.1 主機(jī)與手持機(jī)的消息交換

主機(jī)采用輪詢機(jī)制詢問每個(gè)工序和檢測(cè)道的工作狀態(tài)信息。監(jiān)管人員在完成一道工序后將發(fā)送信號(hào)給主機(jī)。主機(jī)每次在輪詢一個(gè)手持機(jī)時(shí)發(fā)送“ask,手持機(jī)號(hào)”的消息。只有匹配編號(hào)的手持機(jī)才給予應(yīng)答。

手持機(jī)沒應(yīng)答,主機(jī)在超時(shí)后,將自動(dòng)詢問下一手持機(jī),如此循環(huán)往復(fù)。手持機(jī)發(fā)送信號(hào)反饋工序和車道的工作狀態(tài)。手持機(jī)的應(yīng)答消息中包括:消息識(shí)別碼,工序或車道號(hào),工作進(jìn)程,所在臺(tái)位等。

通信消息的設(shè)計(jì)與處理是項(xiàng)目較為復(fù)雜部分,在消息接受處理過程中涉及各類狀態(tài)變量的改變和數(shù)據(jù)記錄登記,如:工序的開工時(shí)間、超時(shí)等信息取決于對(duì)收到消息的分析處理。這里消息分:車道新批開始、工序進(jìn)展消息、工序請(qǐng)求關(guān)機(jī)等。

3.3.2 服務(wù)器端的Java串行通信編程

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

4 結(jié)束語

系統(tǒng)通過手持機(jī)與主機(jī)之間的無線通信收集工地操作員發(fā)送的工序進(jìn)展信息。利用AJAX技術(shù)實(shí)現(xiàn)與Web服務(wù)器的通信及頁面內(nèi)容的動(dòng)態(tài)顯示。管理人員可以通過Web界面對(duì)工地的維修進(jìn)展進(jìn)行實(shí)時(shí)監(jiān)測(cè),對(duì)各道工序的工作狀態(tài)能進(jìn)行記錄、報(bào)警和統(tǒng)計(jì)。該系統(tǒng)的設(shè)計(jì)思路也可用于其他類似的Web遠(yuǎn)程監(jiān)控系統(tǒng)中。

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

[2]徐永晉,陶萬強(qiáng).基于Web的智能居家生活系統(tǒng)監(jiān)控軟件關(guān)鍵技術(shù)及實(shí)現(xiàn)[J].儀表技術(shù),2010(3):11-13.

[3]范云芝,陳樹平.利用Socket實(shí)現(xiàn)基于Web的遠(yuǎn)程監(jiān)測(cè)系統(tǒng)[J].陜西工學(xué)院學(xué)報(bào),2005,21(1):53-55.

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

[5]熊亮,張鍇.一種新型接觸網(wǎng)開關(guān)綜合監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].華東交通大學(xué)學(xué)報(bào),2012,29(4):86-91.

[6]丁振凡.AJAX技術(shù)在網(wǎng)絡(luò)考試分析中的應(yīng)用[J].華東交通大學(xué)學(xué)報(bào),2007,24(5):74-76.

[7]張曼琳,顧容,徐夢(mèng).基于Ajax技術(shù)的高校在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國教育信息化,2012(5):44-48.

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

[9]竇慧東.鐵路貨車輪對(duì)檢修工序控制系統(tǒng)[D].西南交通大學(xué),2005:5-6.

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

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

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

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

猜你喜歡
手持機(jī)串口消息
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
一張圖看5G消息
基于WIA—PA的無線手持機(jī)設(shè)計(jì)
從拿手機(jī) 的姿勢(shì)看你是怎樣的人
中學(xué)生(2017年7期)2017-04-12 01:38:31
北斗高精度手持機(jī)在航測(cè)外業(yè)中的應(yīng)用
USB接口的多串口數(shù)據(jù)并行接收方法探索
基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無線通信
消息
消息
消息
通江县| 莱西市| 天镇县| 微博| 三原县| 新化县| 毕节市| 长春市| 攀枝花市| 林口县| 海晏县| 福建省| 盐源县| 类乌齐县| 静乐县| 安泽县| 读书| 铁岭县| 五峰| 砀山县| 巴彦淖尔市| 江油市| 岳阳县| 鹰潭市| 乐昌市| 平泉县| 蒙自县| 弋阳县| 土默特右旗| 晋中市| 神农架林区| 额济纳旗| 临沧市| 承德县| 昭通市| 顺平县| 宁德市| 和平县| 武汉市| 成武县| 湘潭县|