




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 基于Qt+Linux平臺的氣象信息終端研究摘要:針對國家公共管理部門對氣象信息的需求,設(shè)計了一種專業(yè)化的基于Qt平臺的氣象信息顯示終端。該系統(tǒng)融合SMS短信技術(shù)、GPRS無線通訊技術(shù)、語音合成技術(shù)、LED顯示技術(shù)、嵌入式Linux系統(tǒng)和Qt軟件設(shè)計等技術(shù),實現(xiàn)了遠程氣象信息接收,信息顯示與語音播報功能。詳細描述了系統(tǒng)任務(wù)要求、軟硬件設(shè)計方案及基于Linux的LCD接口驅(qū)動。實驗和使用表明:該終端信息內(nèi)容顯示清晰,通訊穩(wěn)定性高,滿足氣象信息的獲取。關(guān)鍵詞:氣象信息;嵌入式Linux;LED顯示;LCD接口驅(qū)動Design of Meteorological Information Displa
2、y Terminal Based on Qt PlatformAbstract: Based on the national public administrations demandfor meteorological early warning, a specialized meteorological Information display terminal is designed. With interesting SMS technology , GPRS wireless communication technology, speech synthesis technology,
3、LED display technology, embedded Linux technology and Qt software designing technology, the system realizes receiving, displaying and broadcasting remote meteorological messages. The task requirement, hardware design, soft ideas and the LCD interface driver based on Linux are described in details. E
4、xperimental results show that the system displays images distinctly, communicates with the control center stably and meets the design requirement entirely.Key Words:meteorological information;embedded Linux; LED display; LCD Driver引言 由于現(xiàn)代自然環(huán)境的不斷惡化,各種天氣、地質(zhì)等災(zāi)害越來越頻繁。為了降低自然災(zāi)害的影響,如何將災(zāi)害信息和災(zāi)害預(yù)防知識及時的發(fā)布,是亟待解
5、決的問題。在現(xiàn)代條件下,雖然可以通過電視、廣播、網(wǎng)絡(luò)、手機短信等方式發(fā)布,但這些信息發(fā)布方式具有定時定點不夠方便快捷、信息內(nèi)容需要預(yù)先定制、信息傳輸時間滯后、覆蓋人群有限等缺點。根據(jù)國家氣象局“氣象災(zāi)害預(yù)警系統(tǒng)”的整體規(guī)劃,本文將現(xiàn)代信息服務(wù)技術(shù)與氣象部門的實際需求緊密結(jié)合,融合SMS短信技術(shù)、GPRS無線通訊技術(shù)、3 網(wǎng)絡(luò)技術(shù)、語音聲訊技術(shù)、LED顯示技術(shù)、嵌入式Linux系統(tǒng)和Qt軟件設(shè)計等技術(shù)設(shè)計了一種專業(yè)化的氣象信息顯示終端。該終端的設(shè)計給出了基于Qt平臺的系統(tǒng)軟件設(shè)計和基于嵌入式Linux的LCD接口驅(qū)動設(shè)計。實驗和應(yīng)用表明:該系統(tǒng)通訊穩(wěn)定可高,信息內(nèi)容顯示清晰,滿足氣象信息預(yù)測要求
6、。與傳統(tǒng)的氣象預(yù)警信息發(fā)布方式相比,這種依托LED顯示技術(shù)的氣象信息發(fā)布方式具有時效性強、覆蓋面廣、傳輸內(nèi)容靈活,可控性強、信息多樣化、信息符號顯示明顯和實用性強等優(yōu)點,為各種氣象信息的及時發(fā)布提供了一種新的專業(yè)化的途徑。2相關(guān)知識和技術(shù)2.1 Linux簡介Linux是個和Unix相似、以Unix核心為基礎(chǔ)、完全內(nèi)存保護、多任務(wù)多進程的操作系統(tǒng)。支持廣發(fā)的計算機硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC等現(xiàn)有的大部分芯片。程式源碼全部公開,任何人可以修改并在GNU通用公共許可證(GNU General Public License
7、)下發(fā)行(陳英和梁建武,2008),這樣,開發(fā)人員可以對操作系統(tǒng)進行定制,再也不必擔(dān)心像MS windows操作系統(tǒng)中"后門"的威脅。同時由于有GPL的控制,大家開發(fā)的東西大都相互兼容不會走向分裂之路。Linux用戶遇到問題時可以通過Internet向網(wǎng)上成千上萬的Linux開發(fā)者請教,這使最困難的問題也有辦法解決。Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)的應(yīng)用軟件都已移植到了Linux上。Linux還提供了強大的網(wǎng)絡(luò)功能,有多種可選擇窗口管理器(X windows)。其強大的語言編譯器gcc、g+等也可以很容易得到。不但成
8、熟完善、而且使用方便,為嵌入操作系統(tǒng)提供了一個極有吸引力的選擇。 Linux已經(jīng)被移植到多種硬件平臺,這對受開銷、時間限制的研究與開發(fā)項目是很有吸引力的。原型可以在標準平臺上開發(fā)然后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程。2.1.1 Linux主要特點1.符合POSIX 1003.1標準 POSIX 1003.1標準定義了一個最Unix操作系統(tǒng)接口,任何操作系統(tǒng)只有符合這一標準,才有可能運Unix程序。考慮到Unix具有豐富的應(yīng)用程序,當(dāng)今絕大多數(shù)操作系統(tǒng)都把滿足POSIX 1003.1標準作為實現(xiàn)目標,Linux也不例外,它完全支持POSIX 1003.1標準。另外,為了使
9、Unix System V和BSD上的程序能直接在Linux上運行,Linux還增加了部分System V和BSD的系統(tǒng)接口,使Linux成為一個完善的Unix程序開發(fā)系統(tǒng)。2. 支持多用戶訪問和多任務(wù)編程 Linux是一個多用戶操作系統(tǒng),它允許多個用戶同時訪問系統(tǒng)而不會造成用戶之間的相互干擾。另外,Linux還支持真正的多用戶編程,一個用戶可以創(chuàng)建多個進程,并使各個進程協(xié)同工作來完成用戶的需求。3.采用頁式存儲管理 頁式存儲管理使Linux能更有效地利用物理存儲空間,頁面的換入換出為用戶提供了更大的存儲空間。4. 支持動態(tài)鏈接 用戶程序的執(zhí)行往往離不開標準庫的支持,一般的系統(tǒng)往往采用靜態(tài)鏈接
10、方式即在裝配階段就已將用戶程序和標準庫鏈接好,這樣,當(dāng)多個進程運行時,可能會出現(xiàn)庫代碼在內(nèi)存中有多個副本而浪費存儲空間的情況。Linux 支持動態(tài)鏈接方式,當(dāng)運行時才進行庫鏈接,如果所需要的庫已被其它進程裝入內(nèi)存,則不必再裝入,否則才從硬盤中將庫調(diào)入。這樣能保證內(nèi)存中的庫程序代碼是唯一的。5.支持多種文件系統(tǒng) Linux能支持多種文件系統(tǒng)。目前支持的文件系統(tǒng)有:EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最常用的文件系統(tǒng)是EXT2,它的文件名長度可達255字符,并且還
11、有許多特有的功能,使它比常規(guī)的Unix文件系統(tǒng)更加安全。 6.支持TCP/IP、SLIP和PPP 在Linux中,用戶可以使用所有的網(wǎng)絡(luò)服務(wù),如網(wǎng)絡(luò)文件系統(tǒng)、遠程登錄等。SLIP和PPP能支持串行線上的TCP/IP協(xié)議的使用,這意味著用戶可用一個高速Modem通過電話線連入Internet網(wǎng)中2.1.2 Linux的優(yōu)點(1)Linux可以隨意地配置,不需要任何的許可證或商家的合作關(guān)系。 (2)它是免費的,源代碼可以得到。這是最吸引人的。毫無疑問,這會節(jié)省大量(3)它本身內(nèi)置網(wǎng)絡(luò)支持。 (4)Linux的高度模塊化使添加部件非常容易。(5)Linux在臺式機上的成功,使大家
12、看到了linux在嵌入式系統(tǒng)中的輝煌前景。嵌入式產(chǎn)品中選擇什么樣的操作系統(tǒng)極為重要,嵌入式Linux由于其開源特性、實時性好、可移植、內(nèi)置網(wǎng)絡(luò)支持等優(yōu)點在嵌入式領(lǐng)域成為主力軍。如今,業(yè)界已經(jīng)達成共識:即嵌入式linux是大勢所趨,其巨大的市場潛力與醞釀的無限商機必然會吸引眾多的廠商進入這一領(lǐng)域。 2.2 Qt開發(fā)工具簡介 Qt是諾基亞開發(fā)的一個跨平臺的C+圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮模苋菀讛U展,并且允許真正地組件編程。自從1996年早些時候,Qt進入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的
13、基礎(chǔ)。Qt也是流行的Linux桌面環(huán)境KDE 的基礎(chǔ)。基本上,Qt 同X Window 上的Motif,Openwin,GTK 等圖形界面庫和Windows 平臺上的MFC,OWL,VCL,ATL 是同類型的東西,但Qt具有優(yōu)良的跨平臺特性、面向?qū)ο蟆⒇S富的API、大量的開發(fā)文檔等優(yōu)點。 信號和槽機制是QT 的核心機制,要精通QT 編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是QT 的核心特性,也是 QT 區(qū)別于其它工具包的重要地方。信號和槽是QT 自行定義的一種通信機制,它獨立于標準的 C/C+ 語言,因此要正確的處理信號和槽,必須借助一個稱為moc(Met
14、a Object Compiler)的QT 工具,該工具是一個C+ 預(yù)處理程序,它為高層次的事件處理自動生成所需要的附加代碼。2.2.1 Qt主要特性(1)面向?qū)ο螅苋菀讛U展,并且允許真正的組件編程;(2)Qt對各個模塊進行了良好的封裝,使各模塊可重用性較好;(3)優(yōu)良的跨平臺特性,使用Qt類編寫的程序可以實現(xiàn)“一次編碼,到處編譯”,極大的降低了跨平臺開發(fā)的難;(4)構(gòu)件支持,對于對象間通信,Qt沒有采用函數(shù)回調(diào)的方法,而是采用了一種全新并且可選的被稱為“信號與槽”的對象間通信機制,通過一個對象信號的發(fā)射,另一個槽函數(shù)的響應(yīng),使各個對象之間的通信安全而且高效。Qt的這些特點使它非常適合于真正
15、的構(gòu)件編程,同時使各個組件之間的協(xié)同工作變得十分簡單,并且Qt是直接基于Xlib的,不依賴Motif工具包,所以它的執(zhí)行效率比一般的基于平臺的代碼的執(zhí)行效率要高。2.2.2 Qt編程機制簡介 (1)Qt系統(tǒng)的信號與槽機制簡介 信號/槽機制是Qt的一個中心特征并且也許是Qt與其它工具包的最不相同的部分。在圖形用戶界面編程中,我們經(jīng)常希望一個窗口部件的一個變化被通知給另一個窗口部件。更一般地,我們希望任何一類的對象可以和其它對象進行通訊。 較老的工具包使用一種被稱作回調(diào)的通訊方式來實現(xiàn)同一目的?;卣{(diào)是指一個函數(shù)的指針,所以如果你希望一個處理函數(shù)通知你一些
16、事件,你可以把另一個函數(shù)(回調(diào))的指針傳遞給處理函數(shù)。處理函數(shù)在適當(dāng)?shù)臅r候調(diào)用回調(diào)?;卣{(diào)有兩個主要缺點。首先他們不是類型安全的。我們從來都不能確定處理函數(shù)使用了正確的參數(shù)來調(diào)用回調(diào)。因此容易造成進程崩潰,另外一個問題是,回調(diào)這種方式緊緊的綁定了圖形用戶接口的功能元素,因而很難把開發(fā)進行獨立的分類。 Qt的信號與槽機制是不同的。Qt的信號與槽均以函數(shù)形式出現(xiàn),Qt的窗口部件有很多預(yù)定義的信號,但我們也可以通過繼承來加入我們自己的信號。槽就是一個可以被調(diào)用處理特定信號的函數(shù)。Qt的窗口部件有很多預(yù)定義的槽,但是通常的習(xí)慣是你可以加入自己的槽,這樣你就可以處理你所感興趣的信號。我們可以用
17、connect()函數(shù)對需要的信號和槽進行連接。當(dāng)對象的內(nèi)部狀態(tài)發(fā)生改變,信號就被發(fā)射。從某種意義上講,它們也許對外面的世界感興趣。這就是所有的對象通訊時所做的一切。它不知道也不注意無論有沒有東西接收它所發(fā)射的信號。當(dāng)一個信號被發(fā)射,它所連接的槽會被立即執(zhí)行,就像一個普通函數(shù)調(diào)用一樣。信號/槽機制完全不依賴于任何一種圖形用戶界面的事件回路。當(dāng)所有的槽都返回后發(fā)射的信號也將返回。信號與插槽機制并不要求類之間互相知道細節(jié),這樣就可以相對容易的開發(fā)出代碼可高重用的類。 信號和槽的機制是類型安全的:一個信號的簽名必須與它的接收槽的簽名相匹配。(實際上一個槽的簽名可以比它接收的信號的簽名少,
18、因為它可以忽略額外的簽名。)因為簽名是一致的,編譯器就可以幫助我們檢測類型不匹配。它以警告的方式報告類型錯誤,而不會使系統(tǒng)產(chǎn)生崩潰。信號和槽是寬松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道也不用注意哪個槽要接收這個信號。Qt的信號和槽的機制可以保證如果你把一個信號和一個槽連接起來,槽會在正確的時間使用信號的參數(shù)而被調(diào)用。信號和槽可以使用任何數(shù)量、任何類型的參數(shù)。它們是完全類型安全的:不會再有回調(diào)核心轉(zhuǎn)儲(core dump)。 總體來看,信號和槽構(gòu)成了一個強有力的組件編程機制。如果一個類要使用信號與槽機制,它就必須是從QObject或QObject的子類繼承,而且類的定義必
19、須加上Q_OBJECT宏。signals、slots和emit是Qt特有的關(guān)鍵字,分別用來表示信號、槽、和發(fā)送信號,移除這些關(guān)鍵字和預(yù)處理程序,就可以使用標準的C+編譯器。槽同其他函數(shù)一樣也具有訪問權(quán)限,只是槽的訪問權(quán)限決定了誰可以和它相連,如一個public slots:包含了任何信號都可以相連的槽。一個protected slots:包含了只有這個類和它的子類的信號才能連接的槽。這就是說這些槽只是類的實現(xiàn)的一部分,而不是它和外界的接口。 一個private slots:包含了只有這個類本身的信號可以連接的槽,甚至它的子類都沒有獲得連接的權(quán)利。(2)Q
20、t元對象系統(tǒng) Qt中的元對象系統(tǒng)是用來處理對象間通訊的信號/槽機制、運行時的類型信息和動態(tài)屬性系統(tǒng)。它基于下列三類:QObject類、類聲明中的私有段中的Q_OBJECT宏、元對象編譯器(moc)。 moc讀取C+源文件。如果它發(fā)現(xiàn)其中包含一個或多個類的聲明中含有Q_OBJECT宏,它就會給含有Q_OBJECT宏的類生成另一個含有元對象代碼的C+源文件。這個生成的源文件可以被類的源文件包含(#include)到或者和這個類的實現(xiàn)一起編譯和連接。 除了提供對象間通訊的信號和槽機制之外,QObject中的元對象代碼可以實現(xiàn)其它特征:
21、0;(1)className()函數(shù)在運行的時候以字符串返回類的名稱,不需要C+編譯器中的本地運行類型信息(RTTI)的支持。 (2)inherits()函數(shù)返回這個對象是否是一個繼承于QObject繼承樹中一個特定類的類的實例。 (3)tr()和trUtf8()兩個函數(shù)是用于國際化中的字符串翻譯。 (4)setProperty()函數(shù)和property()函數(shù),這兩個函數(shù)是用來通過名稱動態(tài)設(shè)置和獲得對象屬性的。 (5)metaObject()函數(shù)返回這個類所關(guān)聯(lián)的元對象。雖然使用QObject
22、作為一個基類而不使用Q_OBJECT宏和元對象代碼是可以的,但是如果Q_OBJECT宏沒有被使用,那么這里的信號和槽以及其它特征描述都不會被提供。根據(jù)元對象系統(tǒng)的觀點,一個沒有元代碼的QObject的子類和它含有元對象代碼的最近的祖先相同。舉例來說就是,className()將不會返回你的類的實際名稱,返回的是它的這個祖先的名稱。故強烈建議QObject 的所有子類使用Q_OBJECT宏,而不管它們是否實際使用了信號、槽和屬性。3 氣象終端總體構(gòu)架設(shè)計4 SQLite數(shù)據(jù)庫 SQLite 是一個開源的嵌入式關(guān)系數(shù)據(jù)庫,它可以減少應(yīng)用程序管理數(shù)據(jù)的開銷,SQLite 可移植性好、很容易
23、使用、很小、高效而且可靠。目前在Android 系統(tǒng)中集成的是 SQLite3 版本,SQLite 不支持靜態(tài)數(shù)據(jù)類型,而是使用列關(guān)系。這意味著它的數(shù)據(jù)類型不具有表列屬性,而具有數(shù)據(jù)本身的屬性。 當(dāng)某個值插入數(shù)據(jù)庫時,SQLite 將檢查它的類型。如果該類型與關(guān)聯(lián)的列不匹配,則SQLite 會嘗試將該值轉(zhuǎn)換成列類型。如果不能轉(zhuǎn)換,則該值將作為其本身具有的類型存儲。SQLite 支持 NULL、INTEGER、REAL、TEXT和BLOB數(shù)據(jù)類型。例如:可以在 Integer 字段中存放字符串,或者在布爾型字段中存放浮點數(shù),或者在字符型字段中存放日期型值。但是有一種例外,如果你的主鍵是 INTE
24、GER ,那么只能存儲64位整數(shù),當(dāng)向這種字段中保存除整數(shù)以外的數(shù)據(jù)時,將會產(chǎn)生錯誤。另外,SQLite 在解析REATE TABLE語句時,會忽略CREATE TABLE語句中跟在字段名后面的數(shù)據(jù)類型信息。4.1 SQLite數(shù)據(jù)庫的模塊分析 SQLite采用了模塊的設(shè)計,它由三個子系統(tǒng),包括8個獨立的模塊構(gòu)成。 Interface B-TreeCompilerBackend PagerTokenizer OS InterfaceParser CoreCode GeneratorDatabaseVirtual Machine1. 接口(Interface) 接口由SQLite C API組成
25、,也就是說不管是程序、腳本語言還是庫文件,最終都是通過它與SQLite交互的(我們通常用得較多的ODBC/JDBC最后也會轉(zhuǎn)化為相應(yīng)C API的調(diào)用)。 2.編譯器(Compiler) 在編譯器中,分詞器(Tokenizer)和分析器(Parser)對SQL進行語法檢查,然后把它轉(zhuǎn)化為底層能更方便處理的分層的數(shù)據(jù)結(jié)構(gòu)-語法樹,然后把語法樹傳給代碼生成器(code generator)進行處理。而代碼生成器根據(jù)它生成一種針對SQLite的匯編代碼,最后由虛擬機(Virtual Machine)執(zhí)行。 3.虛擬機(Virtual Machine) 架構(gòu)中最核心的部分是虛擬機,或者叫做虛擬數(shù)據(jù)庫引擎(Virtual Database Engine,VDBE)。它和Java虛擬機相似,解釋執(zhí)行字節(jié)代碼。VDBE的字節(jié)代碼由128個操作碼(opcodes)構(gòu)成,它們主要集中在數(shù)據(jù)庫操作。它的每一條指令都用來完成特定的數(shù)據(jù)庫操作(比如打開一個表的游標)或者為這些操作??臻g的準備(比如壓入?yún)?shù))??傊?,所有的這些指令都是為了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 1998年以來中國的積極財政政策及其效果評析
- 第三批先進性教育活動試點分析評析階段動員大會講話
- 成都購房合同:農(nóng)村集體建設(shè)用地購買流程
- 水利設(shè)施測繪技術(shù)員勞動合同書
- 城市基礎(chǔ)設(shè)施建設(shè)拆遷補償與房屋分配協(xié)議
- 餐飲店合伙人風(fēng)險共擔(dān)協(xié)議
- 網(wǎng)絡(luò)安全企業(yè)實習(xí)生網(wǎng)絡(luò)安全技術(shù)實習(xí)協(xié)議
- 拆除工程環(huán)保責(zé)任協(xié)議書
- 高端商務(wù)寫字樓場地租賃與物業(yè)服務(wù)合同
- 癌癥護理查房
- 山東省煙草專賣局招聘筆試試題2024
- 2025年高考英語仿真模擬試卷(含答案解析)
- 人教版數(shù)學(xué)八年級下冊期末復(fù)習(xí)試卷
- 《新能源材料概論》 課件 第3章 化學(xué)-電能轉(zhuǎn)換新能源材料
- 種植體修復(fù)前脫落率改進目標核心策略落實要點
- 公園物業(yè)服務(wù)投標方案(2023修訂版)(技術(shù)方案)
- 環(huán)境污染和生態(tài)破壞事故應(yīng)急預(yù)案樣本(2篇)
- 中北大學(xué)炸藥理論復(fù)習(xí)
- 《工逆向工程與增材制造》課件-19. Geomagic Design X 實體建模方法
- 2024低空經(jīng)濟場景白皮書
- 《“無廢商業(yè)街區(qū)(商圈)”建設(shè)技術(shù)規(guī)范》編制說明
評論
0/150
提交評論