道路施工進度信息采集系統(tǒng)軟件設(shè)計
《道路施工進度信息采集系統(tǒng)軟件設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《道路施工進度信息采集系統(tǒng)軟件設(shè)計(49頁珍藏版)》請在裝配圖網(wǎng)上搜索。
本科畢業(yè)設(shè)計(論文)題目:道路施工進度信息采集系統(tǒng)軟件設(shè)計 學(xué) 院 專 業(yè) 學(xué)生姓名學(xué)生學(xué)號指導(dǎo)教師提交日期摘 要本文詳細介紹了利用安卓設(shè)備對道路施工進度信息采集的系統(tǒng)。道路交通的發(fā)展直接影響著國民經(jīng)濟發(fā)展,伴隨著我國的經(jīng)濟的發(fā)展,未來我國道路建設(shè)將繼續(xù)高速發(fā)展。然而,道路建設(shè)中依然缺乏對施工進度信息的有效采集管理,導(dǎo)致道路總體施工進度緩慢,無法優(yōu)化調(diào)度各個子工作面資源。所以,對各個子工作面施工進度信息的采集匯總,將極大優(yōu)化施工資源配置,提高整體道路施工進度。故本文設(shè)計了道路施工進度信息采集系統(tǒng),可以對各個子工作面施工進度進行采集匯總存儲,也可以將施工進度數(shù)據(jù)下傳給下位機。本文所設(shè)計的系統(tǒng)是利用安卓智能手機對各個子工作面進行施工進度信息的采集與上傳,利用Qt Creator開發(fā)軟件開發(fā)上位機實現(xiàn)對手機上傳的信息進行接收存儲管理。道路施工進度信息的上傳采用TCP/IP協(xié)議以實現(xiàn)數(shù)據(jù)的可靠傳輸,利用Qt自帶的輕量級內(nèi)置數(shù)據(jù)庫SQLite對數(shù)據(jù)進行存儲和更新修改等功能。最后繼承Qt 的QIODevice類編寫串口程序,實現(xiàn)與下位機的數(shù)據(jù)通信。實驗結(jié)果表明,本文所設(shè)計的道路施工進度信息采集系統(tǒng)可以對各個子工作面的施工進度信息有效收集管理,并傳送給下位機進行顯示。本設(shè)計旨在通過道路施工進度信息采集系統(tǒng),為道路施工總體規(guī)劃與資源調(diào)配提供良好的信息支持,實現(xiàn)優(yōu)化各個子工作面的資源調(diào)度,提高道路整體施工進度,保證道路施工工程可以按期竣工。關(guān)鍵詞:道路施工進度;安卓;Qt Creator;SQLite數(shù)據(jù)庫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 countrys 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 inheritQIODevice 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研究現(xiàn)狀31.3本文的研究內(nèi)容3第二章 系統(tǒng)設(shè)計方案52.1系統(tǒng)總體方案設(shè)計52.2 TCP/IP協(xié)議介紹62.3本章小結(jié)8第三章 基于安卓平臺的道路施工進度信息采集設(shè)計93.1操作系統(tǒng)的選型93.2安卓系統(tǒng)的介紹93.3安卓開發(fā)環(huán)境的搭建103.4道路施工進度信息采集設(shè)計與實現(xiàn)123.4.1軟件需求123.4.2 軟件設(shè)計框架133.4.3安卓的Activity技術(shù)133.4.4功能設(shè)計實現(xiàn)143.5本章小結(jié)19第四章 上位機開發(fā)204.1開發(fā)環(huán)境介紹204.2 上位機整體架構(gòu)204.3各個模塊的設(shè)計與實現(xiàn)224.3.1道路信息接收模塊224.3.2 數(shù)據(jù)庫管理模塊264.3.3串口通信模塊294.4本章小結(jié)32第五章 功能測試及測試結(jié)果335.1 信息采集上傳測試335.2數(shù)據(jù)庫管理模塊測試365.3串口通信模塊測試385.4本章小結(jié)38結(jié) 論39參考文獻40附錄 實現(xiàn)上位機所編寫的類41致謝42III第一章 緒 論1.1論文的研究目的 我國是一個幅員遼闊,并且人口總數(shù)超過13億的國家,對于這樣國家而言,交通的發(fā)展直接影響著我國國民經(jīng)濟的發(fā)展。正所謂“要致富,先修路”,我國政府已經(jīng)把道路交通基礎(chǔ)設(shè)施建設(shè)作為我國經(jīng)濟發(fā)展的排頭兵,以促進我國經(jīng)濟繼續(xù)向前發(fā)展。改革開放以來,我國國民經(jīng)濟已經(jīng)取得了舉世矚目的發(fā)展進度,我國的道路基礎(chǔ)設(shè)施的建設(shè)也取得了長足的發(fā)展。根據(jù)交通運輸部發(fā)布的中國公路水路交通運輸發(fā)展報告顯示,截止到2012年年底,我國的高速公路通車里程達到9.6萬公里,公路總里程達到424萬公里1。雖然我國在道路基礎(chǔ)設(shè)施建設(shè)方面取得了巨大的成績,但是不可否認,我國的道路有效供給仍然不夠滿足于我國的運輸發(fā)展的需要。同時,道路建設(shè)為了適應(yīng)我國經(jīng)濟的快速發(fā)展以及帶動西部及經(jīng)濟欠發(fā)達地區(qū)的發(fā)展,必將保持較快的增長態(tài)勢。據(jù)我國交通部的規(guī)劃,我國的道路基礎(chǔ)設(shè)施將繼續(xù)加快建設(shè),2020年將在全國形成五縱十橫的主干線等。目前各個地方的公路建設(shè)都在按照計劃緊張進行。所以,我國的道路規(guī)劃建設(shè)仍然將繼續(xù)向前推進和發(fā)展2?,F(xiàn)階段比較普遍的組織施工的方式主要包含有依次施工、平行施工和流水施工。依次施工是將工程分割成若干個子工作面,一個一個一次完成。顯然這種施工方式現(xiàn)場作業(yè)單一,工期長,不利于工程量較大的道路施工工程。平行施工是指幾個工程隊在同一時間不同空間進行施工。這種方式工期短,而且存在交叉作業(yè)。流水施工將工程劃分若干個施工段,按工藝劃分施工過程,對所有工程按某一時間間隔依次施工。目前道路施工方案大多采用流水施工方式,因為其能充分利用工作面,加速施工進度,是道路建設(shè)工程盡早竣工,發(fā)揮投資效益。然而目前對各個子工作面施工進度信息的采集方式大多以人工登記并進行匯總,無法提供各個子工作面的工作進度信息實時性,導(dǎo)致道路施工進度總控制室由于未能接收各個自工作面進度實時信息,無法合理調(diào)度施工資源。所以設(shè)計一款系統(tǒng)來采集各個子工作面的施工進度信息,將給道路施工進度的總控提供更好的信息支持,提高工程的統(tǒng)籌協(xié)調(diào),提高各個工作面施工的可操作性和靈活性??偟膩碚f,我國國民經(jīng)濟發(fā)展,給道路的建設(shè)提供了良好的發(fā)展環(huán)境,道路的發(fā)展反過來又刺激經(jīng)濟的發(fā)展。我國的道路建設(shè)繼續(xù)快速發(fā)展,道路施工進度信息的采集為道路總體施工建設(shè)提供了信息保證,為道路工程建設(shè)注入了新的技術(shù)。1.2 論文的研究背景與意義1.2.1研究背景 信息采集系統(tǒng)應(yīng)用了當(dāng)前比較前沿的科學(xué)技術(shù)其中包括信息學(xué)科的技術(shù)、數(shù)據(jù)通訊技術(shù)、計算機技術(shù)等。隨著移動互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,如何利用現(xiàn)代的移動互聯(lián)網(wǎng)技術(shù)來實現(xiàn)道路施工進度信息的采集將是一個新的課題。伴隨著移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,Google公司于2008年9月正式發(fā)布了Android1.0,接著安卓系統(tǒng)不斷更新升級,安卓設(shè)備銷售量也在呈現(xiàn)逐年增長,根據(jù)Strategy Analytics市場調(diào)查公司數(shù)據(jù)顯示,單單安卓智能手機2014年的出貨量已經(jīng)超過10億臺,市場占有率已經(jīng)超過80%。目前人們的日常生活中隨處可見安卓設(shè)備的蹤影,安卓設(shè)備在生產(chǎn)中的應(yīng)用也是屢見不鮮。由于安卓系統(tǒng)的不斷更新?lián)Q代,除了基本的電話、短信等功能外還增加了許多新的功能,比如GPS定位、郵件收發(fā)等豐富的功能。正是安卓的強大的信息處理能力和友好的人機交互界面,使得Android設(shè)備可以適應(yīng)不同行業(yè)的需求。當(dāng)然Android設(shè)備也是適用于道路施工進度信息采集,對比于傳統(tǒng)的采用硬件開發(fā)來說,開發(fā)的成本較高,維護繁瑣,人機交互不夠友好等。相反,在Android設(shè)備開發(fā)道路施工進度信息錄入軟件,實用性和可操作性都較高。Android是由谷歌公司于2007年11月對外公布的手機操作系統(tǒng)名稱,該操作系統(tǒng)是基于Linux平臺的開源手機操作系統(tǒng),該系統(tǒng)的推出與當(dāng)時的主流塞班和iOS形成了三足鼎立的局勢,之后Android操作系統(tǒng)不斷升級換代,用戶活躍數(shù)量不斷增加,于2011年8月2日占據(jù)的全球48%的市場份額,成為全球第一,結(jié)束了塞班的霸主地位3。截止到2015年5月份,安卓系統(tǒng)已經(jīng)經(jīng)歷了大幅度的改動,由最初的Android1.0升級到現(xiàn)在的Android5.0,功能也越來越豐富,運行和處理速度得到大幅提升。正是谷歌的不懈努力,系統(tǒng)的升級和功能的增加,使得基于Android平臺的應(yīng)用開發(fā)者和應(yīng)用程序不斷增加。2014年,Android的應(yīng)用商店Google Play 的應(yīng)用數(shù)量已經(jīng)超過蘋果應(yīng)用達到了143萬款,開發(fā)者總數(shù)也超過個蘋果APP Store 的28.3萬,達到了38.8萬?,F(xiàn)在越來越多的行業(yè)插手移動互聯(lián)網(wǎng),把業(yè)務(wù)范圍都擴展到安卓設(shè)備端,比如主打社交的“微信”和“陌陌”,有主打購物的應(yīng)用“淘寶客戶端”和“京東手機客戶端”,有主打團購的“美團”等等,各行各業(yè)都跟隨者移動互聯(lián)網(wǎng)的浪潮,借著安卓設(shè)備普及之勢,紛紛擴展自己的產(chǎn)品領(lǐng)域3。Android設(shè)備功能不斷豐富和移動互聯(lián)網(wǎng)的高速發(fā)展,將會給更多行業(yè)帶來新的發(fā)展機遇與發(fā)展方式。當(dāng)前處在道路建設(shè)的發(fā)展機遇期,將Android平臺與道路施工進度信息采集現(xiàn)結(jié)合起來,開發(fā)基于安卓平臺的道路施工進度信息采集軟件,將對道路施工進度和道路建設(shè)管理帶來新的發(fā)展模式。1.2.2研究意義 道路施工的按期完成是道路建設(shè)規(guī)劃的基本要求,若某一道路工程施工項目無法如期完成施工進度,將導(dǎo)致后續(xù)道路基礎(chǔ)設(shè)施建設(shè)的正常進行,以至于影響整個道路建設(shè)的正常進行。甚至于影響該道路的投入使用,其結(jié)果將直接帶來經(jīng)濟上的損失。顯然,道路施工進度對整體道路建設(shè)起到了至關(guān)重要的作用。 目前絕大多數(shù)的道路施工進度的控制都采用預(yù)先制定計劃,并按照計劃進行施工,然而現(xiàn)實中經(jīng)常出現(xiàn)許多突發(fā)情況導(dǎo)致一些子工作面施工進度較快,一些道路的施工進度緩慢,最終的總體道路施工工期將被延長,以至于無法按時竣工。本文將所設(shè)計的系統(tǒng)就是能夠?qū)⑺杉母鱾€子工作面施工進度信息上傳到總控制室里,通過電腦的應(yīng)用程序接收和管理各個子工作面的施工進度信息。并且可以實現(xiàn)數(shù)據(jù)向下傳輸?shù)较挛粰C(下位機由三色LED顯示各個子工作面的施工進度)進行進度信息展示,方便總控制室人員對每個施工點的信息掌握與合理調(diào)配施工資源,最終達到優(yōu)化資源配置,縮短施工工期的目的。1.2.3研究現(xiàn)狀項目施工的進度控制方法主要包括規(guī)劃、控制和協(xié)調(diào)。為了保證項目施工進度的正常進行,一般采用動態(tài)控制的方式。當(dāng)實際施工進度與計劃進度不一致時,重新調(diào)整計劃,使得實際進度和計劃重新重合。施工進度的控制就是采用這樣的不斷循環(huán)的動態(tài)控制方法。施工進度的信息采集也就是施工項目進度控制中的信息反饋。目前道路施工的實際進度主要是通過現(xiàn)場施工人員逐級向上級反饋直至將信息反饋到中央控制室,總控制室將各方面的信息進行收集的統(tǒng)計整理,再做出適當(dāng)?shù)挠媱澑氖蛊淠軌驖M足原來的進度計劃和工期目標。1.3本文的研究內(nèi)容 第一部分為緒論。主要描述了道路施工進度信息采集系統(tǒng)的研究目的與意義。同時,簡要介紹了安卓智能機作為采集設(shè)備的背景。并介紹了道路施工進度信息的采集技術(shù)與發(fā)展趨勢,最后介紹了本文的主要研究內(nèi)容。 第二部分主要介紹道路施工進度信息采集系統(tǒng)的整體設(shè)計框架,還要對TCP/IP協(xié)議進行介紹,它是本文中數(shù)據(jù)上傳所采用的協(xié)議。 第三部分將介紹安卓智能機信息采集的軟件設(shè)計。其中包括在Windows 平臺搭建安卓開發(fā)環(huán)境,安卓的界面開發(fā)和TCPSocket的編程方法。 第四部分詳細介紹利用Qt Creator 編寫上位機程序?qū)崿F(xiàn)對數(shù)據(jù)的處理。其中包括利用Qt 的網(wǎng)路通信模塊進行數(shù)據(jù)接收,利用SQLite 數(shù)據(jù)庫對數(shù)據(jù)儲存更新查詢,最后簡單介紹上位機與下位機串口通信的實現(xiàn)。 第五部分對本次設(shè)計的系統(tǒng)的每個子功能進行測試,并展示測試結(jié)果。最后進行系統(tǒng)的整體運行測試。 第二章 系統(tǒng)設(shè)計方案2.1系統(tǒng)總體方案設(shè)計本設(shè)計的要實現(xiàn)的功能是通過安卓智能機作為各個道路施工工作面的施工進度信息的采集錄入設(shè)備,并通過網(wǎng)絡(luò)將數(shù)據(jù)上傳到總控制室的上位機上,上位機負責(zé)監(jiān)聽和接收信息,并將信息儲存到數(shù)據(jù)庫中,同時將數(shù)據(jù)打包發(fā)送給下位機,由下位機負責(zé)將施工進度信息數(shù)據(jù)以LED顏色展示各個工作面的進度信息??刂剖胰藛T可以很方便的通過上位機的GUI界面訪問數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)的查詢、修改、刪除等操作。本系統(tǒng)的軟件設(shè)計的總體設(shè)計框架如圖2-1,主要由安卓信息采集軟件和上位機軟件。上位機中包含數(shù)據(jù)信息接收功能、數(shù)據(jù)庫信息管理功能、串口通信功能。圖2-1 道路施工進度信息采集系統(tǒng)軟件設(shè)計總體框架下位機主要負責(zé)接收數(shù)據(jù)并將各個子工作面的施工進度信息以3色LED燈不同顏色來顯示,如施工進度0%用LED燈顯示紅色表示、施工進度33%用黃色表示、施工進度66%用綠色表示、施工完成用即100%用白色表示。下位機采用STC89S52作為主控芯片,該芯片的串行口是一個能夠?qū)崿F(xiàn)全雙工通信的可編程接口。下位機以中斷的方式接收PC上應(yīng)用程序(即上位機)發(fā)送過來的數(shù)據(jù)存儲到存儲模塊中。單片機以一定的周期從存儲芯片中讀出數(shù)據(jù),并將數(shù)據(jù)傳送到LED節(jié)點,每個LED節(jié)點代表不同的工作面,LED的顏色用來顯示各個工作面的施工進度情況。本設(shè)計的下位機總體結(jié)構(gòu)如圖2-2所示,主要包括串口通信模塊、中央控制模塊、存儲模塊、顯示模塊(其中顯示模塊由各個LED節(jié)點組成)。圖2-2下位機總體結(jié)構(gòu)圖2.2 TCP/IP協(xié)議介紹IP(Internet Protocol,Internet協(xié)議 )通常簡稱IP協(xié)議,IP協(xié)議使得連接到Internet 上的設(shè)備,包括不同類型的計算機或者不同操作系統(tǒng),只要都使用IP協(xié)議,雙方就可以互相發(fā)送和接收數(shù)據(jù)。IP協(xié)議定義于網(wǎng)絡(luò)層,他負責(zé)將消息從一個主機傳送到另一個主機,消息在傳送的過程中被分割成一個個數(shù)據(jù)包。IP協(xié)議根據(jù)每個包包頭所包含的IP地址進行尋址,所以同一個消息報文的IP包可能會經(jīng)過不同的路由器到達最終的目的主機。由于IP協(xié)議是面向無連接的,所以在傳送過程中可能出現(xiàn)的異常將導(dǎo)致數(shù)據(jù)的丟失或出錯,所以要保證數(shù)據(jù)傳輸?shù)目煽啃赃€要TCP協(xié)議的支持。TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接和數(shù)據(jù)流的可靠通信協(xié)議4。它能夠保證在建立網(wǎng)絡(luò)虛擬鏈路鏈接后,兩端可以進行無差錯的通信服務(wù)。TCP協(xié)議位于OSI中的運輸層。每一條TCP連接只能有兩個端點,即點對點的連接。并且TCP提供全雙工的通信方式,TCP在連接的兩端都設(shè)有緩存,可以再合適的情況下把發(fā)送緩存的內(nèi)容發(fā)送出去,在上層應(yīng)用進程需要的時候?qū)邮站彺娴膬?nèi)容進行讀取接收。其中需要強調(diào)的是,TCP中“面向字節(jié)流”中“流”是指流入或流出進程中的數(shù)據(jù)是以字節(jié)序列的方式進行的,TCP把上層應(yīng)用程序交下來的數(shù)據(jù)看成無結(jié)構(gòu)的字節(jié)流,因此建立TCP連接的兩端需要定好協(xié)議,才有能力識別收到的數(shù)據(jù),提取出有意義的數(shù)據(jù)。TCP連接的端點叫做套接字(socket),根據(jù)RFC793的定義,端口號拼接到IP地址即構(gòu)成套接字。所以有socket=(IP:port)每個TCP連接有兩個端點組成,所以有TCP連接=socket1,socket2=(IP1,port1),(IP2,port2)4這里的socket與接下來應(yīng)用程序中的聯(lián)網(wǎng)協(xié)議接口API不同。TCP的連接建立需要進行三次握手。首先,TCP客戶端向TCP服務(wù)端程序發(fā)送連接請求。處在監(jiān)聽狀態(tài)的服務(wù)端收到連接請求后,判斷是否同意建立連接,若接受連接,則向客戶端發(fā)送應(yīng)答確認信號。TCP客戶端在接收到服務(wù)端的確認后還要給服務(wù)端發(fā)出確認信號。當(dāng)服務(wù)端接收到客戶端的確認信號后,TCP連接便建立起來,接下來兩個端點便可以進行全雙工通信。圖2-3為用三次握手建立TCP連接。圖2-3用三次握手建立TCP連接 在完成數(shù)據(jù)通信后需要斷開TCP連接,客戶主機和服務(wù)器主機都可以釋放連接。在釋放鏈接之前雙方都處在連接狀態(tài)??蛻粝蛑鳈C發(fā)送斷開連接請求,并停止發(fā)送數(shù)據(jù),服務(wù)器在接收到客戶端的斷開連接請求后向客服端發(fā)送應(yīng)答信號并通知上層應(yīng)用進程,此時只是釋放了客戶端到服務(wù)器的連接,所以服務(wù)器仍然可以向客戶端發(fā)送數(shù)據(jù)。當(dāng)服務(wù)器確認了連接釋放請求后向客戶端發(fā)送釋放連接確認信號,此時服務(wù)器不會向客戶端發(fā)送數(shù)據(jù),而是處于等待關(guān)閉狀態(tài)。當(dāng)客戶端收到服務(wù)器的確認信號后還要向服務(wù)器發(fā)送確認信號的確認,在服務(wù)器收到客戶端的確認信號后,雙方都進入關(guān)閉狀態(tài)。所以TCP連接的釋放需要經(jīng)歷四次握手,如圖2-4所示。圖2-4 四次握手釋放TCP連接2.3本章小結(jié) 本章主要介紹了道路信息采集系統(tǒng)的整體系統(tǒng)架構(gòu),其中包括軟件設(shè)計總體結(jié)構(gòu)和下位機的總體結(jié)構(gòu)。接著,詳細介紹了TCP/IP協(xié)議,包括TCP的連接建立過程和連接釋放過程。第三章 基于安卓平臺的道路施工進度信息采集設(shè)計3.1操作系統(tǒng)的選型 隨著移動互聯(lián)網(wǎng)的快速發(fā)展,截自2013年據(jù)我國的手機擁有數(shù)量已經(jīng)超12億??梢娛謾C的普及度很高,所以選用手機作為道路施工進度信息錄入采集設(shè)備將是一個十分方便可行的。目前市場上的手機采用的主流系統(tǒng)主要有Android、iOS、Microsoft、blackberry等等,根據(jù)Strategy Analytics公布了2014年第二季度智能手機操作系統(tǒng)全球分布情況入圖3-1可見,Android操作系統(tǒng)的全球市場份兒已經(jīng)高達84.6%。而iOS系統(tǒng)市場占有率達13.4%,Microsoft和blackberry平臺總和也就只有6.2%。通過這些數(shù)據(jù)可以看出Android的發(fā)展勢頭很猛而且市場普及率高,非常適合作為軟件的開發(fā)平臺。圖3-1 2014年第二季度智能手機市場份額根據(jù)以上的數(shù)據(jù)顯示,安卓系統(tǒng)和蘋果iOS系統(tǒng)占據(jù)了市場90%以上的市場份額。然而由于iOS系統(tǒng)是閉源的。iOS的軟件只能運行在蘋果設(shè)備上,且目前蘋果產(chǎn)品價格相對較高。反觀安卓系統(tǒng)的開源性,可移植性強,而且安卓手機品類豐富,價格相對便宜。已經(jīng)有很多行業(yè)利用安卓設(shè)備的案例。所以在安卓臺上進行軟件開發(fā)具有很好的應(yīng)用前景和市場價值。3.2安卓系統(tǒng)的介紹 Android系統(tǒng)的底層是建立在Linux系統(tǒng)之上的,該平臺有操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成5。圖3-2顯示了Android的系統(tǒng)體系。圖3-2 Android系統(tǒng)的體系結(jié)構(gòu)(Android官方文檔)安卓系統(tǒng)采用了軟件疊加的方式進行構(gòu)建,各個層實現(xiàn)各自的功能,層與層之間互相分開,當(dāng)某個層的結(jié)構(gòu)發(fā)生變化的時候,只要保證層間的接口不變,其他層就可以不作改變。這種分工使得層與層之間的耦合較低,當(dāng)?shù)讓咏Y(jié)構(gòu)改變時,應(yīng)用程序可以不作改變。安卓的application frame提供了大量的API供開發(fā)者使用,使得開發(fā)變得更加簡單方便,同時應(yīng)用程序框架也為軟件復(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ā)需要的基礎(chǔ)類庫,和工具,是Java開發(fā)的重要組成部分6。SDK(software development kit)是有Google公司推出的軟件開發(fā)工具包,它采用的是Java語言,所以必須預(yù)先安裝好JDK。安裝好以上各個軟件,基本就完成了Android開發(fā)環(huán)境的搭建。為了能在開發(fā)過程中模擬開發(fā)軟件的運行效果還需要安裝AVD(Android Virtual Device,安卓虛擬設(shè)備),便可以在Eclipse上Android Virtual Device Manage的創(chuàng)建模擬器。Eclipse軟件開發(fā)界面入圖3-3所示,虛擬機運行圖3-4所示圖3-3 Eclipse 軟件開發(fā)界面圖3-4 安卓虛擬器運行界面3.4道路施工進度信息采集設(shè)計與實現(xiàn)3.4.1軟件需求 基于Android智能機的道路施工進度信息采集過程如圖3-4所示:圖3-5 道路施工進度信息采集過程由于本文設(shè)計的數(shù)據(jù)要上傳到總控制室上位機進行存儲,所以在手機本地存儲中不考慮數(shù)據(jù)的存儲。所以在道路施工進度信息的采集軟件設(shè)計的關(guān)鍵是道路施工進度信息的錄入操作與數(shù)據(jù)的上傳這兩個部分。針對數(shù)據(jù)的錄入部分,將通過人機交互的界面布局,只要按照依次填寫道路施工信息的各方面內(nèi)容就完成信息錄入工作。而對于數(shù)據(jù)上傳部分,本設(shè)計考慮到TCP/IP協(xié)議提供可靠的傳輸協(xié)議,并且是全雙工的工作方式,而UDP是非面向連接不提供可靠傳輸。所以采用TCP進行數(shù)據(jù)上傳采用的協(xié)議。3.4.2 軟件設(shè)計框架軟件的設(shè)計框架是在分析軟件需求的情況之下進行的軟件設(shè)計思路分析,是進行軟件設(shè)計的基礎(chǔ)與必備工作。如圖3-6,從圖中可以看出軟件設(shè)計框架。軟件的操作過程大致為:進入軟件首先是歡迎界面接著自動跳轉(zhuǎn)到道路施工信息錄入界面,操作人員依次填寫施工路段編號,施工進度,并填寫主控制室上位機TCP服務(wù)端的的IP與端口號,接著就可以進行數(shù)據(jù)的上傳工作。圖3-6 安卓軟件框架3.4.3安卓的Activity技術(shù) Activity是安卓的重要組件之一,作為安卓設(shè)備中用來顯示信息和直接進行人機交互的界面。Activity界面可以放大縮小旋轉(zhuǎn)或者浮動與其他的界面,允許通過一個Activity切換到其他的Activity,頁面與頁面之間進行切換的時候,被切換的Activity被壓入棧中,可以在后面的操作中可以進行彈出堆?;謴?fù)。堆棧遵循“先進后出”的原則,所以可以通過“返回”按鈕恢復(fù)之前的Activity。圖3-7是安卓中Activity的生命周期5。圖3-7 Activity生命周期創(chuàng)建一個Activity首先需要在安卓的配置文件AndroidManifest.xml中聲明這個Activity。一個Activity一生成就進入onCreat()函數(shù),之后進入onStart()和onResume()進入運行狀態(tài),當(dāng)Activity切換到后臺是運行onPause()函數(shù),當(dāng)Activity不可見后調(diào)用 onStop(),只有在關(guān)閉Activity才運行onDestory()結(jié)束該Acticity組件。在Acticity之間進行切換時,需要使用Intent對象為它們傳遞信息,一個Intent對象中封裝目的Activity的對象,通過startActivity(Intent)來啟動Activity。機理是通過AndroidManifest.xml配置文件中的IntentFilter過濾其他的Component,找到具有相同Component屬性的Activity,若找不到與之相匹配,系統(tǒng)將會拋出一個異常。3.4.4功能設(shè)計實現(xiàn)軟件的啟動界面可以有軟件的整體功能介紹、風(fēng)格特性等。優(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/啟動畫面設(shè)置背景 android:layout_width=match_parent android:layout_height=match_parent/賬號密碼輸入框和登陸按鈕部分功能代碼如下: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)聽器,當(dāng)按下登錄按鈕時,執(zhí)行登陸賬號密碼的校驗,若登陸成功則啟動intent.setClass(MainActivity.this,ActivitySecond.class)和MainActivity.this.startActivity(intent)啟動軟件的道路施工進度信息錄入界面。若登陸密碼錯誤,將通過Toast toast=Toast.makeText(MainActivity.this, 您輸入的賬號或密碼不正確, Toast.LENGTH_LONG)顯示“您輸入的賬號或密碼不正確”并將賬號密碼輸入框清空方便使用者繼續(xù)重新輸入。在道路施工進度信息錄入界面如圖3-9,要對主控制室上位機的ip、端口號、施工路段編號、道路施工進度信息進行填寫之后方可進行數(shù)據(jù)上傳。圖3-9 道路施工進度信息錄入界面布局部分代碼如下:/四個單選按鈕功能代碼如下:Overrideprotected void onCreate(Bundle savedInstanceState)/創(chuàng)建Activity時自動運行 super.onCreate(savedInstanceState);setContentView(R.layout.activity_activity_second);/加載界面布局edit=(EditText)findViewById(R.id.gongcheng);/獲取界面中的施工路段編號輸入框?qū)ο骳lass 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é)議對數(shù)據(jù)進行傳輸。手機作為TCP客戶端使用Socket構(gòu)造器來連接指定的服務(wù)器,由于建立網(wǎng)絡(luò)連接和實現(xiàn)網(wǎng)絡(luò)通信并不是很可靠穩(wěn)定的,而且所消耗的時間也是不確定的。如果使用UI線程建立網(wǎng)絡(luò)連接、傳輸數(shù)據(jù)將導(dǎo)致UI線程的阻塞,直接表現(xiàn)出界面“卡死”,因此本次設(shè)計進行的網(wǎng)絡(luò)資源訪問,數(shù)據(jù)傳輸將在新線程中操作。Android應(yīng)用需要訪問網(wǎng)絡(luò)需要在AndroidManifest.xml配置文件中授予訪問互聯(lián)網(wǎng)權(quán)限,配置片段如下: /允許訪問網(wǎng)絡(luò)/允許WiFi操作5 下面部分代碼為新線程中的數(shù)據(jù)傳輸部分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);/ 數(shù)據(jù)封裝到字節(jié)流中outputStream.write(buffer);outputStream.close();socket.close();catch(IOException e) e.printStackTrace();.start();Java中提供了java.net包中含有Socket通信的類7,這里利用Socket構(gòu)造一個指定IP和端口的TCP連接,通過OutputStream outputStream = socket.getOutputStream()9將連接封裝到輸出流中,這樣就可以通過輸出流的操作實現(xiàn)在TCP連接中的數(shù)據(jù)傳輸。由于TCP連接中是面向字節(jié)流的,所以在傳輸數(shù)據(jù)要對數(shù)據(jù)封裝到字節(jié)流中,然后通過write()方法發(fā)送出去。最后還要對輸出流和套接字連接關(guān)閉操作。3.5本章小結(jié)本章主要介紹了在安卓操作系統(tǒng)下的道路施工進度信息采集軟件實現(xiàn)。首先對軟件的功能需求和軟件架構(gòu)進行簡單的分析。接著介紹了安卓的Activity組件技術(shù)。最后詳細介紹了數(shù)據(jù)傳輸功能的實現(xiàn)方法。第四章 上位機開發(fā)4.1開發(fā)環(huán)境介紹Qt是由奇趣公司于1991年開發(fā)的跨平臺C+應(yīng)用程序和UI開發(fā)框架,現(xiàn)已被被諾基亞公司收購成為其旗下的編程工具。它具有許多優(yōu)良特性,比如支持在Windows、Linux、Sunos、SCO等等眾多平臺下運行。開放Qt源代碼庫并且開放了原來商業(yè)平臺的代碼,大量的開發(fā)文檔和豐富的API對開發(fā)者提供了有力的支持。Qt是面向?qū)ο?,對于開發(fā)者來說,良好的封裝機制使得Qt中各個類的復(fù)用性很強。同時提供了信號與槽模式,使得各個元件與關(guān)聯(lián)代碼之間很夠很好的協(xié)作,使得開發(fā)變得易于操作。同時Qt也支持動畫框架、多媒體框架等等為Qt增加了許多功能1。 本文采用的是Qt Creator 2.3 是一種集成了編輯、設(shè)計、幫助、調(diào)試分析等于一體的輕量級集成開發(fā)環(huán)境(IDE),能夠讓首次接觸Qt框架的開發(fā)人員迅速上手11。圖4-1 Qt Creator 軟件開發(fā)環(huán)境4.2 上位機整體架構(gòu) 啟動上位機后要實現(xiàn)數(shù)據(jù)的接收與管理并且支持數(shù)據(jù)的串口通信以實現(xiàn)系統(tǒng)的擴展。所以上位機的整體架構(gòu)可以分為3個功能模塊。如圖4-2所示圖4-2 上位機整體架構(gòu)道路信息接收模塊主要實現(xiàn)的功能是實現(xiàn)利用TCP/IP協(xié)議在PC上運行TCP服務(wù)端程序并監(jiān)聽制定的端口。安卓手機客戶端作為TCP連接的客戶端,當(dāng)服務(wù)端接收到安卓手機客戶端的連接請求后,允許連接并接收數(shù)據(jù)。并對接收到的數(shù)據(jù)進行存儲。數(shù)據(jù)庫管理模塊主要是對接收到的數(shù)據(jù)信息進行存儲更新等,當(dāng)然也允許管理人員手動修改或刪除某些數(shù)據(jù)。也可以進行數(shù)據(jù)查詢操作。串口通信模塊主要是對數(shù)據(jù)庫中的一些信息進行打包封裝進行傳輸給下位機。當(dāng)然在傳輸之前要對串口進行設(shè)置比如傳輸波特率、數(shù)據(jù)位數(shù)、校驗方式等。本次上位機開發(fā)中開發(fā)的類中各個類的繼承關(guān)系主要可以通過圖4-3層次結(jié)構(gòu)圖表示。圖4-3 a) 各個模塊界面繼承QDialog基類 4-3 b) 主界面界面繼承QMainWindow基類圖4-3 c) 串口通信中類的層次結(jié)構(gòu) 圖4-3d) 串口通信中線程類繼承關(guān)系圖4-3 層次結(jié)構(gòu)圖4.3各個模塊的設(shè)計與實現(xiàn)4.3.1道路信息接收模塊 (1)界面設(shè)計道路信息接收模塊的人機交互界面簡潔,三個基礎(chǔ)按鈕“開始監(jiān)聽”、“停止監(jiān)聽”、“退出”作為控制TCP服務(wù)端的啟動與關(guān)閉。同時由于電腦端口有可能被其他應(yīng)用程序占用,所以設(shè)置輸入框用于設(shè)置監(jiān)聽的端口號,同時能夠顯示當(dāng)前電腦的IP地址。人機交互界面如圖4-4所示圖4-4 道路施工進度信息接收界面Qt 支持XML文件的布局,同時也可以在設(shè)計環(huán)境中進行拖拽合適的元件,集成環(huán)境會根據(jù)你的操作生成對應(yīng)的XML文件。設(shè)置好的界面布局文件要在這個類的構(gòu)造函數(shù)中添加UI界面,即ui-setupUi(this);以下代碼簡單展示“開始監(jiān)聽”按鈕的XML代碼 開始監(jiān)聽 (2)功能設(shè)計實現(xiàn) Qt提供了QTcpServer 類用于編寫TCP服務(wù)端的應(yīng)用程序,而QTcpSocket 類提供了TCP協(xié)議的一些常用的接口,利用QIODevice 類實現(xiàn)對數(shù)據(jù)的發(fā)送與接收。圖4-5為TCP服務(wù)端工作流程圖。圖4-5 TCP服務(wù)端工作流程圖首先要在頭文件中進行類的申明,這里定義tcp 類繼承QDialog,在類中包含有兩個最重要的QTcpServer 和QTcpSocket類型的成員變量tcpserver和tcpServerConnection。定義如下: QTcpServer tcpserver;QTcpSocket *tcpServerConnection; 通過Qt的提供的信號與槽的機制為各個按鈕組件添加槽函數(shù)1。本文在類的構(gòu)造函數(shù)中對按鈕與槽函數(shù)進行關(guān)聯(lián)。代碼如下:connect(ui-startButton,SIGNAL(clicked(),this,SLOT(start(); connect(ui-quitButton,SIGNAL(clicked(),this,SLOT(close();connect(&tcpserver,SIGNAL(newConnection(),this,SLOT(acceptConnection();其中將按鈕的單擊信號與該類的成員槽函數(shù)關(guān)聯(lián)。當(dāng)按下“開始監(jiān)聽”按鈕是,先檢查輸入框中是否輸入端口號,若沒有則彈出提示框提示是否使用默認端口12345,若有則獲取端口號進行監(jiān)聽。判斷服務(wù)端是否正在監(jiān)聽該端口,如過建立監(jiān)聽成功,隨時等待客戶端的連接請求。否則顯示錯誤信息。關(guān)鍵代碼如下:port=ui-portEdit-text().toInt();/獲取端口while(!tcpserver.isListening()&!tcpserver.listen(QHostAddress:Any,port)當(dāng)客戶端的連接請求到來時,QTcpSocket會產(chǎn)生一個newConnection()信號進而觸發(fā)槽函數(shù)。在槽函數(shù)中可以獲取已經(jīng)建立連接的子套接字,這樣就可以接收很多客戶端的連接,利用nextPendingConnection()函數(shù)來獲取連接的指針。對每個連接當(dāng)連接中有數(shù)據(jù)可以讀取時會產(chǎn)生一個readyRead()信號。這里可以通過建立槽函數(shù)將連接中的數(shù)據(jù)的處理放到一個槽函數(shù)中進行處理,本設(shè)計用updateServerProgress()函數(shù)對數(shù)據(jù)進行處理。接下來一直保持TCP服務(wù)端處于監(jiān)聽狀態(tài),只有在按下“停止監(jiān)聽”才關(guān)閉服務(wù)端。這樣才不會因為接受了一個連接就關(guān)閉服務(wù)端,才可以不斷的接受來自不同客戶端的連接請求。由于TCP連接是面向字節(jié)流的。所以在數(shù)據(jù)接收也是以字節(jié)數(shù)組的形式從連接中獲取數(shù)據(jù)。在updateServerProgress()函數(shù)中,通過readAll()函數(shù)將連接子套接字中的數(shù)據(jù)賦予字節(jié)數(shù)組。由于字節(jié)流是沒有結(jié)構(gòu)的。根據(jù)雙方直接的數(shù)據(jù)通信進行解析出有意義的數(shù)據(jù)。字節(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是一個結(jié)構(gòu),定義了數(shù)據(jù)幾個成員變量。block是接收到的字節(jié)數(shù)組。通過以上代碼把字節(jié)流中的數(shù)據(jù)解析出來存儲到結(jié)構(gòu)中。接下來就是要把結(jié)構(gòu)中的數(shù)據(jù)存儲到數(shù)據(jù)庫中。本設(shè)計還提供了一些提示功能,增加用戶界面的友好性。比如在按下停止監(jiān)聽按鈕時,顯示本次監(jiān)聽一共更新了多少條數(shù)據(jù)。實現(xiàn)方法是在每次接收數(shù)據(jù)的時候,對靜態(tài)變量進行加一,在顯示完后對該靜態(tài)變量置零操作。同時,在連接過程中出現(xiàn)錯誤,將以對話框的形式顯示錯誤信息。4.3.2 數(shù)據(jù)庫管理模塊(1)SQLite數(shù)據(jù)庫介紹SQLite是一種輕量級的數(shù)據(jù)庫,雖然它沒有像oracle、MySQL等等那樣強大的數(shù)據(jù)庫功能,但是它非常適用于少量的數(shù)據(jù)管理而且占用的系統(tǒng)資源很少,只需要幾百K的內(nèi)存就可以運行,而且運行速度比它們都快快,是一種嵌入式的數(shù)據(jù)庫引擎。 SQLite是通過通過編程語言直接進行API調(diào)用,只需要基礎(chǔ)的數(shù)據(jù)庫知識就可以完成對數(shù)據(jù)庫的基本操作。它不像常見的客戶-服務(wù)器模式的數(shù)據(jù)庫模式,它是以嵌入到程序中變成程序的一個部分,通過鎖定整個數(shù)據(jù)文件進行對數(shù)據(jù)庫的數(shù)據(jù)進行數(shù)據(jù)操作。 SQLite可以說“麻雀雖小五臟俱全”,雖然只有4.43M左右的大小,但支持的數(shù)據(jù)庫大小在2T左右且支持ACID事務(wù),支持多種開發(fā)語言例如C+、Java、C#、C、PHP等等(2)數(shù)據(jù)庫模塊的界面開發(fā)首先總控制室人員可以通過顯示全部各個自工作面的施工進度信息來對整體道路施工進度有個整體性的進度了解,所以本設(shè)計通過表格的形式將數(shù)據(jù)庫中施工進度表顯示在表格中。這里也支持管理人員手動對表格進行數(shù)據(jù)的修改與更新,也可以通過施工路段號快速查找施工進度信息。所以界面如圖4-6所示。圖4-6 數(shù)據(jù)庫管理模塊(3)數(shù)據(jù)庫模塊功能設(shè)計實現(xiàn) Qt通過QtSQL模塊模塊為數(shù)據(jù)庫的訪問提供支持,使得Qt的應(yīng)用程序與數(shù)據(jù)庫無縫銜接。它為開發(fā)人員提供了與具體數(shù)據(jù)庫平臺無關(guān)的調(diào)用接口,極大地簡化的數(shù)據(jù)庫的操作,開發(fā)人員熟悉SELECT、INSERT、UPDATE、DELETE等基本的SQL操作,便可以通過QSqlQuery直接執(zhí)行SQL語句并處理返回結(jié)果。與此同時還提供了更加高層的抽象類比如QSqlTableModel、QSqlRelationTableModel等,所以Qt對數(shù)據(jù)庫的操作提供了很好的支持。 Qt中內(nèi)置SQLite,需要在頭文件加入#include,在工程的.pro文件中加入QT+=sql來完成數(shù)據(jù)庫開發(fā)的必要操作。本設(shè)計中通過在SQLite數(shù)據(jù)庫中添加道路施工進度表格的方式對道路施工進度信息進行管理操作。如圖圖4-7顯示了道路施工進度表格創(chuàng)建流程圖。圖4-7 道路施工進度表格創(chuàng)建流程圖 關(guān)鍵代碼如下: 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類的成員函數(shù)addDatabase()建立SQLite的連接并setDatabaseName()函數(shù)建立連接名稱。通過QSqlQuery類的exec()函數(shù)進行底層數(shù)據(jù)庫的操作。通過SELECT count(*) FROM sqlite_master WHERE type=table and name=projectprogressSQL語句查詢SQLite數(shù)據(jù)庫中是否存在Projectprogress表格。當(dāng)表不存在時返回0,通過query.exec(create ta- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 道路 施工進度 信息 采集 收集 系統(tǒng)軟件 設(shè)計
鏈接地址:http://ioszen.com/p-660832.html