歡迎來到裝配圖網! | 幫助中心 裝配圖網zhuangpeitu.com!
裝配圖網
ImageVerifierCode 換一換
首頁 裝配圖網 > 資源分類 > DOC文檔下載  

道路施工進度信息采集系統(tǒng)軟件設計

  • 資源ID:660832       資源大?。?span id="0wgvz5l" class="font-tahoma">2.51MB        全文頁數:49頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

道路施工進度信息采集系統(tǒng)軟件設計

本科畢業(yè)設計(論文)題目:道路施工進度信息采集系統(tǒng)軟件設計 學 院 專 業(yè) 學生姓名學生學號指導教師提交日期摘 要本文詳細介紹了利用安卓設備對道路施工進度信息采集的系統(tǒng)。道路交通的發(fā)展直接影響著國民經濟發(fā)展,伴隨著我國的經濟的發(fā)展,未來我國道路建設將繼續(xù)高速發(fā)展。然而,道路建設中依然缺乏對施工進度信息的有效采集管理,導致道路總體施工進度緩慢,無法優(yōu)化調度各個子工作面資源。所以,對各個子工作面施工進度信息的采集匯總,將極大優(yōu)化施工資源配置,提高整體道路施工進度。故本文設計了道路施工進度信息采集系統(tǒng),可以對各個子工作面施工進度進行采集匯總存儲,也可以將施工進度數據下傳給下位機。本文所設計的系統(tǒng)是利用安卓智能手機對各個子工作面進行施工進度信息的采集與上傳,利用Qt Creator開發(fā)軟件開發(fā)上位機實現對手機上傳的信息進行接收存儲管理。道路施工進度信息的上傳采用TCP/IP協(xié)議以實現數據的可靠傳輸,利用Qt自帶的輕量級內置數據庫SQLite對數據進行存儲和更新修改等功能。最后繼承Qt 的QIODevice類編寫串口程序,實現與下位機的數據通信。實驗結果表明,本文所設計的道路施工進度信息采集系統(tǒng)可以對各個子工作面的施工進度信息有效收集管理,并傳送給下位機進行顯示。本設計旨在通過道路施工進度信息采集系統(tǒng),為道路施工總體規(guī)劃與資源調配提供良好的信息支持,實現優(yōu)化各個子工作面的資源調度,提高道路整體施工進度,保證道路施工工程可以按期竣工。關鍵詞:道路施工進度;安卓;Qt Creator;SQLite數據庫AbstractThis paper introduces a system using Android devices to acquire the progress information of road construction .The development of road traffic affects the nation economic development directly. With the development of our country's economy, the road construction will develop in high-speed in the future. However, Road construction is still lack of effective collection and management about construction information, which lead to slowness progress as a whole .whats more, It is difficult to optimize the resources of each working face .For this reason .we designed a system that it can acquires and manages the information of road constructions progress. It is also can transfer the information to lower computer.The article designed system is bases on android phone to acquire progress of each working face. Qt Creator as development software, develop a upper computer to receive and storage the information uploaded by Android Phone through internet .Using TCP/IP protocol to guarantee the reliable transmission of data .then ,Using Qts own lightweight built-in SQLite database for data storage and update, etc. Finally, edit serial program by inherit QIODevice class to realize data communication with the machine.Experimental results show that the system can collect and manage the progress of working face effectively, and transmitted to the machine for display. This design aims to through gather the road construction schedule information to provide a good information support for the management of road construction schedule. Realize the optimization of resource of each working face, improve the overall road construction progress and ensure the road construction project can be finished on schedule.Keyword: road construction progress; Android; Qt Creator; SQLite目 錄摘 要IAbstractII第一章 緒 論11.1論文的研究目的11.2 論文的研究背景與意義21.2.1研究背景21.2.2研究意義31.2.3研究現狀31.3本文的研究內容3第二章 系統(tǒng)設計方案52.1系統(tǒng)總體方案設計52.2 TCP/IP協(xié)議介紹62.3本章小結8第三章 基于安卓平臺的道路施工進度信息采集設計93.1操作系統(tǒng)的選型93.2安卓系統(tǒng)的介紹93.3安卓開發(fā)環(huán)境的搭建103.4道路施工進度信息采集設計與實現123.4.1軟件需求123.4.2 軟件設計框架133.4.3安卓的Activity技術133.4.4功能設計實現143.5本章小結19第四章 上位機開發(fā)204.1開發(fā)環(huán)境介紹204.2 上位機整體架構204.3各個模塊的設計與實現224.3.1道路信息接收模塊224.3.2 數據庫管理模塊264.3.3串口通信模塊294.4本章小結32第五章 功能測試及測試結果335.1 信息采集上傳測試335.2數據庫管理模塊測試365.3串口通信模塊測試385.4本章小結38結 論39參考文獻40附錄 實現上位機所編寫的類41致謝42III第一章 緒 論1.1論文的研究目的 我國是一個幅員遼闊,并且人口總數超過13億的國家,對于這樣國家而言,交通的發(fā)展直接影響著我國國民經濟的發(fā)展。正所謂“要致富,先修路”,我國政府已經把道路交通基礎設施建設作為我國經濟發(fā)展的排頭兵,以促進我國經濟繼續(xù)向前發(fā)展。改革開放以來,我國國民經濟已經取得了舉世矚目的發(fā)展進度,我國的道路基礎設施的建設也取得了長足的發(fā)展。根據交通運輸部發(fā)布的中國公路水路交通運輸發(fā)展報告顯示,截止到2012年年底,我國的高速公路通車里程達到9.6萬公里,公路總里程達到424萬公里1。雖然我國在道路基礎設施建設方面取得了巨大的成績,但是不可否認,我國的道路有效供給仍然不夠滿足于我國的運輸發(fā)展的需要。同時,道路建設為了適應我國經濟的快速發(fā)展以及帶動西部及經濟欠發(fā)達地區(qū)的發(fā)展,必將保持較快的增長態(tài)勢。據我國交通部的規(guī)劃,我國的道路基礎設施將繼續(xù)加快建設,2020年將在全國形成五縱十橫的主干線等。目前各個地方的公路建設都在按照計劃緊張進行。所以,我國的道路規(guī)劃建設仍然將繼續(xù)向前推進和發(fā)展2。現階段比較普遍的組織施工的方式主要包含有依次施工、平行施工和流水施工。依次施工是將工程分割成若干個子工作面,一個一個一次完成。顯然這種施工方式現場作業(yè)單一,工期長,不利于工程量較大的道路施工工程。平行施工是指幾個工程隊在同一時間不同空間進行施工。這種方式工期短,而且存在交叉作業(yè)。流水施工將工程劃分若干個施工段,按工藝劃分施工過程,對所有工程按某一時間間隔依次施工。目前道路施工方案大多采用流水施工方式,因為其能充分利用工作面,加速施工進度,是道路建設工程盡早竣工,發(fā)揮投資效益。然而目前對各個子工作面施工進度信息的采集方式大多以人工登記并進行匯總,無法提供各個子工作面的工作進度信息實時性,導致道路施工進度總控制室由于未能接收各個自工作面進度實時信息,無法合理調度施工資源。所以設計一款系統(tǒng)來采集各個子工作面的施工進度信息,將給道路施工進度的總控提供更好的信息支持,提高工程的統(tǒng)籌協(xié)調,提高各個工作面施工的可操作性和靈活性??偟膩碚f,我國國民經濟發(fā)展,給道路的建設提供了良好的發(fā)展環(huán)境,道路的發(fā)展反過來又刺激經濟的發(fā)展。我國的道路建設繼續(xù)快速發(fā)展,道路施工進度信息的采集為道路總體施工建設提供了信息保證,為道路工程建設注入了新的技術。1.2 論文的研究背景與意義1.2.1研究背景 信息采集系統(tǒng)應用了當前比較前沿的科學技術其中包括信息學科的技術、數據通訊技術、計算機技術等。隨著移動互聯網技術的飛速發(fā)展,如何利用現代的移動互聯網技術來實現道路施工進度信息的采集將是一個新的課題。伴隨著移動互聯網技術的發(fā)展,Google公司于2008年9月正式發(fā)布了Android1.0,接著安卓系統(tǒng)不斷更新升級,安卓設備銷售量也在呈現逐年增長,根據Strategy Analytics市場調查公司數據顯示,單單安卓智能手機2014年的出貨量已經超過10億臺,市場占有率已經超過80%。目前人們的日常生活中隨處可見安卓設備的蹤影,安卓設備在生產中的應用也是屢見不鮮。由于安卓系統(tǒng)的不斷更新換代,除了基本的電話、短信等功能外還增加了許多新的功能,比如GPS定位、郵件收發(fā)等豐富的功能。正是安卓的強大的信息處理能力和友好的人機交互界面,使得Android設備可以適應不同行業(yè)的需求。當然Android設備也是適用于道路施工進度信息采集,對比于傳統(tǒng)的采用硬件開發(fā)來說,開發(fā)的成本較高,維護繁瑣,人機交互不夠友好等。相反,在Android設備開發(fā)道路施工進度信息錄入軟件,實用性和可操作性都較高。Android是由谷歌公司于2007年11月對外公布的手機操作系統(tǒng)名稱,該操作系統(tǒng)是基于Linux平臺的開源手機操作系統(tǒng),該系統(tǒng)的推出與當時的主流塞班和iOS形成了三足鼎立的局勢,之后Android操作系統(tǒng)不斷升級換代,用戶活躍數量不斷增加,于2011年8月2日占據的全球48%的市場份額,成為全球第一,結束了塞班的霸主地位3。截止到2015年5月份,安卓系統(tǒng)已經經歷了大幅度的改動,由最初的Android1.0升級到現在的Android5.0,功能也越來越豐富,運行和處理速度得到大幅提升。正是谷歌的不懈努力,系統(tǒng)的升級和功能的增加,使得基于Android平臺的應用開發(fā)者和應用程序不斷增加。2014年,Android的應用商店Google Play 的應用數量已經超過蘋果應用達到了143萬款,開發(fā)者總數也超過個蘋果APP Store 的28.3萬,達到了38.8萬。現在越來越多的行業(yè)插手移動互聯網,把業(yè)務范圍都擴展到安卓設備端,比如主打社交的“微信”和“陌陌”,有主打購物的應用“淘寶客戶端”和“京東手機客戶端”,有主打團購的“美團”等等,各行各業(yè)都跟隨者移動互聯網的浪潮,借著安卓設備普及之勢,紛紛擴展自己的產品領域3。Android設備功能不斷豐富和移動互聯網的高速發(fā)展,將會給更多行業(yè)帶來新的發(fā)展機遇與發(fā)展方式。當前處在道路建設的發(fā)展機遇期,將Android平臺與道路施工進度信息采集現結合起來,開發(fā)基于安卓平臺的道路施工進度信息采集軟件,將對道路施工進度和道路建設管理帶來新的發(fā)展模式。1.2.2研究意義 道路施工的按期完成是道路建設規(guī)劃的基本要求,若某一道路工程施工項目無法如期完成施工進度,將導致后續(xù)道路基礎設施建設的正常進行,以至于影響整個道路建設的正常進行。甚至于影響該道路的投入使用,其結果將直接帶來經濟上的損失。顯然,道路施工進度對整體道路建設起到了至關重要的作用。 目前絕大多數的道路施工進度的控制都采用預先制定計劃,并按照計劃進行施工,然而現實中經常出現許多突發(fā)情況導致一些子工作面施工進度較快,一些道路的施工進度緩慢,最終的總體道路施工工期將被延長,以至于無法按時竣工。本文將所設計的系統(tǒng)就是能夠將所采集的各個子工作面施工進度信息上傳到總控制室里,通過電腦的應用程序接收和管理各個子工作面的施工進度信息。并且可以實現數據向下傳輸到下位機(下位機由三色LED顯示各個子工作面的施工進度)進行進度信息展示,方便總控制室人員對每個施工點的信息掌握與合理調配施工資源,最終達到優(yōu)化資源配置,縮短施工工期的目的。1.2.3研究現狀項目施工的進度控制方法主要包括規(guī)劃、控制和協(xié)調。為了保證項目施工進度的正常進行,一般采用動態(tài)控制的方式。當實際施工進度與計劃進度不一致時,重新調整計劃,使得實際進度和計劃重新重合。施工進度的控制就是采用這樣的不斷循環(huán)的動態(tài)控制方法。施工進度的信息采集也就是施工項目進度控制中的信息反饋。目前道路施工的實際進度主要是通過現場施工人員逐級向上級反饋直至將信息反饋到中央控制室,總控制室將各方面的信息進行收集的統(tǒng)計整理,再做出適當的計劃更改使其能夠滿足原來的進度計劃和工期目標。1.3本文的研究內容 第一部分為緒論。主要描述了道路施工進度信息采集系統(tǒng)的研究目的與意義。同時,簡要介紹了安卓智能機作為采集設備的背景。并介紹了道路施工進度信息的采集技術與發(fā)展趨勢,最后介紹了本文的主要研究內容。 第二部分主要介紹道路施工進度信息采集系統(tǒng)的整體設計框架,還要對TCP/IP協(xié)議進行介紹,它是本文中數據上傳所采用的協(xié)議。 第三部分將介紹安卓智能機信息采集的軟件設計。其中包括在Windows 平臺搭建安卓開發(fā)環(huán)境,安卓的界面開發(fā)和TCPSocket的編程方法。 第四部分詳細介紹利用Qt Creator 編寫上位機程序實現對數據的處理。其中包括利用Qt 的網路通信模塊進行數據接收,利用SQLite 數據庫對數據儲存更新查詢,最后簡單介紹上位機與下位機串口通信的實現。 第五部分對本次設計的系統(tǒng)的每個子功能進行測試,并展示測試結果。最后進行系統(tǒng)的整體運行測試。 第二章 系統(tǒng)設計方案2.1系統(tǒng)總體方案設計本設計的要實現的功能是通過安卓智能機作為各個道路施工工作面的施工進度信息的采集錄入設備,并通過網絡將數據上傳到總控制室的上位機上,上位機負責監(jiān)聽和接收信息,并將信息儲存到數據庫中,同時將數據打包發(fā)送給下位機,由下位機負責將施工進度信息數據以LED顏色展示各個工作面的進度信息??刂剖胰藛T可以很方便的通過上位機的GUI界面訪問數據庫,實現對數據的查詢、修改、刪除等操作。本系統(tǒng)的軟件設計的總體設計框架如圖2-1,主要由安卓信息采集軟件和上位機軟件。上位機中包含數據信息接收功能、數據庫信息管理功能、串口通信功能。圖2-1 道路施工進度信息采集系統(tǒng)軟件設計總體框架下位機主要負責接收數據并將各個子工作面的施工進度信息以3色LED燈不同顏色來顯示,如施工進度0%用LED燈顯示紅色表示、施工進度33%用黃色表示、施工進度66%用綠色表示、施工完成用即100%用白色表示。下位機采用STC89S52作為主控芯片,該芯片的串行口是一個能夠實現全雙工通信的可編程接口。下位機以中斷的方式接收PC上應用程序(即上位機)發(fā)送過來的數據存儲到存儲模塊中。單片機以一定的周期從存儲芯片中讀出數據,并將數據傳送到LED節(jié)點,每個LED節(jié)點代表不同的工作面,LED的顏色用來顯示各個工作面的施工進度情況。本設計的下位機總體結構如圖2-2所示,主要包括串口通信模塊、中央控制模塊、存儲模塊、顯示模塊(其中顯示模塊由各個LED節(jié)點組成)。圖2-2下位機總體結構圖2.2 TCP/IP協(xié)議介紹IP(Internet Protocol,Internet協(xié)議 )通常簡稱IP協(xié)議,IP協(xié)議使得連接到Internet 上的設備,包括不同類型的計算機或者不同操作系統(tǒng),只要都使用IP協(xié)議,雙方就可以互相發(fā)送和接收數據。IP協(xié)議定義于網絡層,他負責將消息從一個主機傳送到另一個主機,消息在傳送的過程中被分割成一個個數據包。IP協(xié)議根據每個包包頭所包含的IP地址進行尋址,所以同一個消息報文的IP包可能會經過不同的路由器到達最終的目的主機。由于IP協(xié)議是面向無連接的,所以在傳送過程中可能出現的異常將導致數據的丟失或出錯,所以要保證數據傳輸的可靠性還要TCP協(xié)議的支持。TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接和數據流的可靠通信協(xié)議4。它能夠保證在建立網絡虛擬鏈路鏈接后,兩端可以進行無差錯的通信服務。TCP協(xié)議位于OSI中的運輸層。每一條TCP連接只能有兩個端點,即點對點的連接。并且TCP提供全雙工的通信方式,TCP在連接的兩端都設有緩存,可以再合適的情況下把發(fā)送緩存的內容發(fā)送出去,在上層應用進程需要的時候對接收緩存的內容進行讀取接收。其中需要強調的是,TCP中“面向字節(jié)流”中“流”是指流入或流出進程中的數據是以字節(jié)序列的方式進行的,TCP把上層應用程序交下來的數據看成無結構的字節(jié)流,因此建立TCP連接的兩端需要定好協(xié)議,才有能力識別收到的數據,提取出有意義的數據。TCP連接的端點叫做套接字(socket),根據RFC793的定義,端口號拼接到IP地址即構成套接字。所以有socket=(IP:port)每個TCP連接有兩個端點組成,所以有TCP連接=socket1,socket2=(IP1,port1),(IP2,port2)4這里的socket與接下來應用程序中的聯網協(xié)議接口API不同。TCP的連接建立需要進行三次握手。首先,TCP客戶端向TCP服務端程序發(fā)送連接請求。處在監(jiān)聽狀態(tài)的服務端收到連接請求后,判斷是否同意建立連接,若接受連接,則向客戶端發(fā)送應答確認信號。TCP客戶端在接收到服務端的確認后還要給服務端發(fā)出確認信號。當服務端接收到客戶端的確認信號后,TCP連接便建立起來,接下來兩個端點便可以進行全雙工通信。圖2-3為用三次握手建立TCP連接。圖2-3用三次握手建立TCP連接 在完成數據通信后需要斷開TCP連接,客戶主機和服務器主機都可以釋放連接。在釋放鏈接之前雙方都處在連接狀態(tài)??蛻粝蛑鳈C發(fā)送斷開連接請求,并停止發(fā)送數據,服務器在接收到客戶端的斷開連接請求后向客服端發(fā)送應答信號并通知上層應用進程,此時只是釋放了客戶端到服務器的連接,所以服務器仍然可以向客戶端發(fā)送數據。當服務器確認了連接釋放請求后向客戶端發(fā)送釋放連接確認信號,此時服務器不會向客戶端發(fā)送數據,而是處于等待關閉狀態(tài)。當客戶端收到服務器的確認信號后還要向服務器發(fā)送確認信號的確認,在服務器收到客戶端的確認信號后,雙方都進入關閉狀態(tài)。所以TCP連接的釋放需要經歷四次握手,如圖2-4所示。圖2-4 四次握手釋放TCP連接2.3本章小結 本章主要介紹了道路信息采集系統(tǒng)的整體系統(tǒng)架構,其中包括軟件設計總體結構和下位機的總體結構。接著,詳細介紹了TCP/IP協(xié)議,包括TCP的連接建立過程和連接釋放過程。第三章 基于安卓平臺的道路施工進度信息采集設計3.1操作系統(tǒng)的選型 隨著移動互聯網的快速發(fā)展,截自2013年據我國的手機擁有數量已經超12億??梢娛謾C的普及度很高,所以選用手機作為道路施工進度信息錄入采集設備將是一個十分方便可行的。目前市場上的手機采用的主流系統(tǒng)主要有Android、iOS、Microsoft、blackberry等等,根據Strategy Analytics公布了2014年第二季度智能手機操作系統(tǒng)全球分布情況入圖3-1可見,Android操作系統(tǒng)的全球市場份兒已經高達84.6%。而iOS系統(tǒng)市場占有率達13.4%,Microsoft和blackberry平臺總和也就只有6.2%。通過這些數據可以看出Android的發(fā)展勢頭很猛而且市場普及率高,非常適合作為軟件的開發(fā)平臺。圖3-1 2014年第二季度智能手機市場份額根據以上的數據顯示,安卓系統(tǒng)和蘋果iOS系統(tǒng)占據了市場90%以上的市場份額。然而由于iOS系統(tǒng)是閉源的。iOS的軟件只能運行在蘋果設備上,且目前蘋果產品價格相對較高。反觀安卓系統(tǒng)的開源性,可移植性強,而且安卓手機品類豐富,價格相對便宜。已經有很多行業(yè)利用安卓設備的案例。所以在安卓臺上進行軟件開發(fā)具有很好的應用前景和市場價值。3.2安卓系統(tǒng)的介紹 Android系統(tǒng)的底層是建立在Linux系統(tǒng)之上的,該平臺有操作系統(tǒng)、中間件、用戶界面和應用軟件組成5。圖3-2顯示了Android的系統(tǒng)體系。圖3-2 Android系統(tǒng)的體系結構(Android官方文檔)安卓系統(tǒng)采用了軟件疊加的方式進行構建,各個層實現各自的功能,層與層之間互相分開,當某個層的結構發(fā)生變化的時候,只要保證層間的接口不變,其他層就可以不作改變。這種分工使得層與層之間的耦合較低,當底層結構改變時,應用程序可以不作改變。安卓的application frame提供了大量的API供開發(fā)者使用,使得開發(fā)變得更加簡單方便,同時應用程序框架也為軟件復用提供了支持。3.3安卓開發(fā)環(huán)境的搭建安卓軟件開發(fā)的準備工作就是要搭建出安卓的開發(fā)環(huán)境。Android的開發(fā)可以在不同的操作系統(tǒng)下進行,比如Linux或Windows等,本文中是基于Windows操作系統(tǒng)的開發(fā)。所以下面將介紹Windows下的開發(fā)環(huán)境搭建。在Windows環(huán)境下的Android開發(fā)環(huán)境搭建主要包括3個部分Eclipse、JDK 與Android SDK。Eclipse是有Sun公司開發(fā)的跨平臺基于Java集成開發(fā)環(huán)境(IDE),同時它還附帶有JDK(Java Development Kit)。JDK是Java語言的軟件開發(fā)包工具,其中包含有許多Java開發(fā)需要的基礎類庫,和工具,是Java開發(fā)的重要組成部分6。SDK(software development kit)是有Google公司推出的軟件開發(fā)工具包,它采用的是Java語言,所以必須預先安裝好JDK。安裝好以上各個軟件,基本就完成了Android開發(fā)環(huán)境的搭建。為了能在開發(fā)過程中模擬開發(fā)軟件的運行效果還需要安裝AVD(Android Virtual Device,安卓虛擬設備),便可以在Eclipse上Android Virtual Device Manage的創(chuàng)建模擬器。Eclipse軟件開發(fā)界面入圖3-3所示,虛擬機運行圖3-4所示圖3-3 Eclipse 軟件開發(fā)界面圖3-4 安卓虛擬器運行界面3.4道路施工進度信息采集設計與實現3.4.1軟件需求 基于Android智能機的道路施工進度信息采集過程如圖3-4所示:圖3-5 道路施工進度信息采集過程由于本文設計的數據要上傳到總控制室上位機進行存儲,所以在手機本地存儲中不考慮數據的存儲。所以在道路施工進度信息的采集軟件設計的關鍵是道路施工進度信息的錄入操作與數據的上傳這兩個部分。針對數據的錄入部分,將通過人機交互的界面布局,只要按照依次填寫道路施工信息的各方面內容就完成信息錄入工作。而對于數據上傳部分,本設計考慮到TCP/IP協(xié)議提供可靠的傳輸協(xié)議,并且是全雙工的工作方式,而UDP是非面向連接不提供可靠傳輸。所以采用TCP進行數據上傳采用的協(xié)議。3.4.2 軟件設計框架軟件的設計框架是在分析軟件需求的情況之下進行的軟件設計思路分析,是進行軟件設計的基礎與必備工作。如圖3-6,從圖中可以看出軟件設計框架。軟件的操作過程大致為:進入軟件首先是歡迎界面接著自動跳轉到道路施工信息錄入界面,操作人員依次填寫施工路段編號,施工進度,并填寫主控制室上位機TCP服務端的的IP與端口號,接著就可以進行數據的上傳工作。圖3-6 安卓軟件框架3.4.3安卓的Activity技術 Activity是安卓的重要組件之一,作為安卓設備中用來顯示信息和直接進行人機交互的界面。Activity界面可以放大縮小旋轉或者浮動與其他的界面,允許通過一個Activity切換到其他的Activity,頁面與頁面之間進行切換的時候,被切換的Activity被壓入棧中,可以在后面的操作中可以進行彈出堆棧恢復。堆棧遵循“先進后出”的原則,所以可以通過“返回”按鈕恢復之前的Activity。圖3-7是安卓中Activity的生命周期5。圖3-7 Activity生命周期創(chuàng)建一個Activity首先需要在安卓的配置文件AndroidManifest.xml中聲明這個Activity。一個Activity一生成就進入onCreat()函數,之后進入onStart()和onResume()進入運行狀態(tài),當Activity切換到后臺是運行onPause()函數,當Activity不可見后調用 onStop(),只有在關閉Activity才運行onDestory()結束該Acticity組件。在Acticity之間進行切換時,需要使用Intent對象為它們傳遞信息,一個Intent對象中封裝目的Activity的對象,通過startActivity(Intent)來啟動Activity。機理是通過AndroidManifest.xml配置文件中的IntentFilter過濾其他的Component,找到具有相同Component屬性的Activity,若找不到與之相匹配,系統(tǒng)將會拋出一個異常。3.4.4功能設計實現軟件的啟動界面可以有軟件的整體功能介紹、風格特性等。優(yōu)秀的軟件特別是一些用于商業(yè)用途的軟件,軟件的啟動界面可以給人對軟件的大致功能等有大致的了解。本次的軟件主要功能是進行道路施工進度信息的采集,所以啟動界面的背景采用道路施工圖案,標題是“道路施工進度信息采集”,啟動界面如圖3-8所示圖3-8 軟件的啟動界面界面xml布局部分代碼如下:<RelativeLayout xmlns:android="http:/schemas.android.com/apk/res/android" xmlns:tools="http:/schemas.android.com/tools" android:id="+id/no1" android:background="drawable/start"/啟動畫面設置背景 android:layout_width="match_parent" android:layout_height="match_parent"/賬號密碼輸入框和登陸按鈕</RelativeLayout>部分功能代碼如下:login.setOnClickListener(new Loginlistener();class Loginlistener implements OnClickListener Override public void onClick(View v) /鑒定登陸賬號密碼是否正確 Intent intent = new Intent();/生成一個Intent對象 intent.setClass(MainActivity.this,ActivitySecond.class);/通過Intent對象啟動另外一個Activity MainActivity.this.startActivity(intent); else Toast toast=Toast.makeText(MainActivity.this, "您輸入的賬號或密碼不正確", Toast.LENGTH_LONG); toast.show(); zhanghao.setText(""); mima.setText(""); zhanghao.setFocusable(true); 其中為登陸按鈕綁定監(jiān)聽器,當按下登錄按鈕時,執(zhí)行登陸賬號密碼的校驗,若登陸成功則啟動intent.setClass(MainActivity.this,ActivitySecond.class)和MainActivity.this.startActivity(intent)啟動軟件的道路施工進度信息錄入界面。若登陸密碼錯誤,將通過Toast toast=Toast.makeText(MainActivity.this, "您輸入的賬號或密碼不正確", Toast.LENGTH_LONG)顯示“您輸入的賬號或密碼不正確”并將賬號密碼輸入框清空方便使用者繼續(xù)重新輸入。在道路施工進度信息錄入界面如圖3-9,要對主控制室上位機的ip、端口號、施工路段編號、道路施工進度信息進行填寫之后方可進行數據上傳。圖3-9 道路施工進度信息錄入界面布局部分代碼如下:<RadioGroup android:id="+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="+id/textView1" android:layout_below="+id/textView1" android:layout_marginTop="41dp" >/四個單選按鈕</RadioGroup>功能代碼如下:Overrideprotected void onCreate(Bundle savedInstanceState)/創(chuàng)建Activity時自動運行 super.onCreate(savedInstanceState);setContentView(R.layout.activity_activity_second);/加載界面布局edit=(EditText)findViewById(R.id.gongcheng);/獲取界面中的施工路段編號輸入框對象class OnCheckedChangelistener implements OnCheckedChangeListener Override public void onCheckedChanged(RadioGroup group,int checkid)if (checkid=R.id.radio0)/如果選中第一個單選按鈕即“0%”,獲取施工進度信息else if(checkid=R.id.radio1)else if(checkid=R.id.radio2)else if(checkid=R.id.radio3) 完成了對施工進度信息的獲取之后,要對信息進行上傳,為了保證信息的可靠傳輸,這一采用之前介紹的TCP/IP協(xié)議對數據進行傳輸。手機作為TCP客戶端使用Socket構造器來連接指定的服務器,由于建立網絡連接和實現網絡通信并不是很可靠穩(wěn)定的,而且所消耗的時間也是不確定的。如果使用UI線程建立網絡連接、傳輸數據將導致UI線程的阻塞,直接表現出界面“卡死”,因此本次設計進行的網絡資源訪問,數據傳輸將在新線程中操作。Android應用需要訪問網絡需要在AndroidManifest.xml配置文件中授予訪問互聯網權限,配置片段如下: <uses-permission android:name="android.permission.INTERNET"/>/允許訪問網絡<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>/允許WiFi操作5 下面部分代碼為新線程中的數據傳輸部分new Thread()Overridepublic void run()try ip=ipaddress.getText().toString();port=Integer.valueOf(portedit.getText().toString();Socket socket =new Socket(ip,port);OutputStream outputStream = socket.getOutputStream();byte buffer = new byte4;buffer=tobytearry(id, progress);/ 數據封裝到字節(jié)流中outputStream.write(buffer);outputStream.close();socket.close();catch(IOException e) e.printStackTrace();.start();Java中提供了java.net包中含有Socket通信的類7,這里利用Socket構造一個指定IP和端口的TCP連接,通過OutputStream outputStream = socket.getOutputStream()9將連接封裝到輸出流中,這樣就可以通過輸出流的操作實現在TCP連接中的數據傳輸。由于TCP連接中是面向字節(jié)流的,所以在傳輸數據要對數據封裝到字節(jié)流中,然后通過write()方法發(fā)送出去。最后還要對輸出流和套接字連接關閉操作。3.5本章小結本章主要介紹了在安卓操作系統(tǒng)下的道路施工進度信息采集軟件實現。首先對軟件的功能需求和軟件架構進行簡單的分析。接著介紹了安卓的Activity組件技術。最后詳細介紹了數據傳輸功能的實現方法。第四章 上位機開發(fā)4.1開發(fā)環(huán)境介紹Qt是由奇趣公司于1991年開發(fā)的跨平臺C+應用程序和UI開發(fā)框架,現已被被諾基亞公司收購成為其旗下的編程工具。它具有許多優(yōu)良特性,比如支持在Windows、Linux、Sunos、SCO等等眾多平臺下運行。開放Qt源代碼庫并且開放了原來商業(yè)平臺的代碼,大量的開發(fā)文檔和豐富的API對開發(fā)者提供了有力的支持。Qt是面向對象,對于開發(fā)者來說,良好的封裝機制使得Qt中各個類的復用性很強。同時提供了信號與槽模式,使得各個元件與關聯代碼之間很夠很好的協(xié)作,使得開發(fā)變得易于操作。同時Qt也支持動畫框架、多媒體框架等等為Qt增加了許多功能1。 本文采用的是Qt Creator 2.3 是一種集成了編輯、設計、幫助、調試分析等于一體的輕量級集成開發(fā)環(huán)境(IDE),能夠讓首次接觸Qt框架的開發(fā)人員迅速上手11。圖4-1 Qt Creator 軟件開發(fā)環(huán)境4.2 上位機整體架構 啟動上位機后要實現數據的接收與管理并且支持數據的串口通信以實現系統(tǒng)的擴展。所以上位機的整體架構可以分為3個功能模塊。如圖4-2所示圖4-2 上位機整體架構道路信息接收模塊主要實現的功能是實現利用TCP/IP協(xié)議在PC上運行TCP服務端程序并監(jiān)聽制定的端口。安卓手機客戶端作為TCP連接的客戶端,當服務端接收到安卓手機客戶端的連接請求后,允許連接并接收數據。并對接收到的數據進行存儲。數據庫管理模塊主要是對接收到的數據信息進行存儲更新等,當然也允許管理人員手動修改或刪除某些數據。也可以進行數據查詢操作。串口通信模塊主要是對數據庫中的一些信息進行打包封裝進行傳輸給下位機。當然在傳輸之前要對串口進行設置比如傳輸波特率、數據位數、校驗方式等。本次上位機開發(fā)中開發(fā)的類中各個類的繼承關系主要可以通過圖4-3層次結構圖表示。圖4-3 a) 各個模塊界面繼承QDialog基類 4-3 b) 主界面界面繼承QMainWindow基類圖4-3 c) 串口通信中類的層次結構 圖4-3d) 串口通信中線程類繼承關系圖4-3 層次結構圖4.3各個模塊的設計與實現4.3.1道路信息接收模塊 (1)界面設計道路信息接收模塊的人機交互界面簡潔,三個基礎按鈕“開始監(jiān)聽”、“停止監(jiān)聽”、“退出”作為控制TCP服務端的啟動與關閉。同時由于電腦端口有可能被其他應用程序占用,所以設置輸入框用于設置監(jiān)聽的端口號,同時能夠顯示當前電腦的IP地址。人機交互界面如圖4-4所示圖4-4 道路施工進度信息接收界面Qt 支持XML文件的布局,同時也可以在設計環(huán)境中進行拖拽合適的元件,集成環(huán)境會根據你的操作生成對應的XML文件。設置好的界面布局文件要在這個類的構造函數中添加UI界面,即ui->setupUi(this);以下代碼簡單展示“開始監(jiān)聽”按鈕的XML代碼<item> <widget class="QPushButton" name="startButton"> <property name="text"> <string>開始監(jiān)聽</string> </property> </widget></item>(2)功能設計實現 Qt提供了QTcpServer 類用于編寫TCP服務端的應用程序,而QTcpSocket 類提供了TCP協(xié)議的一些常用的接口,利用QIODevice 類實現對數據的發(fā)送與接收。圖4-5為TCP服務端工作流程圖。圖4-5 TCP服務端工作流程圖首先要在頭文件中進行類的申明,這里定義tcp 類繼承QDialog,在類中包含有兩個最重要的QTcpServer 和QTcpSocket類型的成員變量tcpserver和tcpServerConnection。定義如下: QTcpServer tcpserver;QTcpSocket *tcpServerConnection; 通過Qt的提供的信號與槽的機制為各個按鈕組件添加槽函數1。本文在類的構造函數中對按鈕與槽函數進行關聯。代碼如下:connect(ui->startButton,SIGNAL(clicked(),this,SLOT(start(); connect(ui->quitButton,SIGNAL(clicked(),this,SLOT(close();connect(&tcpserver,SIGNAL(newConnection(),this,SLOT(acceptConnection();其中將按鈕的單擊信號與該類的成員槽函數關聯。當按下“開始監(jiān)聽”按鈕是,先檢查輸入框中是否輸入端口號,若沒有則彈出提示框提示是否使用默認端口12345,若有則獲取端口號進行監(jiān)聽。判斷服務端是否正在監(jiān)聽該端口,如過建立監(jiān)聽成功,隨時等待客戶端的連接請求。否則顯示錯誤信息。關鍵代碼如下:port=ui->portEdit->text().toInt();/獲取端口while(!tcpserver.isListening()&&!tcpserver.listen(QHostAddress:Any,port)當客戶端的連接請求到來時,QTcpSocket會產生一個newConnection()信號進而觸發(fā)槽函數。在槽函數中可以獲取已經建立連接的子套接字,這樣就可以接收很多客戶端的連接,利用nextPendingConnection()函數來獲取連接的指針。對每個連接當連接中有數據可以讀取時會產生一個readyRead()信號。這里可以通過建立槽函數將連接中的數據的處理放到一個槽函數中進行處理,本設計用updateServerProgress()函數對數據進行處理。接下來一直保持TCP服務端處于監(jiān)聽狀態(tài),只有在按下“停止監(jiān)聽”才關閉服務端。這樣才不會因為接受了一個連接就關閉服務端,才可以不斷的接受來自不同客戶端的連接請求。由于TCP連接是面向字節(jié)流的。所以在數據接收也是以字節(jié)數組的形式從連接中獲取數據。在updateServerProgress()函數中,通過readAll()函數將連接子套接字中的數據賦予字節(jié)數組。由于字節(jié)流是沒有結構的。根據雙方直接的數據通信進行解析出有意義的數據。字節(jié)流的解析代碼如下: qint16 id=0; qint16 progress=0; id =qint16(0xff & block0) | (0xff00 & (block1 << 8); progress=qint16(0xff & block2) | (0xff00 & (block3 << 8); a.no=id; a.pro=progress;其中a是一個結構,定義了數據幾個成員變量。block是接收到的字節(jié)數組。通過以上代碼把字節(jié)流中的數據解析出來存儲到結構中。接下來就是要把結構中的數據存儲到數據庫中。本設計還提供了一些提示功能,增加用戶界面的友好性。比如在按下停止監(jiān)聽按鈕時,顯示本次監(jiān)聽一共更新了多少條數據。實現方法是在每次接收數據的時候,對靜態(tài)變量進行加一,在顯示完后對該靜態(tài)變量置零操作。同時,在連接過程中出現錯誤,將以對話框的形式顯示錯誤信息。4.3.2 數據庫管理模塊(1)SQLite數據庫介紹SQLite是一種輕量級的數據庫,雖然它沒有像oracle、MySQL等等那樣強大的數據庫功能,但是它非常適用于少量的數據管理而且占用的系統(tǒng)資源很少,只需要幾百K的內存就可以運行,而且運行速度比它們都快快,是一種嵌入式的數據庫引擎。 SQLite是通過通過編程語言直接進行API調用,只需要基礎的數據庫知識就可以完成對數據庫的基本操作。它不像常見的客戶-服務器模式的數據庫模式,它是以嵌入到程序中變成程序的一個部分,通過鎖定整個數據文件進行對數據庫的數據進行數據操作。 SQLite可以說“麻雀雖小五臟俱全”,雖然只有4.43M左右的大小,但支持的數據庫大小在2T左右且支持ACID事務,支持多種開發(fā)語言例如C+、Java、C#、C、PHP等等(2)數據庫模塊的界面開發(fā)首先總控制室人員可以通過顯示全部各個自工作面的施工進度信息來對整體道路施工進度有個整體性的進度了解,所以本設計通過表格的形式將數據庫中施工進度表顯示在表格中。這里也支持管理人員手動對表格進行數據的修改與更新,也可以通過施工路段號快速查找施工進度信息。所以界面如圖4-6所示。圖4-6 數據庫管理模塊(3)數據庫模塊功能設計實現 Qt通過QtSQL模塊模塊為數據庫的訪問提供支持,使得Qt的應用程序與數據庫無縫銜接。它為開發(fā)人員提供了與具體數據庫平臺無關的調用接口,極大地簡化的數據庫的操作,開發(fā)人員熟悉SELECT、INSERT、UPDATE、DELETE等基本的SQL操作,便可以通過QSqlQuery直接執(zhí)行SQL語句并處理返回結果。與此同時還提供了更加高層的抽象類比如QSqlTableModel、QSqlRelationTableModel等,所以Qt對數據庫的操作提供了很好的支持。 Qt中內置SQLite,需要在頭文件加入#include<Qtsql>,在工程的.pro文件中加入QT+=sql來完成數據庫開發(fā)的必要操作。本設計中通過在SQLite數據庫中添加道路施工進度表格的方式對道路施工進度信息進行管理操作。如圖圖4-7顯示了道路施工進度表格創(chuàng)建流程圖。圖4-7 道路施工進度表格創(chuàng)建流程圖 關鍵代碼如下: db=QSqlDatabase:addDatabase("QSQLITE"); db.setDatabaseName("test.db"); db.open(); query=QSqlQuery:QSqlQuery(db);query.exec("SELECT count(*) FROM sqlite_master WHERE type='table' and name='projectprogress'");if(query.next()if(query.value(0).toInt() = 0)query.exec("create table projectprogress (id INTEGER(16) PRIMARY KEY, progress INTEGER(16)");通過QSqlDatabase類的成員函數addDatabase()建立SQLite的連接并setDatabaseName()函數建立連接名稱。通過QSqlQuery類的exec()函數進行底層數據庫的操作。通過"SELECT count(*) FROM sqlite_master WHERE type='table' and name='projectprogress'"SQL語句查詢SQLite數據庫中是否存在Projectprogress表格。當表不存在時返回0,通過query.exec("create ta

注意事項

本文(道路施工進度信息采集系統(tǒng)軟件設計)為本站會員(QQ-1****6396)主動上傳,裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(點擊聯系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!