基于Qt+Linux平臺的氣象信息終端研究_第1頁
基于Qt+Linux平臺的氣象信息終端研究_第2頁
基于Qt+Linux平臺的氣象信息終端研究_第3頁
基于Qt+Linux平臺的氣象信息終端研究_第4頁
基于Qt+Linux平臺的氣象信息終端研究_第5頁
已閱讀5頁,還剩6頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 基于Qt+Linux平臺的氣象信息終端研究摘要:針對國家公共管理部門對氣象信息的需求,設計了一種專業化的基于Qt平臺的氣象信息顯示終端。該系統融合SMS短信技術、GPRS無線通訊技術、語音合成技術、LED顯示技術、嵌入式Linux系統和Qt軟件設計等技術,實現了遠程氣象信息接收,信息顯示與語音播報功能。詳細描述了系統任務要求、軟硬件設計方案及基于Linux的LCD接口驅動。實驗和使用表明:該終端信息內容顯示清晰,通訊穩定性高,滿足氣象信息的獲取。關鍵詞:氣象信息;嵌入式Linux;LED顯示;LCD接口驅動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引言 由于現代自然環境的不斷惡化,各種天氣、地質等災害越來越頻繁。為了降低自然災害的影響,如何將災害信息和災害預防知識及時的發布,是亟待解

5、決的問題。在現代條件下,雖然可以通過電視、廣播、網絡、手機短信等方式發布,但這些信息發布方式具有定時定點不夠方便快捷、信息內容需要預先定制、信息傳輸時間滯后、覆蓋人群有限等缺點。根據國家氣象局“氣象災害預警系統”的整體規劃,本文將現代信息服務技術與氣象部門的實際需求緊密結合,融合SMS短信技術、GPRS無線通訊技術、3 網絡技術、語音聲訊技術、LED顯示技術、嵌入式Linux系統和Qt軟件設計等技術設計了一種專業化的氣象信息顯示終端。該終端的設計給出了基于Qt平臺的系統軟件設計和基于嵌入式Linux的LCD接口驅動設計。實驗和應用表明:該系統通訊穩定可高,信息內容顯示清晰,滿足氣象信息預測要求

6、。與傳統的氣象預警信息發布方式相比,這種依托LED顯示技術的氣象信息發布方式具有時效性強、覆蓋面廣、傳輸內容靈活,可控性強、信息多樣化、信息符號顯示明顯和實用性強等優點,為各種氣象信息的及時發布提供了一種新的專業化的途徑。2相關知識和技術2.1 Linux簡介Linux是個和Unix相似、以Unix核心為基礎、完全內存保護、多任務多進程的操作系統。支持廣發的計算機硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC等現有的大部分芯片。程式源碼全部公開,任何人可以修改并在GNU通用公共許可證(GNU General Public License

7、)下發行(陳英和梁建武,2008),這樣,開發人員可以對操作系統進行定制,再也不必擔心像MS windows操作系統中"后門"的威脅。同時由于有GPL的控制,大家開發的東西大都相互兼容不會走向分裂之路。Linux用戶遇到問題時可以通過Internet向網上成千上萬的Linux開發者請教,這使最困難的問題也有辦法解決。Linux帶有Unix用戶熟悉的完善的開發工具,幾乎所有的Unix系統的應用軟件都已移植到了Linux上。Linux還提供了強大的網絡功能,有多種可選擇窗口管理器(X windows)。其強大的語言編譯器gcc、g+等也可以很容易得到。不但成

8、熟完善、而且使用方便,為嵌入操作系統提供了一個極有吸引力的選擇。 Linux已經被移植到多種硬件平臺,這對受開銷、時間限制的研究與開發項目是很有吸引力的。原型可以在標準平臺上開發然后移植到具體的硬件上,加快了軟件與硬件的開發過程。2.1.1 Linux主要特點1.符合POSIX 1003.1標準 POSIX 1003.1標準定義了一個最Unix操作系統接口,任何操作系統只有符合這一標準,才有可能運Unix程序。考慮到Unix具有豐富的應用程序,當今絕大多數操作系統都把滿足POSIX 1003.1標準作為實現目標,Linux也不例外,它完全支持POSIX 1003.1標準。另外,為了使

9、Unix System V和BSD上的程序能直接在Linux上運行,Linux還增加了部分System V和BSD的系統接口,使Linux成為一個完善的Unix程序開發系統。2. 支持多用戶訪問和多任務編程 Linux是一個多用戶操作系統,它允許多個用戶同時訪問系統而不會造成用戶之間的相互干擾。另外,Linux還支持真正的多用戶編程,一個用戶可以創建多個進程,并使各個進程協同工作來完成用戶的需求。3.采用頁式存儲管理 頁式存儲管理使Linux能更有效地利用物理存儲空間,頁面的換入換出為用戶提供了更大的存儲空間。4. 支持動態鏈接 用戶程序的執行往往離不開標準庫的支持,一般的系統往往采用靜態鏈接

10、方式即在裝配階段就已將用戶程序和標準庫鏈接好,這樣,當多個進程運行時,可能會出現庫代碼在內存中有多個副本而浪費存儲空間的情況。Linux 支持動態鏈接方式,當運行時才進行庫鏈接,如果所需要的庫已被其它進程裝入內存,則不必再裝入,否則才從硬盤中將庫調入。這樣能保證內存中的庫程序代碼是唯一的。5.支持多種文件系統 Linux能支持多種文件系統。目前支持的文件系統有:EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最常用的文件系統是EXT2,它的文件名長度可達255字符,并且還

11、有許多特有的功能,使它比常規的Unix文件系統更加安全。 6.支持TCP/IP、SLIP和PPP 在Linux中,用戶可以使用所有的網絡服務,如網絡文件系統、遠程登錄等。SLIP和PPP能支持串行線上的TCP/IP協議的使用,這意味著用戶可用一個高速Modem通過電話線連入Internet網中2.1.2 Linux的優點(1)Linux可以隨意地配置,不需要任何的許可證或商家的合作關系。 (2)它是免費的,源代碼可以得到。這是最吸引人的。毫無疑問,這會節省大量(3)它本身內置網絡支持。 (4)Linux的高度模塊化使添加部件非常容易。(5)Linux在臺式機上的成功,使大家

12、看到了linux在嵌入式系統中的輝煌前景。嵌入式產品中選擇什么樣的操作系統極為重要,嵌入式Linux由于其開源特性、實時性好、可移植、內置網絡支持等優點在嵌入式領域成為主力軍。如今,業界已經達成共識:即嵌入式linux是大勢所趨,其巨大的市場潛力與醞釀的無限商機必然會吸引眾多的廠商進入這一領域。 2.2 Qt開發工具簡介 Qt是諾基亞開發的一個跨平臺的C+圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt是完全面向對象的,很容易擴展,并且允許真正地組件編程。自從1996年早些時候,Qt進入商業領域,它已經成為全世界范圍內數千種成功的應用程序的

13、基礎。Qt也是流行的Linux桌面環境KDE 的基礎?;旧?,Qt 同X Window 上的Motif,Openwin,GTK 等圖形界面庫和Windows 平臺上的MFC,OWL,VCL,ATL 是同類型的東西,但Qt具有優良的跨平臺特性、面向對象、豐富的API、大量的開發文檔等優點。 信號和槽機制是QT 的核心機制,要精通QT 編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應用于對象之間的通信,它是QT 的核心特性,也是 QT 區別于其它工具包的重要地方。信號和槽是QT 自行定義的一種通信機制,它獨立于標準的 C/C+ 語言,因此要正確的處理信號和槽,必須借助一個稱為moc(Met

14、a Object Compiler)的QT 工具,該工具是一個C+ 預處理程序,它為高層次的事件處理自動生成所需要的附加代碼。2.2.1 Qt主要特性(1)面向對象,很容易擴展,并且允許真正的組件編程;(2)Qt對各個模塊進行了良好的封裝,使各模塊可重用性較好;(3)優良的跨平臺特性,使用Qt類編寫的程序可以實現“一次編碼,到處編譯”,極大的降低了跨平臺開發的難;(4)構件支持,對于對象間通信,Qt沒有采用函數回調的方法,而是采用了一種全新并且可選的被稱為“信號與槽”的對象間通信機制,通過一個對象信號的發射,另一個槽函數的響應,使各個對象之間的通信安全而且高效。Qt的這些特點使它非常適合于真正

15、的構件編程,同時使各個組件之間的協同工作變得十分簡單,并且Qt是直接基于Xlib的,不依賴Motif工具包,所以它的執行效率比一般的基于平臺的代碼的執行效率要高。2.2.2 Qt編程機制簡介 (1)Qt系統的信號與槽機制簡介   信號/槽機制是Qt的一個中心特征并且也許是Qt與其它工具包的最不相同的部分。在圖形用戶界面編程中,我們經常希望一個窗口部件的一個變化被通知給另一個窗口部件。更一般地,我們希望任何一類的對象可以和其它對象進行通訊。 較老的工具包使用一種被稱作回調的通訊方式來實現同一目的?;卣{是指一個函數的指針,所以如果你希望一個處理函數通知你一些

16、事件,你可以把另一個函數(回調)的指針傳遞給處理函數。處理函數在適當的時候調用回調。回調有兩個主要缺點。首先他們不是類型安全的。我們從來都不能確定處理函數使用了正確的參數來調用回調。因此容易造成進程崩潰,另外一個問題是,回調這種方式緊緊的綁定了圖形用戶接口的功能元素,因而很難把開發進行獨立的分類。  Qt的信號與槽機制是不同的。Qt的信號與槽均以函數形式出現,Qt的窗口部件有很多預定義的信號,但我們也可以通過繼承來加入我們自己的信號。槽就是一個可以被調用處理特定信號的函數。Qt的窗口部件有很多預定義的槽,但是通常的習慣是你可以加入自己的槽,這樣你就可以處理你所感興趣的信號。我們可以用

17、connect()函數對需要的信號和槽進行連接。當對象的內部狀態發生改變,信號就被發射。從某種意義上講,它們也許對外面的世界感興趣。這就是所有的對象通訊時所做的一切。它不知道也不注意無論有沒有東西接收它所發射的信號。當一個信號被發射,它所連接的槽會被立即執行,就像一個普通函數調用一樣。信號/槽機制完全不依賴于任何一種圖形用戶界面的事件回路。當所有的槽都返回后發射的信號也將返回。信號與插槽機制并不要求類之間互相知道細節,這樣就可以相對容易的開發出代碼可高重用的類。  信號和槽的機制是類型安全的:一個信號的簽名必須與它的接收槽的簽名相匹配。(實際上一個槽的簽名可以比它接收的信號的簽名少,

18、因為它可以忽略額外的簽名。)因為簽名是一致的,編譯器就可以幫助我們檢測類型不匹配。它以警告的方式報告類型錯誤,而不會使系統產生崩潰。信號和槽是寬松地聯系在一起的:一個發射信號的類不用知道也不用注意哪個槽要接收這個信號。Qt的信號和槽的機制可以保證如果你把一個信號和一個槽連接起來,槽會在正確的時間使用信號的參數而被調用。信號和槽可以使用任何數量、任何類型的參數。它們是完全類型安全的:不會再有回調核心轉儲(core dump)。  總體來看,信號和槽構成了一個強有力的組件編程機制。如果一個類要使用信號與槽機制,它就必須是從QObject或QObject的子類繼承,而且類的定義必

19、須加上Q_OBJECT宏。signals、slots和emit是Qt特有的關鍵字,分別用來表示信號、槽、和發送信號,移除這些關鍵字和預處理程序,就可以使用標準的C+編譯器。槽同其他函數一樣也具有訪問權限,只是槽的訪問權限決定了誰可以和它相連,如一個public slots:包含了任何信號都可以相連的槽。一個protected slots:包含了只有這個類和它的子類的信號才能連接的槽。這就是說這些槽只是類的實現的一部分,而不是它和外界的接口。 一個private slots:包含了只有這個類本身的信號可以連接的槽,甚至它的子類都沒有獲得連接的權利。(2)Q

20、t元對象系統  Qt中的元對象系統是用來處理對象間通訊的信號/槽機制、運行時的類型信息和動態屬性系統。它基于下列三類:QObject類、類聲明中的私有段中的Q_OBJECT宏、元對象編譯器(moc)。 moc讀取C+源文件。如果它發現其中包含一個或多個類的聲明中含有Q_OBJECT宏,它就會給含有Q_OBJECT宏的類生成另一個含有元對象代碼的C+源文件。這個生成的源文件可以被類的源文件包含(#include)到或者和這個類的實現一起編譯和連接。   除了提供對象間通訊的信號和槽機制之外,QObject中的元對象代碼可以實現其它特征: 

21、0;(1)className()函數在運行的時候以字符串返回類的名稱,不需要C+編譯器中的本地運行類型信息(RTTI)的支持。  (2)inherits()函數返回這個對象是否是一個繼承于QObject繼承樹中一個特定類的類的實例。   (3)tr()和trUtf8()兩個函數是用于國際化中的字符串翻譯。  (4)setProperty()函數和property()函數,這兩個函數是用來通過名稱動態設置和獲得對象屬性的。  (5)metaObject()函數返回這個類所關聯的元對象。雖然使用QObject

22、作為一個基類而不使用Q_OBJECT宏和元對象代碼是可以的,但是如果Q_OBJECT宏沒有被使用,那么這里的信號和槽以及其它特征描述都不會被提供。根據元對象系統的觀點,一個沒有元代碼的QObject的子類和它含有元對象代碼的最近的祖先相同。舉例來說就是,className()將不會返回你的類的實際名稱,返回的是它的這個祖先的名稱。故強烈建議QObject 的所有子類使用Q_OBJECT宏,而不管它們是否實際使用了信號、槽和屬性。3 氣象終端總體構架設計4 SQLite數據庫 SQLite 是一個開源的嵌入式關系數據庫,它可以減少應用程序管理數據的開銷,SQLite 可移植性好、很容易

23、使用、很小、高效而且可靠。目前在Android 系統中集成的是 SQLite3 版本,SQLite 不支持靜態數據類型,而是使用列關系。這意味著它的數據類型不具有表列屬性,而具有數據本身的屬性。 當某個值插入數據庫時,SQLite 將檢查它的類型。如果該類型與關聯的列不匹配,則SQLite 會嘗試將該值轉換成列類型。如果不能轉換,則該值將作為其本身具有的類型存儲。SQLite 支持 NULL、INTEGER、REAL、TEXT和BLOB數據類型。例如:可以在 Integer 字段中存放字符串,或者在布爾型字段中存放浮點數,或者在字符型字段中存放日期型值。但是有一種例外,如果你的主鍵是 INTE

24、GER ,那么只能存儲64位整數,當向這種字段中保存除整數以外的數據時,將會產生錯誤。另外,SQLite 在解析REATE TABLE語句時,會忽略CREATE TABLE語句中跟在字段名后面的數據類型信息。4.1 SQLite數據庫的模塊分析 SQLite采用了模塊的設計,它由三個子系統,包括8個獨立的模塊構成。 Interface B-TreeCompilerBackend PagerTokenizer OS InterfaceParser CoreCode GeneratorDatabaseVirtual Machine1. 接口(Interface) 接口由SQLite C API組成

25、,也就是說不管是程序、腳本語言還是庫文件,最終都是通過它與SQLite交互的(我們通常用得較多的ODBC/JDBC最后也會轉化為相應C API的調用)。 2.編譯器(Compiler) 在編譯器中,分詞器(Tokenizer)和分析器(Parser)對SQL進行語法檢查,然后把它轉化為底層能更方便處理的分層的數據結構-語法樹,然后把語法樹傳給代碼生成器(code generator)進行處理。而代碼生成器根據它生成一種針對SQLite的匯編代碼,最后由虛擬機(Virtual Machine)執行。 3.虛擬機(Virtual Machine) 架構中最核心的部分是虛擬機,或者叫做虛擬數據庫引擎(Virtual Database Engine,VDBE)。它和Java虛擬機相似,解釋執行字節代碼。VDBE的字節代碼由128個操作碼(opcodes)構成,它們主要集中在數據庫操作。它的每一條指令都用來完成特定的數據庫操作(比如打開一個表的游標)或者為這些操作棧空間的準備(比如壓入參數)??傊?,所有的這些指令都是為了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論