基于嵌入式畫圖板的設計與實現(xiàn)-畢業(yè)設計論文_第1頁
基于嵌入式畫圖板的設計與實現(xiàn)-畢業(yè)設計論文_第2頁
基于嵌入式畫圖板的設計與實現(xiàn)-畢業(yè)設計論文_第3頁
基于嵌入式畫圖板的設計與實現(xiàn)-畢業(yè)設計論文_第4頁
基于嵌入式畫圖板的設計與實現(xiàn)-畢業(yè)設計論文_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

濟源職業(yè)技術學院畢業(yè)設計(論文)題目基于嵌入式畫圖板的設計與實現(xiàn)系別信息工程系專業(yè)班級姓名學號指導教師日期二零一二年九月

基于嵌入式Qt的畫圖板設計與實現(xiàn)——畫圖板總計:畢業(yè)設計(論文)39頁圖表35幅摘要隨著數(shù)字信息技術和網(wǎng)路技術的高速發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛的參透到各行各業(yè)以及人們的日常生活中,嵌入式系統(tǒng)技術已經(jīng)成為目前最熱門的技術之一。嵌入式系統(tǒng)硬件平臺的核心是嵌入式微處理器,ARM處理器以其小體積、高性能、低成本、低消耗的優(yōu)勢成為目前應用最廣泛的32位高性能嵌入式RISC處理器。在工業(yè)控制、移動通信、多媒體數(shù)字消費、手持設備等嵌入式解決方案中據(jù)著非常重要的地位。本文以嵌入式技術的需求為背景,提出了一種適用于嵌入式系統(tǒng)的畫圖板設計方案,在此基礎上設計并實現(xiàn)了基于Linux/Qt的嵌入式Qt畫圖板,實現(xiàn)了基于Qt的嵌入式畫圖板系統(tǒng)。本文的目標是設計和實現(xiàn)嵌入式終端下的畫圖板。論文首先介紹了Linux的優(yōu)點和QT開發(fā)環(huán)境的搭建,著重分析了QT在軟件開發(fā)中的編程機制,并具體分析了畫圖板具體界面的設計,最后簡要介紹了嵌入式應用的特點和嵌入式終端下的移植過程。本文根據(jù)畫圖板的主要功能,設計并實現(xiàn)了畫圖板的相關基本功能,如:新建、打開、退出、放大、縮小、還原、旋轉(zhuǎn)和拉伸等。最后運行結果符合設計要求,方案可行。關鍵詞:嵌入式操作系統(tǒng);Linux;QT;圖形用戶界面;畫圖板

ABSTRACTWiththedevelopmentofdigitalinformationtechnologyandnetworktechnologyrapiddevelopment,theembeddedsystemhaswidelypenetratedintoallwalksoflifeandpeople'sdailylife,theembeddedsystemtechnologyhasbecomethemostpopularone.Embeddedsystemhardwareplatformisthecoreoftheembeddedmicroprocessor,ARMprocessorwithitssmallsize,highperformance,lowcost,lowconsumptionofadvantagetobecomethemostwidelyusedhighperformance32bitembeddedRISCprocessor.Inindustrialcontrol,mobilecommunication,multimediadigitalconsumer,handhelddevicesandembeddedsolutionsaccordingtoaveryimportantposition.Basedontheembeddedtechnologydemandasabackground,putforwardakindofembeddedsystemapplicabletothedrawingboarddesign,onthebasisofthedesignandimplementationofLinux/QtbasedembeddedQtdrawingboard,basedontherealizationoftheembeddedQtdrawingboardsystem.ThegoalofthispaperistodesignandRealizationofembeddedterminaldrawingboard.ThepaperfirstintroducestheadvantagesofLinuxandQTdevelopmentenvironmenttobuild,focusesontheanalysisofQTinthedevelopmentofsoftwareprogramming,andspecificanalysisofthedrawingboardandthespecificinterfacedesign,andfinallyintroducedtheembeddedapplicationandthecharacteristicsofembeddedterminalunderthetransplantationprocess.Accordingtothedrawingboardtothemainfunction,thedesignandimplementationofdrawingboardrelatedbasicfunctions,suchas:thenew,open,exit,amplification,narrow,reduction,rotationandstretching.Thefinalresultsmeetthedesignrequirements,theschemeisfeasible.Keywords:embeddedoperatingsystem;Linux;QT;graphicaluserinterface;drawingboard目錄第1章引言 -1-1.1研究背景 -1-1.2研究目的和意義 -2-第2章嵌入式操作系統(tǒng) -3-2.1嵌入式系統(tǒng)概述 -3-2.2嵌入式操作系統(tǒng) -4-2.2.1嵌入式系統(tǒng)特征 -4-2.2.2常見嵌入式Linux系統(tǒng)優(yōu)缺點 -5-第3章基于嵌入式Qt畫圖板的硬件平臺搭建 -7-3.1ARM微處理器 -7-3.1.2ARM微處理器的特點 -7-3.1.3ARM微處理器系列 -7-3.1.4ARM9微處理器系列介紹 -7-3.2S3C2410開發(fā)平臺介紹 -8-3.2.1S3C2410X芯片介紹 -9-第4章基于嵌入式Qt畫圖板的軟件介紹 -10-4.1QT主要特性 -10-4.2QT編程機制簡介 -10-4.2.1QT系統(tǒng)的信號與槽機制簡介 -10-4.3QTCreator設計軟件概述 -12-第5章基于嵌入式QT畫圖板的軟件的設計 -13-5.1畫圖板設計模塊和功能介紹 -13-5.2畫圖板界面的設計 -14-5.2.1菜單的設計 -14-添加繪圖工具欄 -17-5.3畫圖板功能設計與實現(xiàn) -18-5.3.1實現(xiàn)文件菜單功能 -18-5.3.2畫圖板涂鴉功能的實現(xiàn) -19-5.3.3實現(xiàn)編輯菜單功能 -21-第6章系統(tǒng)的測試 -24-6.1測試環(huán)境 -24-6.2硬件平臺搭建測試 -24-6.2.1PC端測試 -24-6.2.2U-Boot端測試 -24-6.2.3內(nèi)核測試 -25-6.2.4根文件系統(tǒng)測試 -25-6.2.5網(wǎng)卡測試 -26-6.3PC端軟件測試 -27-6.3.1界面測試 -27-6.3.2功能測試 -28-6.4綜合測試 -28-6.5小結 -30-第7章總結與展望 -31-致謝 -32-參考文獻 -33-第1章引言1.1研究背景近年來,隨著計算技術、通信技術的飛速發(fā)展,特別是互聯(lián)網(wǎng)的迅速普及和3C(計算機、通信、消費電子)合一的加速,微型化和專業(yè)化成為發(fā)展的新趨勢,嵌入式產(chǎn)品成為信息產(chǎn)業(yè)的主流。嵌入式產(chǎn)品的發(fā)展,往往要求嵌入式操作系統(tǒng)有網(wǎng)絡和圖形的功能。利用源代碼開放的Linux搭建的嵌入式操作系統(tǒng),由于強大的網(wǎng)絡功能和低成本,近來得到了越來越多的應用。主要體現(xiàn)在以下幾個方面[1]。①嵌入式應用軟件的開發(fā)需要強大的開發(fā)工具和操作系統(tǒng)的支持隨著因特網(wǎng)技術的成熟、帶寬的提高,ICP和ASP在網(wǎng)上提供的信息內(nèi)容日趨豐富、應用項目多種多樣。像、座機及電冰箱、微波爐等嵌入式電子設備的功能不再單一,電氣結構也更為復雜。為了滿足應用功能的升級,設計師們一方面采用更強大的嵌入式處理器如32位、64位RISC芯片或信號處理器DSP增強處理能力;同時還采用實時多任務編程技術和交叉開發(fā)工具技術來控制功能復雜性,簡化應用程序設計、保障軟件質(zhì)量和縮短開發(fā)周期。②互聯(lián)網(wǎng)成為必然趨勢為適應嵌入式分布處理結構和應用上網(wǎng)需求,面向21世紀的嵌入式系統(tǒng)要求配備標準的一種或多種網(wǎng)絡通信接口。針對外部聯(lián)網(wǎng)要求,嵌入設備必需配有通信接口,相應需要TCP/IP協(xié)議簇軟件支持;由于家用電器相互關聯(lián)(如防盜報警,燈光能源控制,影視設備和信息終端交換信息)及實驗現(xiàn)場儀器的協(xié)調(diào)工作等要求,新一代嵌入式設備還需具備IEEE1394、USB、CAN、Bluetooth或IrDA通信接口,同時也需要提供相應的通信組網(wǎng)協(xié)議軟件和物理層驅(qū)動軟件。為了支持應用軟件的特定編程模式,如Web或無線Web編程模式,還需要相應的瀏覽器,如HTML、WML等。③支持小型電子設備實現(xiàn)小尺寸、微功耗和低成本為滿足這種特性,要求嵌入式產(chǎn)品設計者相應降低處理器的性能,限制內(nèi)存容量和復用接口芯片。這就相應提高了對嵌入式軟件設計技術要求。如,選用最佳的編程模型和不斷改進算法。④提供精巧的多媒體人機界面嵌入式設備之所以為億萬用戶樂于接受,重要因素之一是它們與使用者之間的親和力,自然的人機交互界面,如司機操縱高度自動化的汽車主要還是通過習慣的方向盤、腳踏板和操縱桿。人們與信息終端交互要求以GUI屏幕為中心的多媒體界面。手寫文字輸入、語音撥號上網(wǎng),收發(fā)電子郵件以及彩色圖形、圖像已取得初步成效。研究目的和意義雖然市場上現(xiàn)在已經(jīng)有了眾多的優(yōu)秀的GUI應用軟件,但隨著近年來計算機技術的迅速發(fā)展,當新硬件、新技術出現(xiàn)時,計算機的體系結構、指令系統(tǒng)和操作系統(tǒng)都可能發(fā)生相應的改變,這勢必會導致一部分應用軟件在新環(huán)境下無法正常運行。如果舍棄原有軟件而重新開發(fā),將會耗費大量的人力和資金,而且浪費了許多成熟的軟件成果。而QT在源代碼級上實現(xiàn)了跨平臺特性,極大的支持了跨平臺通用軟件的開發(fā)。QT可以用同一個源程序在不同平臺上編譯鏈接,生成目標代碼,并取得相同的運行效果,這種技術稱之為“一次編寫,隨處編譯”,利用這種方法充分實現(xiàn)了程序的跨平臺運行。這種基于源代碼的跨平臺特性不僅解決了性能的問題,而且可以發(fā)揮各個平臺的優(yōu)勢,充分利用每個平臺自身的特點;并且即可以在新環(huán)境下實現(xiàn)原有軟件的功能和特點,減少開發(fā)費用,還可以改進原有軟件的不足,增加新的需求,從而提高軟件的質(zhì)量,延長軟件生命期。針對嵌入式產(chǎn)品的高度個性化,其外觀、與用戶交互的界面千差萬別的特點,故而系統(tǒng)的設計目標是意在打造一個能在嵌入式終端運行、通用的、可以方便的支持各種控件、各種圖形格式,具有體積小、可裁剪、可移植的這樣一個面向嵌入式的應用程序系統(tǒng),使各種嵌入式設備也同樣能具有美觀的用戶界面,相對比較豐富的功能,操作起來簡單而又直觀[2]。本文通過對嵌入式Linux和QT的分析,在嵌入式QT的基礎上,開發(fā)了面向嵌入式終端的畫圖板應用軟件。畫圖板不僅支持新建、保存等功能,還支持圖片的打開,另外還有如放大、縮小、旋轉(zhuǎn)等各種方式下的圖片瀏覽。它們體積小,移植方便,適用于掌上電腦、智能及一些高端的嵌入式設備中。此外它作為一種小型GUI解決方案,可用于那些對GUI大小要求苛刻的各種應用系統(tǒng)中。

第2章嵌入式操作系統(tǒng)嵌入式系統(tǒng),就是以應用為中心、以計算機技術為基礎、軟件硬件可剪裁、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。本章首先通過嵌入式系統(tǒng)選擇對比,介紹了嵌入式系統(tǒng)的優(yōu)缺點,最后根據(jù)系統(tǒng)方案要求重點敘述了選擇的嵌入式Ubuntu操作系統(tǒng)。2.1嵌入式系統(tǒng)概述綜觀嵌入式系統(tǒng)的發(fā)展,大致經(jīng)歷了三個階段。第一階段是以單芯片為核心的可編程控制器形式的系統(tǒng),同時具有與監(jiān)測、指示設備相配合的功能。這種系統(tǒng)大部分應用于工業(yè)控制系統(tǒng)中,一般沒有操作系統(tǒng)的支持。第二階段以嵌入式實時操作系統(tǒng)為標志。這一階段系統(tǒng)的主要特點是:嵌入式操作系統(tǒng)能運行于各種不同類型的微處理器上,操作系統(tǒng)內(nèi)核精小、效率高,并且具有高度的模塊化和擴展性;具備文件和目錄管理、設備支持、多任務、網(wǎng)絡支持、圖形窗口以及用戶界面等功能;具有大量的應用程序接口(API),嵌入式應用軟件豐富,但與互聯(lián)網(wǎng)無關。第三階段是以基于因特網(wǎng)為標志的嵌入式系統(tǒng),這是一個正在迅速發(fā)展的階段。目前大多數(shù)嵌入式系統(tǒng)還孤立于因特網(wǎng)之外,但隨著因特網(wǎng)的發(fā)展以及因特網(wǎng)技術與信息家電、工業(yè)控制技術等結合日益密切,嵌入式設備與因特網(wǎng)的結合將代表著嵌入式技術的真正未來[2]。Linux是個和Unix相似,以Unix核心為基礎、完全內(nèi)存保護、多任務多進程的操作系統(tǒng)。其程式源碼全部公開,任何人可以修改并在GNU通用公共許可證(GNUGeneralPublicLicense)下發(fā)行,這樣開發(fā)人員可以對操作系統(tǒng)進行定制。同時由于有GPL的控制,大家開發(fā)的東西大都相互兼容,不會走向分裂之路。Linux用戶遇到問題時可以通過Internet向網(wǎng)上成千上萬的Linux開發(fā)者請教,這使最困難的問題也有辦法解決。Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)的應用軟件都已移植到了Linux上。Linux還提供了強大的網(wǎng)絡功能,有多種可選擇窗口管理器(Xwindows)。其強大的語言編譯器gcc、g++等也可以很容易得到。不但成熟完善、而且使用方便,為嵌入操作系統(tǒng)提供了一個極有吸引力的選擇。Linux已經(jīng)被移植到多種硬件平臺,這對受開銷、時間限制的研究與開發(fā)項目是很有吸引力的。原型可以在標準平臺上開發(fā)然后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程。Linux可以隨意地配置,不需要任何的許可證或商家的合作關系。它是免費的,源代碼可以得到。這是最吸引人的。毫無疑問,這會節(jié)省大量的開發(fā)費用[3]。Linux還有以下優(yōu)點。①它本身內(nèi)置網(wǎng)絡支持。②Linux的高度模塊化使添加部件非常容易。③Linux在臺式機上的成功,使大家看到了Linux在嵌入式系統(tǒng)中的輝煌前景。嵌入式產(chǎn)品中選擇什么樣的操作系統(tǒng)極為重要,嵌入式Linux由于其開源特性、實時性好、可移植、內(nèi)置網(wǎng)絡支持等優(yōu)點在嵌入式領域成為主力軍。如今,業(yè)界已經(jīng)達成共識:即嵌入式Linux是大勢所趨,其巨大的市場潛力與醞釀的無限商機必然會吸引眾多的廠商進入這一領域。嵌入式操作系統(tǒng)2.2.1嵌入式系統(tǒng)特征這些年來掀起了嵌入式系統(tǒng)應用熱潮的原因只要有幾個方面:一是芯片技術的發(fā)展,使得單個芯片具有更強的處理能力,而且使集成多種接口已經(jīng)成為可能,眾多芯片生產(chǎn)廠商已經(jīng)將注意力集中在這方面。另一方面的原因就是應用的需要,由于對產(chǎn)品可靠性、成本、更新?lián)Q代要求的提高,使得嵌入式系統(tǒng)逐漸從純硬件實現(xiàn)和使用通用計算機實現(xiàn)的應用中脫穎而出,成為近年來令人關注的焦點。從上面的定義,可以看出嵌入式系統(tǒng)的幾個重要特征[4]。①系統(tǒng)內(nèi)核小。由于嵌入式系統(tǒng)一般是應用于小型電子裝置的,系統(tǒng)資源相對有限,所以內(nèi)核較之傳統(tǒng)的操作系統(tǒng)要小得多。比如Enea公司的OSE分布式系統(tǒng),內(nèi)核只有5K,而Windows的內(nèi)核卻是沒有可比性的。②專用性強。嵌入式系統(tǒng)的個性化很強,其中的軟件系統(tǒng)和硬件的結合非常緊密,一般要針對硬件進行系統(tǒng)的移植,即使在同一品牌、同一系列的產(chǎn)品中也需要根據(jù)系統(tǒng)硬件的變化和增減不斷進行修改。同時針對不同的任務,往往需要對系統(tǒng)進行較大更改,程序的編譯下載要和系統(tǒng)相結合,這種修改和通用軟件的“升級”是完全兩個概念。③系統(tǒng)精簡。嵌入式系統(tǒng)一般沒有系統(tǒng)軟件和應用軟件的明顯區(qū)分,不要求其功能設計及實現(xiàn)上過于復雜,這樣一方面利于控制系統(tǒng)成本,同時也利于實現(xiàn)系統(tǒng)安全。④高實時性的系統(tǒng)軟件(OS)是嵌入式軟件的基本要求。而且軟件要求固態(tài)存儲,以提高速度;軟件代碼要求高質(zhì)量和高可靠性。⑤嵌入式軟件開發(fā)走向標準化,就必須使用多任務的操作系統(tǒng)。嵌入式系統(tǒng)的應用程序可以沒有操作系統(tǒng)直接在芯片上運行;但是為了合理地調(diào)度多任務、利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專家?guī)旌瘮?shù)接口,用戶必須自行選配RTOS(Real-TimeOperatingSystem)開發(fā)平臺,這樣才能保證程序執(zhí)行的實時性、可靠性,并減少開發(fā)時間,保障軟件質(zhì)量。⑥嵌入式系統(tǒng)開發(fā)需要開發(fā)工具和環(huán)境。由于其本身不具備自舉開發(fā)能力,即使設計完成以后用戶通常也是不能對其中的程序功能進行修改的,必須有一套開發(fā)工具和環(huán)境才能進行開發(fā),這些工具和環(huán)境一般是基于通用計算機上的軟硬件設備以及各種邏輯分析儀、混合信號示波器等。開發(fā)時往往有主機和目標機的概念,主機用于程序的開發(fā),目標機作為最后的執(zhí)行機,開發(fā)時需要交替結合進行。圖2-1嵌入式Linux開發(fā)模式一般流圖常見嵌入式Linux系統(tǒng)優(yōu)缺點Linux的版本可以大體分為兩類,一類是商業(yè)公司維護的版本,一類是社區(qū)組織維護的版本,前者以Redhat(RHEL)為代表,后者以Debian為代表。本節(jié)對常見的幾個版本的優(yōu)缺點進行簡要分析[4]。①Redhat系列優(yōu)缺點這個系列包括RHEL(RedhatEnterpriseLinux,也就是所謂的RedhatAdvanceServer,收費版本)、FedoraCore(由原來的Redhat桌面版本發(fā)展而來,免費版本)、CentOS(RHEL的社區(qū)克隆版本,免費)。Redhat應該說是在國內(nèi)使用人群最多的Linux版本,甚至有人將Redhat等同于Linux,有很多的專業(yè)人士只用這一個版本的Linux。所以這個版本的特點就是使用人群數(shù)量大,資料非常多,能夠很容易的找到運用過程中所遇到的問題,而且目前一般的Linux教程都是以Redhat為例來講解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分發(fā)方式是編譯好的二進制文件。穩(wěn)定性方面RHEL和CentOS的穩(wěn)定性非常好,適合于服務器使用,但是FedoraCore的穩(wěn)定性較差,最好只用于桌面應用。②Debian系列優(yōu)缺點這個系列包括Debian和Ubuntu等。Debian主要運用在社區(qū)類Linux之中,也是迄今為止最遵循GNU規(guī)范的Linux系統(tǒng)。Debian最早由IanMurdock于1993年創(chuàng)建,分為三個版本分支(branch):stable,testing和unstable。其中,unstable為最新的測試版本,其中包括最新的軟件包,但是也有相對較多的bug,適合桌面用戶。testing的版本都經(jīng)過unstable中的測試,相對較為穩(wěn)定,也支持了不少新技術(比如SMP等)。而stable一般只用于服務器,上面的軟件包大部分都比較過時,但是穩(wěn)定和安全性都非常的高。Debian最具特色的是apt-get/dpkg包管理方式,其實Redhat的YUM也是在模仿Debian的APT方式,但在二進制文件發(fā)行方式中,APT應該是最好的了。另外,Debian的資料也很豐富,有很多支持的社區(qū)。③Ubuntu系列優(yōu)缺點Ubuntu是世界上最流行的Linux發(fā)行版,它使用deb的軟件庫(linux界最大的自由軟件庫,由deb維護)。對硬件配置要求不高,用起來還很方便,畫面極為簡潔,任何人、不論任何目的,都有使用、改寫、重新散布、發(fā)布改寫版Ubuntu的自由。Ubuntu沒有所謂的企業(yè)版,不用購買授權就可以把它用于商業(yè)或其他任何用途。而且可以把Ubuntu安裝在任意臺電腦上,也可以裝在移動硬盤或U盤等設備上,甚至可以自己定制安裝盤。圖形界面很強大,系統(tǒng)超級穩(wěn)定先進的內(nèi)存管理機制。linux擁有緩存機制,調(diào)入內(nèi)存的數(shù)據(jù),不使用時不會立馬刪除。這樣,當系統(tǒng)再次使用該數(shù)據(jù)時,只要從內(nèi)存調(diào)用就行了。本系統(tǒng)所使用的是Linux系統(tǒng)是ubuntu。ubuntu的強項主要體現(xiàn)在:能夠使deb的軟件庫、圖形界面很強大、系統(tǒng)超級穩(wěn)定、有著先進的內(nèi)存管理和先進的磁盤管理。與大多數(shù)發(fā)行版附帶數(shù)量巨大的可用可不用的軟件不同,ubuntu的軟件包清單只包含那些高質(zhì)量的重要的應用程序。所以最終選擇ubuntu為本設計的操作系統(tǒng)。

第3章基于嵌入式Qt畫圖板的硬件平臺搭建本設計選用的硬件開發(fā)平臺是采用Samsung公司基于ARM920T內(nèi)核的S3C2410X微處理器。本章節(jié)主要介紹ARM處理器及其特點,簡要介紹了基于S3C2410X的嵌入式系硬件平臺的各功能模塊。3.1ARM微處理器3.1.2ARM微處理器的特點ARM微處理器一般具有幾個特點[5]。①體積小、低功耗、低成本、高性能。②支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件。③大量使用寄存器,指令執(zhí)行速度更快。④大多數(shù)數(shù)據(jù)操作都在寄存器中完成。⑤尋址方式靈活簡單,執(zhí)行效率高。⑥指令長度固定。3.1.3ARM微處理器系列ARM微處理器目前包括下面幾個系列,以及其它廠商基于ARM體系結構的處理器,除了具有ARM體系結構的共同特點以外,每一個系列的ARM微處理器都有各自的特點和應用領域。- ARM7系列- ARM9系列- ARM9E系列- ARM10E系列- SecurCore系列- Inter的Xscale- Inter的StrongARM其中,ARM7、ARM9、ARM9E和ARM10為4個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同應用領域的需求。SecurCore系列專門為安全要求較高的應用而設計。3.1.4ARM9微處理器系列介紹ARM9系列微處理器在高性能和低功耗特性方面提供最佳的性能,具有以下特點[6]。①5級整數(shù)流水線,指令執(zhí)行效率更高。②提供z的哈佛結構。③ 支持32位ARM指令集和16位Thumb指令集。④ 支持32位的高速AMBA總線接口。- 全性能的MMU,支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)。- MPU支持實時操作系統(tǒng)。⑤ 支持數(shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。ARM9系列微處理器主要應用于無線設備、儀器儀表、安全系統(tǒng)、機頂盒、高端打印機、數(shù)字照相機和數(shù)字攝像機等。ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應用場合。3.2S3C2410開發(fā)平臺介紹本系統(tǒng)使用開發(fā)平臺在以S3C2410X微處理器為核心的基礎根據(jù)具體需要上擴展了一系列外圍功能器件,最終構成了系統(tǒng)的硬件平臺,平臺的硬件配置表如表3-1所示[6]。表3-1硬件平臺配置表硬件硬件名稱硬件參數(shù)cpuARM920T結構芯片三星S3c2410X工作頻率203MHzFLASHSAMSUNGK9F120864MNANDSDRAMHY57V561620AT-H32M*2=64MEtherNet網(wǎng)卡DM900AE10/100M自適應LCDLQ080V3DG018寸16bitTFT觸摸屏SX-080-W4R-FBFM7843驅(qū)動USB接口4個HOST/1個DEICE由AT43301構成USBHUBAD由S3C2410芯片引出3個電位器控制輸入擴展卡插槽168PinEXPORT總線直接擴展IC卡座AT24CXX系列由ATMEGA8單片機控制中斷鍵1個ENT控制LED由3個IO口控制調(diào)試接口板載JTAG,直接支持下載與仿真25針S3c2410X芯片集成了大量的功能單元,包括。①LCD控制器(最高4K色STN和256K彩色TFT),一個LCD專用DMA。②,16-ByteTxFIFO,and16-ByteRxFIFO),2通道SPI。③2個USBHOST,一個USBDEVICE(VER1.1)。④4個PWM定時器和一個內(nèi)部定時器。⑤看門狗定時器。⑥8通道10位ADC和觸摸屏接口。⑦16/32位RISC體系結構,使用ARM920TCPU核的強大指令集。⑧ARM帶MMU的先進的體系結構支持WINCE、EPOC32、LINUX。⑨指令緩存(cache)、數(shù)據(jù)緩存、寫緩沖和物理地址TAGRAM,減小了對主存儲器帶寬和性能的影響。⑩ARM920TCPU核支持ARM調(diào)試的體系結構。

第4章基于嵌入式Qt畫圖板的軟件介紹QT是用于本地化跨平臺應用開發(fā)的領先性框架。QT應用程序接口與工具兼容于所有支持平臺,掌握一個應用程序接口,便可執(zhí)行與平臺非相關的應用開發(fā)與配置。本章節(jié)首先對Qt主要特性進行簡要介紹,然后對QT信號與曹機制進行了詳細的論述,最后對QTCreator設計軟件的功能和優(yōu)勢概述。4.1QT主要特性QT是一個跨平臺的C++圖形用戶界面庫,由挪威TrollTech公司開發(fā),目前包括QT/X11、基于Framebuffer的QT、快速開發(fā)工具QTDesigner以及國際化工具QTLinguist等。人們所熟知的Linux下面的KDE環(huán)境就是基于QT開發(fā)而成的。QT支持Unix和Linux系統(tǒng)以及Windows系統(tǒng)。QT的主要特點有:面向?qū)ο螅苋菀讛U展,并且允許真正的組件編程;QT對各個模塊進行了良好的封裝,使各模塊可重用性較好;優(yōu)良的跨平臺特性,使用QT類編寫的程序可以實現(xiàn)“一次編碼,到處編譯”,極大的降低了跨平臺開發(fā)的難度;構件支持,對于對象間通信,QT沒有采用函數(shù)回調(diào)的方法,而是采用了一種全新并且可選的被稱為“信號與槽”的對象間通信機制,通過一個對象信號的發(fā)射,另一個槽函數(shù)的響應,使各個對象之間的通信安全而且高效。QT的這些特點使它非常適合于真正的構件編程,同時使各個組件之間的協(xié)同工作變得十分簡單,并且QT是直接基于Xlib的,不依賴Motif工具包,所以它的執(zhí)行效率比一般的基于平臺的代碼的執(zhí)行效率要高[7]。4.2QT編程機制簡介信號與槽機制是QT的核心機制,要精通QT編程就必須對信號和插槽有所了解。信號和插槽是一種高級接口,應用于對象之間的通信,它是QT核心特性,也是QT區(qū)別于其他工具包的關鍵所在[8]。QT的信號與槽均以函數(shù)形式出現(xiàn),QT的窗口部件有很多預定義的信號,但也可以通過繼承來加入自己的信號。槽就是一個可以被調(diào)用處理特定信號的函數(shù)。QT的窗口部件有很多預定義的槽,但是通常的習慣是設計者可以加入自己的槽,這樣就可以處理自己所感興趣的信號??梢杂胏onnect()函數(shù)對需要的信號和槽進行連接。當對象的內(nèi)部狀態(tài)發(fā)生改變,信號就被發(fā)射。當一個信號被發(fā)射,它所連接的槽會被立即執(zhí)行,就像一個普通函數(shù)調(diào)用一樣(見圖4-1)。信號/槽機制完全不依賴于任何一種圖形用戶界面的事件回路。當所有的槽都返回后發(fā)射的信號也將返回。信號與插槽機制并不要求類之間互相知道細節(jié),這樣就可以相對容易的開發(fā)出代碼可高重用的類。 信號和槽的機制是類型安全的:一個信號的簽名必須與它的接收槽的簽名相匹配。(實際上一個槽的簽名可以比它接收的信號的簽名少,因為它可以忽略額外的簽名。)因為簽名是一致的,編譯器就可以幫助檢測類型不匹配。這樣就以以警告的方式報告類型錯誤,而不會使系統(tǒng)產(chǎn)生崩潰。信號和槽是寬松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道也不用注意哪個槽要接收這個信號。QT的信號和槽的機制可以保證如果你把一個信號和一個槽連接起來,槽會在正確的時間使用信號的參數(shù)而被調(diào)用。信號和槽可以使用任何數(shù)量、任何類型的參數(shù)。它們是完全類型安全的:不會再有回調(diào)核心轉(zhuǎn)儲(coredump)[9]。多個信號與單個插槽可以連接,單個信號與很多插槽也可以連接,甚至將一個信號與另外一個信號相連接也是可能的,這時無論第一個信號什么時候發(fā)射,系統(tǒng)都將立刻發(fā)射第二個信號??傊?,信號與插槽構造了一個強大的部件編程機制。如果一個類要使用信號與槽機制,它就必須是從QObject或QObject的子類繼承,而且類的定義必須加上Q_OBJECT宏。signals、slots和emit是QT特有的關鍵字,分別用來表示信號、槽、和發(fā)送信號,移除這些關鍵字和預處理程序,就可以使用標準的C++編譯器。槽同其他函數(shù)一樣也具有訪問權限,只是槽的訪問權限決定了誰可以和它相連,如一個publicslots:包含了任何信號都可以相連的槽。一個protectedslots:包含了只有這個類和它的子類的信號才能連接的槽。這就是說這些槽只是類的實現(xiàn)的一部分,而不是它和外界的接口。一個privateslots:包含了只有這個類本身的信號可以連接的槽,甚至它的子類都沒有獲得連接的權利。對象間信號與插槽的連接關系如圖4-1所示[9]。圖4-1信號和槽的連接原理圖QTCreator設計軟件概述QTcreator是全新的跨平臺集成開發(fā)環(huán)境,為QT開發(fā)人員的需求量身定制,由于捆綁了最新QT庫二進制軟件包和附加的開發(fā)工具,并作為QTSDK的一部分,QTcreator在單獨的安裝程序內(nèi)提供了進行跨平臺QT開發(fā)所需的全部工具。QTcreator主要是為了幫助新QT用戶更快速入門并運行項目,還可提高有經(jīng)驗的QT開發(fā)人員的工作效率。QT的功能和優(yōu)勢[10]。①使用強大的C++代碼編輯器可快速編寫代碼:語言標識和代碼完成功能;輸入時進行靜態(tài)代碼校驗以及提示樣式;上下文相關的幫助;代碼折疊;括號匹配和括號選擇模式;高級編輯功能。②使用瀏覽器工具管理源代碼:集成了領先的版本控制軟件,包括Git、Perforce和Subversion;開放式文件,無需知曉確切的名稱或位置;搜索類和文件;跨不同位置或文件沿用符號;在頭文件和源文件,或在聲明和定義之間切換。③為QT跨平臺開發(fā)人員的需求而量身定制:集成了特定于QT的功能,如信號與槽;圖示調(diào)試器,對QT類結構可一目了然;集成QTDesigner可視化布局和格式構建器;只需單擊一下就可生成和運行QT項目。④使用拖放功能快速設計用戶界面;定制widget,或從標準widget庫中選擇widget;以本地外觀快速預覽格式。⑤通過界面原型生成C++或Java代碼:將QTDesigner與VisualStudio或EclipseIDE配合使用;使用QT信號與槽機制構建功能齊全的用戶界面。

第5章基于嵌入式QT畫圖板的軟件的設計設計實現(xiàn)一個成功的應用程序,不但要有實用的功能配置,也要有友好的用戶界面。本章首先對Qt畫圖板實現(xiàn)的功能進行簡單論述,接著對涂鴉功能、文件菜單功能以及編輯菜單功能的實現(xiàn)進行了詳細研究,最后介紹了畫圖板界面的設計并實現(xiàn)了基于Qt畫圖板的軟件全部功能。5.1畫圖板設計模塊和功能介紹本系統(tǒng)設計一個基于嵌入式的Qt畫圖板,此程序?qū)崿F(xiàn)簡單的繪圖功能包括點、直線、點線、橢圓等;并且能實現(xiàn)繪圖的控制包括線寬、線型和顏色的設置,圖形的打開、保存等功能。具體功能模塊圖如圖5-1所示[11]。圖5-1畫圖板模塊①畫板新建功能:新建初始畫板,可以選擇新建畫板的大小,以及背景顏色,確定后即得到所需新建畫板。②畫板保存、另存為功能:在對畫板進行編輯之后,可以選擇保存或者另存為。③畫板的打開功能:可以打開原來編輯并保存過的畫板。④畫板放大、縮小功能:畫板默認尺寸設計為400×300,圖片可逐級放大和縮小,能夠以尺寸的0.25倍遞減和遞增,最大可放大到設計時最大尺寸10000×10000最小可縮小到設計時最小尺寸1×1。⑤畫板還原功能:畫板通過不同尺寸的放大和縮小后,能夠還原到初始新建的尺寸大小。⑥畫板拉伸、旋轉(zhuǎn)功能:畫板可以再當前任何狀態(tài)下進行側(cè)方向的立體層次型拉伸并開始順時針90°的定向旋轉(zhuǎn)。⑦畫板清空功能:畫板可以在當前任何狀態(tài)下進行對當前狀態(tài)的情空,回到初始新建畫板狀態(tài)。⑧畫板畫圖工具功能:畫板可以實現(xiàn)選擇圖形、畫筆類型、畫筆線寬、畫筆顏色等功能。⑨為用戶設計理想的側(cè)邊繪圖工具欄,并合理安排界面元素布局,使其美觀并且方便用戶操作。⑩圖片打開、編輯、保存功能:可以打開一些格式的圖片,如png圖片,并且可以作為畫板背景,在其做編輯并且保存。5.2畫圖板界面的設計5.2.1菜單的設計①在QtCreator中新建Qt4GuiApplication工程,這里使用的工程名為hautu,使用默認。②為了讓程序中可以使用中文,先在main.cpp中加入頭文件#include<QTextCodec>,加入下面一行代碼:QTextCodec::setCodecForTr(QTextCodec::codecForLocale());③打開mainwindow.ui,先設計菜單。依次是文件菜單,編輯菜單,工具菜單和幫助菜單。如圖5-5、5-6、5-7、5-8所示。圖5-2文件菜單圖5-3編輯菜單圖5-4工具菜單圖5-5幫助菜單④向工程中添加資源文件,向其中添加要使用的菜單圖標。添加完后記著保存一下資源文件,不然的話,在資源管理器中可能看不到添加的圖標。⑤打開動作編輯器ActionEditor,編輯已添加的菜單動作。下面以“新建”菜單的編輯為例,簡單介紹一下[12]。雙擊action_N,彈出如圖5-6所示。圖5-6動作編輯器ActionEditor單擊Icon后面的按鈕,彈出資源管理器如圖5-7所示。圖5-7Icon資源管理器點擊上面的Reload,便能顯示出我們已經(jīng)添加的圖標,我們選中其中的新建菜單的圖標,點擊Ok確認,如圖5-8所示。圖5-8添加圖標添加完圖標后,我們單擊一下快捷鍵Shortcut后面的輸入框,然后同時按下Ctrl鍵和N鍵,這樣就將新建菜單的快捷鍵設為了Ctrl+N,如圖5-9所示。圖5-9快捷鍵的設置然后再在右面的屬性窗口中更改statusTip的內(nèi)容為“新建文件”,這樣在鼠標放在新建菜單上,狀態(tài)欄就會顯示“新建文件”。如圖5-10所示。圖5-10屬性的設置按照同樣的方法設置其它菜單,設置完成后下圖5-11所示。圖5-11菜單的設置⑥各個菜單的屬性設置成功以后,需要將其中的一些圖標放到工具欄上,在菜單屬性設置窗口中選中這些圖標,長按鼠標左鍵,直至把圖標拉到工具欄相應位置。其效果如圖5-12所示。圖5-12菜單欄這樣就完成了菜單的設計。添加繪圖工具欄這里的繪圖工具欄使用的是一種叫做Dock的窗口,它與其它窗口的不同就是它可以在其父窗口中浮動,也可以停靠在父窗口的邊界,就像一個工具欄一樣[13]。①首先在左邊的部件欄中找到DockWidget,將其拖入到設計區(qū),添加到主界面后它默認在左邊框上??恐H鐖D5-13所示。圖5-13工具欄設置②在其屬性欄里將其windowTitle改為“畫圖工具”。③向其中拖入相關部件,效果如圖5-14所示。圖5-14工具欄設置其中,“畫筆線寬”下的部件為SpinBox,其屬性中的objectName為penWidthSpinBox,屬性欄最下面的minimum屬性改為1,即最小值為1。其余部件均為組合框ComboBox,objectName依次為:選擇圖形:shapeComboBox畫筆類型:penStyleComboBox畫筆顏色:penColorComboBox填充顏色:brushColorComboBox④給選擇框添加條目。右擊“選擇圖形”下面的組合框,彈出菜單,如圖5-15所示。圖5-15組合框條目點擊EditItems菜單,彈出下面的條目編輯框,我們點擊“+”按鈕,添加新的條目,同樣的我們給“畫筆類型”下的組合框添加兩個條目“實線”和“點線”。兩個顏色組合框的條目以后再添加。⑤最后可以讓所有部件處于一個網(wǎng)格布局管理器中。此時運行程序,效果如下圖5-16所示。圖5-16畫圖板界面總體效果圖5.3畫圖板功能設計與實現(xiàn)實現(xiàn)文件菜單功能菜單欄的操作之間存在著邏輯上的順序關系其中幾個函數(shù)的原型[12]。①boolmaybeSave():進行是否保存的判斷,當返回值為true時說明整個判斷過程已經(jīng)進行過了。②boolisModified():進行文件是否被更改過的判斷,其實就是返回一個bool型的變量modified的值。③booldoFileSave():進行文件保存操作,文件保存時先利用bool型變量isSaved判斷文件是否保存過,如果保存過,就直接將現(xiàn)在的文件進行存儲就行了;如果沒有保存過,就要進行另存為操作,這樣才能獲得文件的保存路徑。④boolsaveFile(Qstringfilename):以文件的路徑對文件進行存儲。存儲成功返回true。整個流程圖如圖5-17所示。圖5-17文件菜單功能流程5.3.2畫圖板涂鴉功能的實現(xiàn)首先要添加畫布,畫布才是真正實現(xiàn)繪圖功能的,所以需要在程序中添加一個與繪圖有關的類[10]。①在工程中添加新的C++類,類名為PaintArea,以QWidget作為基類。②在paintArea.h中聲明對象和函數(shù)。classPaintArea:publicQWidget{PublicPaintArea();protected:voidpaintEvent(QPaintEvent*);//重繪事件private:QImageimage;//QImage類對象,用于在其上繪圖QRgbbackColor;//QRgb顏色對象,存儲image的背景色};③在paintarea.cpp中的構造函數(shù)里初始化對象。先加入頭文件聲明:#include<QPainter>再更改構造函數(shù)。PaintArea::PaintArea(){image=QImage(500,450,QImage::Format_RGB32);//畫布的初始化大小為500*450,使用32位顏色backColor=qRgb(255,255,255);//畫布初始化背景色使用白色(backColor);}④在中定義重繪函數(shù)。voidPaintArea::paintEvent(QPaintEvent*){QPainterpainter(this);(0,0,image);}⑤這樣就將畫布添加到主界面的中心區(qū),然后要在畫布類中添加一些代碼,實現(xiàn)一些基本的涂鴉功能。在paintarea.h中添加頭文件。#include<QMouseEvent>#include<QPoint>在protected中添加函數(shù)聲明。voidmousePressEvent(QMouseEvent*);//鼠標按下事件voidmouseMoveEvent(QMouseEvent*);//鼠標移動事件voidmouseReleaseEvent(QMouseEvent*);//鼠標釋放事件在private中添加對象聲明。QPointlastPoint,endpoint;//定義兩個坐標對象存放鼠標指針的前后兩個坐標最后在paintarea.cpp中添加函數(shù)的定義,這樣,再次運行程序就能實現(xiàn)涂鴉的功能了,效果如圖5-18所示。圖5-18實現(xiàn)涂鴉的功能的畫圖板實現(xiàn)編輯菜單功能編輯菜單主要完成圖片的一些形狀變化操作,所以需要在畫布類里添加一些函數(shù)和變量來實現(xiàn)這些功能[3]。①在paintarea.h中添加代碼。在public中添加函數(shù)聲明。voidzoomIn();//放大voidzoomOut();//縮小voidzoom_1();//還原voiddoRotate();//旋轉(zhuǎn)voiddoShear();//拉伸voiddoClear();//清空在private中添加變量聲明。qrealscale;//縮放量intangle;//角度qrealshear;//拉伸量②在paintarea.cpp中進行更改。在構造函數(shù)里進行變量初始。scale=1;angle=0;shear=0;然后進行那幾個函數(shù)的定義,更改重繪事件函數(shù),實現(xiàn)相關的效果,最后我們從mainwindow.ui中進入相關菜單的triggered事件槽函數(shù),更改如下[13]。voidMainWindow::on_action_4_triggered()//放大菜單{area->zoomIn();}voidMainWindow::on_action_5_triggered()//縮小菜單{area->zoomOut();}voidMainWindow::on_action_6_triggered()//還原菜單{area->zoom_1();}voidMainWindow::on_

溫馨提示

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

評論

0/150

提交評論