版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)——基于32位微處理器與實(shí)時(shí)操作系統(tǒng)第八講 基于?C/OS-Ⅱ的軟件設(shè)計(jì),uCOS-II的不足之處,只有多任務(wù)調(diào)度的簡(jiǎn)單內(nèi)核內(nèi)存管理過于簡(jiǎn)單,幾乎沒有動(dòng)態(tài)內(nèi)存管理功能文件系統(tǒng)和圖形界面需要外掛對(duì)于設(shè)備驅(qū)動(dòng)程序沒有專門統(tǒng)一的接口,對(duì)?COS-II進(jìn)行必要的擴(kuò)展,要想實(shí)現(xiàn)一個(gè)相對(duì)完整、實(shí)用的嵌入式操作系統(tǒng),還需要相當(dāng)多的擴(kuò)展性的工作。通過本章的學(xué)習(xí),讀者可了解以下知識(shí):建立FAT兼容的文件系統(tǒng)的建立方法
2、外設(shè)及驅(qū)動(dòng)程序的實(shí)現(xiàn)基于Unicode的漢字庫(kù)建立方法基本繪圖函數(shù)的實(shí)現(xiàn)其它實(shí)用API函數(shù),基于?COS-II擴(kuò)展RTOS的體系結(jié)構(gòu),1.系統(tǒng)外圍設(shè)備的硬件部分系統(tǒng)外圍設(shè)備的硬件部分包括:液晶顯示屏(LCD)、USB通信模塊、鍵盤、海量Flash存儲(chǔ)器、系統(tǒng)的時(shí)鐘和日歷。外圍設(shè)備的硬件部分是保證系統(tǒng)實(shí)現(xiàn)指定任務(wù)的最底層的部件。2、驅(qū)動(dòng)程序模塊驅(qū)動(dòng)程序是連接底層的硬件和上層的API函數(shù)的紐帶,有了驅(qū)動(dòng)程序模塊,就可以把操作系
3、統(tǒng)的API函數(shù)和底層的硬件分離開來(lái)。硬件的改變、刪除或者添加,只需要隨之改變、刪除或者添加提供給操作系統(tǒng)的相應(yīng)的驅(qū)動(dòng)程序就可以了。而不會(huì)影響到API函數(shù)的功能,更不會(huì)影響到用戶的應(yīng)用程序。,基于?COS-II擴(kuò)展RTOS的體系結(jié)構(gòu),3.操作系統(tǒng)的API函數(shù)在操作系統(tǒng)中提供標(biāo)準(zhǔn)的應(yīng)用程序接口(API)函數(shù),可以加速用戶應(yīng)用程序的開發(fā),統(tǒng)一應(yīng)用程序的標(biāo)準(zhǔn),同時(shí)也給操作系統(tǒng)版本的升級(jí)帶來(lái)了方便。在API函數(shù)中,提供了大量的常用模塊,可以大大
4、簡(jiǎn)化用戶應(yīng)用程序的編寫。4.實(shí)時(shí)操作系統(tǒng)的多任務(wù)管理?C/OS-Ⅱ作為操作系統(tǒng)的內(nèi)核,主要的任務(wù)就是完成多任務(wù)之間的調(diào)度和同步。5.系統(tǒng)的消息隊(duì)列這里所說(shuō)的系統(tǒng)的消息隊(duì)列是以?C/OS-Ⅱ的消息隊(duì)列派生出來(lái)的系統(tǒng)消息傳遞機(jī)制,用來(lái)實(shí)現(xiàn)系統(tǒng)的各個(gè)任務(wù)之間、用戶應(yīng)用程序的各個(gè)任務(wù)之間以及用戶應(yīng)用程序和系統(tǒng)的各個(gè)任務(wù)之間的通信。,基于?COS-II擴(kuò)展RTOS的體系結(jié)構(gòu),6.系統(tǒng)任務(wù)系統(tǒng)任務(wù)主要包括液晶顯示屏(LCD)的刷新任務(wù)、系
5、統(tǒng)鍵盤掃描任務(wù)。這兩個(gè)任務(wù)是操作系統(tǒng)的基本任務(wù),隨著操作系統(tǒng)的啟動(dòng)而運(yùn)行。7.用戶應(yīng)用程序用戶的應(yīng)用程序建立在系統(tǒng)的主任務(wù)(Main_Task)基礎(chǔ)之上。用戶應(yīng)用程序主要通過調(diào)用系統(tǒng)的API函數(shù)對(duì)系統(tǒng)進(jìn)行操作,完成用戶的要求。在用戶的應(yīng)用程序中也可以創(chuàng)建用戶自己的任務(wù)。任務(wù)之間的協(xié)調(diào)主要依賴于系統(tǒng)的消息隊(duì)列。,基于?COS-II擴(kuò)展RTOS的體系結(jié)構(gòu),嵌入式文件系統(tǒng),什么是文件系統(tǒng)(File System),文件系統(tǒng)的定義 —
6、—操作系統(tǒng)中組織、存儲(chǔ)和命名文件的結(jié)構(gòu),是操作系統(tǒng)中統(tǒng)一管理信息資源的一種軟件,管理文件的存儲(chǔ)、檢索、更新,提供安全可靠的共享和保護(hù)手段,并且方便用戶使用文件系統(tǒng)的功能 ——文件的構(gòu)造、命名、存取、保護(hù)等。文件系統(tǒng)的存儲(chǔ)媒質(zhì) ——磁盤(軟盤、硬盤)、光盤、FLASH(盤)、RAM、ROM、網(wǎng)絡(luò)甚至設(shè)備等,基于NAND FLASH的嵌入式文件系統(tǒng),Flash盤的FAT結(jié)構(gòu),FLASH讀寫的特點(diǎn),(1)必須以Page為
7、單位進(jìn)行讀寫;(2)寫之前必須先擦除原有內(nèi)容;(3)擦除操作必須對(duì)Block進(jìn)行,即一次至少擦除一個(gè)Block的內(nèi)容 針對(duì)這種情況,將Flash的一個(gè)Page定為1個(gè)扇區(qū),將其1個(gè)Block,32個(gè)扇區(qū)定為一個(gè)簇,這樣,簇的容量剛好為512*32=16K,滿足FAT16對(duì)簇大小的要求,FLASH文件系統(tǒng)的要求,(1)掉電安全:嵌入式系統(tǒng)的運(yùn)行環(huán)境一般比較惡劣,但同時(shí)又要求有較高的可靠性。這就對(duì)FLASH文件系統(tǒng)提出了較高的要
8、求,無(wú)論程序崩潰或系統(tǒng)掉電,都不能影響文件系統(tǒng)的一致性和完整性,文件系統(tǒng)的寫入、垃圾回收等操作對(duì)系統(tǒng)異常中止都非常敏感,極易造成數(shù)據(jù)丟失和數(shù)據(jù)垃圾,在文件系統(tǒng)設(shè)計(jì)和選用時(shí)應(yīng)考慮;(2)平均使用(wear-leveling)率:由于FLASH扇區(qū)的擦除次數(shù)有限制,要求能夠均勻使用各扇區(qū),以延長(zhǎng)FLASH的使用壽命;(3)高效垃圾回收(garbage collection):任何存儲(chǔ)器在分配使用一段時(shí)間后,都會(huì)出現(xiàn)空區(qū)和碎片數(shù)據(jù),為保證
9、存儲(chǔ)空間的使用率,方法是先移動(dòng)扇區(qū)數(shù)據(jù),再擦除整個(gè)扇區(qū);(4)低空間消耗(lov overhead):指文件系統(tǒng)管理機(jī)構(gòu)在FLASH存儲(chǔ)器上的空間消耗,該空間用于FS建立,而不能用于實(shí)際數(shù)據(jù)的存儲(chǔ),可以提高有用數(shù)據(jù)的存儲(chǔ)空間,FLASH文件系統(tǒng)的分類,(1)集中管理文件系統(tǒng)特點(diǎn):存儲(chǔ)器空間的使用信息集中存放在存儲(chǔ)器的某個(gè)地方,存儲(chǔ)器的其它區(qū)域用于存放數(shù)據(jù),數(shù)據(jù)必須依賴關(guān)鍵信息區(qū)才能被索引和使用缺點(diǎn):需要大量緩存空間,當(dāng)某扇區(qū)需
10、要更新時(shí),先將扇區(qū)數(shù)據(jù)備份到RAM中,再進(jìn)行擦除操作,最后將修改后的備份寫入FLASH,難以保證掉電安全,不能均勻使用存儲(chǔ)器空間,特別是關(guān)鍵信息區(qū),對(duì)文件系統(tǒng)的使用都會(huì)改寫該區(qū),導(dǎo)致FLASH快速損壞;,FLASH文件系統(tǒng)的分類,(2)線性文件系統(tǒng)概述:每個(gè)文件相關(guān)的信息都連續(xù)存放在存儲(chǔ)器中,實(shí)現(xiàn)簡(jiǎn)單,讀寫快速,文件系統(tǒng)的關(guān)鍵信息分布存放;優(yōu)點(diǎn):安全性好;能保證存儲(chǔ)器的平均使用,延長(zhǎng)了FLASH的使用壽命;缺點(diǎn):對(duì)文件操作效
11、率低,不易實(shí)現(xiàn)添加、插入、剪切等操作;,FLASH文件系統(tǒng)的分類,(3)日志文件系統(tǒng)概述:日志結(jié)構(gòu)的文件系統(tǒng)使用順序的、只增的日志作為磁盤上唯一的組織文件系統(tǒng)數(shù)據(jù)的結(jié)構(gòu) ,文件的描述可以仍采用傳統(tǒng)的索引組織方式。方法是在內(nèi)存中將幾次 FS的修改匯集成一個(gè)大的日志條目(被稱為段映像 ) ,然后動(dòng)態(tài)分配磁盤空間并通過一次寫操作寫到磁盤上的一個(gè)連續(xù)的、固定大小的日志段 (Segment)中。并定時(shí)或當(dāng)系統(tǒng)發(fā)出同步寫請(qǐng)求時(shí)保證日志同步寫到磁
12、盤上;優(yōu)點(diǎn):恢復(fù)快速——不會(huì)產(chǎn)生丟失的簇、也不會(huì)因?yàn)榈綦姸茐奈募到y(tǒng)。,jffs/jffs2文件系統(tǒng)的優(yōu)缺點(diǎn),JFFS(Journaling Flash File System)概述:由瑞典Axis通信公司開發(fā)的文件系統(tǒng),主要針對(duì)NOR型Flash存儲(chǔ)器設(shè)計(jì),提供了掉電安全,平均使用等特性,是基于Linux,由于遵循GPL開放源代碼,易實(shí)現(xiàn)移植;日志文件系統(tǒng)提供了更好的崩潰、掉電安全保護(hù)jffs2支持對(duì)flash的均勻磨
13、損在扇區(qū)級(jí)別上執(zhí)行閃存擦除/寫/讀操作功能較好文件系統(tǒng)接近滿時(shí),JFFS2 會(huì)大大放慢運(yùn)行速度——垃圾收集,Nand上yaffs文件系統(tǒng)的優(yōu)勢(shì),yaffs專門為Nand flash設(shè)計(jì)的日志文件系統(tǒng),系統(tǒng)健壯,節(jié)省RAM,啟動(dòng)時(shí)間快。jffs/jffs2不適合大容量的Nand flashjffs的日志通過jffs_node建立在RAM中,占用RAM空間,對(duì)于128MB的Nand大概需要4MB的空間來(lái)維護(hù)節(jié)點(diǎn)。啟動(dòng)的時(shí)候需要掃
14、描日志節(jié)點(diǎn),不適合大容量的Nand flash。FAT系統(tǒng)沒有日志。,FAT文件系統(tǒng)的發(fā)展,,DOS 1.0 (1981),DOS 3.0 (1984),Win 95 (1995),Win 95 Osr2 (1996),Win 98 (1998),Win 3.1 (1992),,,,,FAT12,FAT16,VFAT,FAT32,FAT12/FAT16/FAT32的比較,FAT16文件系統(tǒng)基本結(jié)構(gòu),FAT 文件系統(tǒng)由下面四部分組成保
15、留區(qū) Reserved region存放引導(dǎo)記錄,BIOS信息等FAT 區(qū)FAT信息列表 (12/16/32 bits)根目錄區(qū)目錄信息列表 (32 bytes)文件和目錄區(qū)存放簇信息,保留區(qū) Reserved Region,引導(dǎo)記錄基本信息 ……引導(dǎo)代碼BIOS參數(shù)塊 (BPB)字節(jié)/扇區(qū) (512,1024,2048,4096)扇區(qū)/簇 (1,2,4,8,16,32,64,128)根目錄數(shù)總扇區(qū)值介質(zhì)類
16、型 (硬盤,軟盤,F(xiàn)LASH),,FAT 區(qū),通常有 FAT(P)(primary)和FAT(B)(backup)每一個(gè)簇都有一個(gè)對(duì)應(yīng)的FAT目錄,,,,,,,……,FAT,數(shù)據(jù)區(qū),,…,FAT 鏈表 (FAT16),……,,目錄樹,FAT 區(qū),典型FLASH文件系統(tǒng)的結(jié)構(gòu),(1)系統(tǒng)記錄(SR,System Record) 存放媒質(zhì)信息和最重要的文件系統(tǒng)信息。媒質(zhì)信息諸如Flash存儲(chǔ)器的類型、容量,劃分成多少個(gè)區(qū)塊,每區(qū)塊包含
17、多少個(gè)頁(yè)面等。文件系統(tǒng)信息包括版本信息、保留區(qū)塊的數(shù)目和位置、文件分配表和文件登記表所在的位置和大小、數(shù)據(jù)區(qū)域的位置和大小等。(2)文件分配表(FAT,F(xiàn)ile Allocation Table) 存放著Flash存儲(chǔ)器上所有區(qū)塊的占用與空閑情況以及每個(gè)文件的存儲(chǔ)連接結(jié)構(gòu)。采用FAT16文件格式,(3)文件登記表(FRT,F(xiàn)ile Register Table)存放著Flash文件系統(tǒng)中每一個(gè)文件的文件代號(hào)、文件長(zhǎng)度、文件屬性
18、以及該文件的存儲(chǔ)鏈在文件分配表中的入口。(4)數(shù)據(jù)區(qū)域(Data Area)用于存放文件的數(shù)據(jù)內(nèi)容。本Flash文件系統(tǒng)中,數(shù)據(jù)分配的最小單位是Flash存儲(chǔ)器的一個(gè)基本擦除單元,即一個(gè)物理區(qū)塊(Block)。,FLASH文件系統(tǒng)的結(jié)構(gòu),文件系統(tǒng)的實(shí)現(xiàn)—FILE結(jié)構(gòu)體,typedef struct{U8 Buffer[BLOCK_SIZE];//文件緩沖區(qū)U32 fileblock;//文件當(dāng)前的簇的位置
19、U32 filemode;//打開文件的模式U32 filebufnum; //文件緩沖區(qū)中已經(jīng)讀取/寫入的字節(jié)數(shù)U32 fileCurpos;//讀寫的當(dāng)前位置U32 filesize;//文件的大小}FILE;,與FLASH存儲(chǔ)器的接口函數(shù),塊擦除unsigned char Erase_Cluster(unsigned int cluster)頁(yè)寫入int WritePag
20、e(unsigned int block,unsigned int page,unsigned char *pPage)頁(yè)讀出void ReadPage(unsigned int block,unsigned int page,unsigned char *pPage),文件系統(tǒng)的相關(guān)函數(shù),始始化文件系統(tǒng) void initOSFile(char filename[],U32 OpenMode)打開文件 FILE* OpenOS
21、File(char filename[],U32 OpenMode)讀文件到緩沖區(qū) U32 ReadOSFile(FILE* pfile,U8* ReadBuffer,U32 nReadbyte)把緩沖區(qū)內(nèi)容寫入文件 U32 WriteOSFile(FILE* pfile,U8* WriteBuffer,U32 nWritebyte)關(guān)閉文件,釋放緩沖區(qū) void CloseOSFile(FILE* Pfile),OpenOSFi
22、le的工作的流程圖,ReadOSFile函數(shù)的程序流程圖,ReadOSFile函數(shù)的程序流程圖,,WriteOSFile函數(shù)的程序流程圖,WriteOSFile函數(shù)的程序流程圖,,CloseOSFile函數(shù)的程序流程圖,CloseOSFile函數(shù)的程序流程圖,嵌入式GUI技術(shù),GUI的概念,GUI的定義 Graphics User Interface, 是指計(jì)算機(jī)與其使用者之間的圖形化對(duì)話接口。GUI的主要特征:
23、 ——Windows,采用窗口界面,每個(gè)窗口是用戶或系統(tǒng)的一個(gè)工作區(qū)域。一個(gè)屏幕上可以有多個(gè)窗口。 ——Icons,采用形象化的圖標(biāo)或圖符,易于操作者理解與操作。 ——Menu,采用菜單,可供用戶選擇的功能提示 ——Pointing Devices ,指鼠標(biāo)器、觸摸屏等,便于用戶直接對(duì)屏幕對(duì)象進(jìn)行操作。,嵌入式GUI的特點(diǎn),體積小功能強(qiáng);圖形算法簡(jiǎn)潔、快速,占用系統(tǒng)資源少可靠性高;模塊結(jié)構(gòu),
24、便于移植和定制,嵌入式GUI的實(shí)現(xiàn)方法,1)按照需求開發(fā)滿足自身特定需要的GUI系統(tǒng);2)將GUI作為一個(gè)軟件層從應(yīng)用程序中剝離,GUI的支持邏輯由應(yīng)用程序自己負(fù)責(zé);3)設(shè)計(jì)一個(gè)支持大多數(shù)常見的GUI對(duì)象的應(yīng)用編程接口庫(kù),使其具有與其他通用開發(fā)工具相類似的調(diào)用方法(如Win32)的GUI系統(tǒng),幾種典型的嵌入式GUI,Compact X-Window System:可擴(kuò)展性好、可移植性好,代碼尺寸大 Microwindows
25、:開放源碼的嵌入式GUI軟件,可移植性好,圖形功能出色。OpenGUI :自由軟件。匯編實(shí)現(xiàn)的內(nèi)核,并利用MMX指令進(jìn)行了優(yōu)化,OpenGUI運(yùn)行速度非???。支持 32 位處理器,可以在MS-DOS,QNX和Linux下運(yùn)行。主要用來(lái)在這些系統(tǒng)中開發(fā)圖形應(yīng)用程序和游戲 Qt/Embedded: QT 庫(kù)開發(fā)商Trolltech 推出的面向嵌入式系統(tǒng)的 QT 版本??梢浦残院?,價(jià)格較貴。 MiniGUI:自由軟件,面向嵌入式系
26、統(tǒng)或者實(shí)時(shí)系統(tǒng)的圖形用戶界面支持系統(tǒng)。它主要運(yùn)行于 Linux ,還可以運(yùn)行在任何一種具有 POSIX 線程支持的 POSIX 兼容系統(tǒng)上,Qt/Embedded,可移植性好模塊化設(shè)計(jì)開放源代碼圖形界面漂亮,Microwindows,跨平臺(tái) 不需 X Server 采用 FLTK Toolkits 支持 TrueType 字型,MiniGUI,支持 GB2312 與 BIG5 字集支持多種格式字體,例如:TrueType、
27、Adobe Type1等。 GUI函數(shù) ( MoveTo、LineTo、FillBox、Rectangle、Circle、TextOut、DrawText ..等 ),MiniGUI,面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持系統(tǒng)1999 年初以 GPL 條款發(fā)布了第一個(gè)版本,國(guó)際知名的自由軟件項(xiàng)目已廣泛應(yīng)用于數(shù)控系統(tǒng)、手持信息終端產(chǎn)品、彩票機(jī)、DVR 系統(tǒng)、金融終端、KTV 點(diǎn)播系統(tǒng)、POS 機(jī)等等已成為跨操作系統(tǒng)的圖形用戶界
28、面支持系統(tǒng):可在Linux/uClinux、eCOS、uC/OS-II、VxWorks、pSOS 等操作系統(tǒng)上運(yùn)行已驗(yàn)證硬件平臺(tái): Intel x86, ARM (ARM7 /AMR9 /StrongARM/xScale), PowerPC, MIPS, M68K, ColdFire,嵌入式GUI的結(jié)構(gòu)模型,嵌入式硬件平臺(tái),嵌入式操作系統(tǒng),,窗口模型,,顯示模型,,用戶模型,顯示模型:圖形在窗口上的基本顯示模式窗口模型:窗口如何顯示
29、及改變用戶模型:構(gòu)造用戶界面的工具及如何在屏幕上 組織各種圖形對(duì)象,以及這些對(duì)象之間如何 交互的說(shuō)明。,圖形用戶系統(tǒng)是由顯示模型接口程序、窗口模型接口程序和用戶模型接口程序共同組成的。,嵌入式GUI的體系結(jié)構(gòu),(1)API提供操作各種GUI對(duì)象(如窗口、菜單等)的應(yīng)用編程接口函數(shù);(2)Core提供核心的圖形操作功能,如消息機(jī)制、圖形設(shè)備接口、字體、窗口與桌面等的管理功能。(3)IAL和GAL指硬件設(shè)備輸入抽
30、象層和圖形輸出抽象層,與底層輸入輸出設(shè)備接口,便于GUI掛接不同的輸入輸出設(shè)備,實(shí)現(xiàn)GUI系統(tǒng)良好的可移植性和通用性,核心圖形操作層的結(jié)構(gòu),核心機(jī)制模塊,核心機(jī)制模塊是嵌入式GUI中最重要的組成部分,包括消息機(jī)制和事件驅(qū)動(dòng)機(jī)制、桌面操作、初始化操作、定時(shí)器操作等幾個(gè)子模塊,下面介紹幾個(gè)主要子模塊的功能:1) 消息機(jī)制和事件驅(qū)動(dòng)機(jī)制子模塊:這個(gè)子模塊主要負(fù)責(zé)消息的接受、分發(fā)和路由等操作;2) 桌面子模塊:桌面是GUI系統(tǒng)中非常重要的一
31、個(gè)部分,相當(dāng)于一個(gè)最底層窗口,其他主窗口都覆蓋其上,維護(hù)了GUI中很多總體全局的操作;3) 初始化子模塊:它是GUI系統(tǒng)中最基本的一個(gè)模塊,每次GUI運(yùn)行之初都要通過這個(gè)模塊的API函數(shù)對(duì)整個(gè)GUI環(huán)境參數(shù)進(jìn)行設(shè)定和初始化操作;4) 定時(shí)器子模塊:定時(shí)器是GUI中非常重要的組成部分,當(dāng)用戶需要定時(shí)的處理某項(xiàng)操作將會(huì)使用該模塊,在系統(tǒng)中也有使用,如編輯框控件中光標(biāo)的閃爍,進(jìn)度條控件進(jìn)度塊的前進(jìn)等。,字符集與字體模塊,矢量字體 基于矢
32、量的的字體,稱之為可縮放的字體,輪廓字體,或矢量字體。由于這些字體在存儲(chǔ)時(shí)亦只存儲(chǔ)了其輪廓,因此,在不同的縮放大小下依然能保持美觀而不會(huì)出現(xiàn)“鋸齒”。這點(diǎn)是很適合其完整地在Web上傳輸。一般說(shuō)來(lái),Logo、線形藝術(shù)作品、圖表、動(dòng)畫、抽象藝術(shù)作品等凡較容易定義顏色區(qū)域的圖形,用矢量圖都能產(chǎn)生很好的效果。計(jì)算機(jī)是以處理數(shù)字為基礎(chǔ),如果要處理文字就需要規(guī)定一個(gè)編碼系統(tǒng)用不同的數(shù)字來(lái)表示相應(yīng)的字符。我們較為熟悉的有GB、GBK、BIG5、AS
33、CII等等。由于編碼不統(tǒng)一,這些編碼系統(tǒng)之間經(jīng)常相互沖突。事實(shí)上,兩種編碼可能使用相同的數(shù)字代表兩個(gè)不同的字符;或者使用不同的數(shù)字代表相同的字符。在Unicode的雙字節(jié)版本中(UTF-16)使用的是16位編碼方式,可提供65,000多個(gè)字符代碼指針。其編碼容量可涵蓋世界上幾乎所有的語(yǔ)言,不僅包括拉丁語(yǔ),希臘語(yǔ),斯拉夫語(yǔ),希伯來(lái)語(yǔ),阿拉伯語(yǔ),亞美尼亞語(yǔ),還包括中文,日文和韓文這樣的象形文字,以及平假名,片假名,孟加拉語(yǔ),泰米爾語(yǔ),泰國(guó)
34、語(yǔ),老撾語(yǔ)等。目前還有大約8000個(gè)代碼指針未用,可供擴(kuò)展。,圖形設(shè)備接口,圖形設(shè)備接口(Graphics Device Interface,GDI)象GUI圖形操作的中間件,主要功能是支持與設(shè)備無(wú)關(guān)的圖形操作,GDI將上層應(yīng)用和不同輸出設(shè)備的特性隔離開來(lái),使編制的上層應(yīng)用能夠毫無(wú)困難地在任意一種圖形輸出設(shè)備上運(yùn)行。它向上層應(yīng)用(最終用戶或者系統(tǒng)其他上層組件)提供了一些基本的服務(wù):位圖(bitmap)、文本(text)、一般繪圖(G
35、en Drawing)等,控件,,一般地,GUI系統(tǒng)都會(huì)預(yù)先定義一些控件類,當(dāng)利用某個(gè)控件類創(chuàng)建控件之后,所有屬于這個(gè)控件類的控件均會(huì)具有相同的行為和顯示。利用這些技術(shù),可以確保一致的人機(jī)操作界面,而程序員可以像搭積木一樣地組建圖形用戶界面。嵌入式GUI系統(tǒng)使用了控件類和控件的概念,可以方便地對(duì)已有控件進(jìn)行重載,使其擁有一些特殊效果。如需要建立一個(gè)只允許輸入數(shù)字的編輯框時(shí),可以通過重載已有編輯框而實(shí)現(xiàn),而不需要重新編寫一個(gè)新的控件類
36、。,常用GUI函數(shù)簡(jiǎn)介,在多任務(wù)操作系統(tǒng)中,繪圖設(shè)備上下文(DC)是繪圖的關(guān)鍵。繪圖設(shè)備上下文(DC)保存了每一個(gè)繪圖對(duì)象的相關(guān)參數(shù)(比如:繪圖畫筆的寬度、繪圖的原點(diǎn)坐標(biāo)等)。在多任務(wù)操作系統(tǒng)中,通過繪圖設(shè)備上下文(DC)來(lái)繪圖,可以保證在不同的任務(wù)繪圖的參數(shù)是相互獨(dú)立的,不會(huì)互相影響。,DC的定義,typedef struct{int DrawPointx;int DrawPointy; //繪圖所使用的坐標(biāo)點(diǎn)int
37、 PenWidth; //畫筆寬度U32 PenMode; //畫筆模式U32 PenColor; //畫筆的顏色int DrawOrgx; //繪圖的坐標(biāo)原點(diǎn)位置int DrawOrgy;int DrawRangex; //繪圖的區(qū)域范圍int DrawRangey;U8 bUpdataBuffer; //是否更新后臺(tái)緩沖區(qū)U32 Fontcolor; //字
38、符顏色}DC,*PDC;,DC的使用,DC創(chuàng)建,PDC pdc;pdc=CreateDC();,典型的繪圖函數(shù)(a),void initOSDC(); PDC CreateDC(); void DestoryDC(PDC pdc); void MoveTo(PDC pdc, int x, int y); void LineTo(PDC pdc, int x, int y); void DrawRectFrame(PDC p
39、dc, int left,int top ,int right, int bottom); void Circle(PDC pdc, int x0, int y0, int r);,典型的繪圖函數(shù)(b),void SetDrawOrg(PDC pdc, int x,int y, int* oldx, int *oldy) 設(shè)置繪圖設(shè)備上下文(DC)的原點(diǎn),典型的繪圖函數(shù)(c),void SetDrawRange(PDC pdc, i
40、nt x,int y, int* oldx, int *oldy) 設(shè)置繪圖設(shè)備上下文(DC)的繪圖范圍 x,y:設(shè)定的橫向、縱向繪圖的范圍,如果x(或者y)為1,則表示x(或者y)方向的比例隨著y(或者x)方向的范圍按比例縮放。如果參數(shù)為-1,表示方向相反,DC設(shè)置舉例,PDC pdc;pdc=CreateDC();SetDrawOrg(pdc,170,50,&oldx,&oldy);SetDrawRange
41、(pdc,800,-1,&oldxrange, &oldyrange); 上面的程序代碼創(chuàng)建一個(gè)繪圖設(shè)備上下文(DC),將原點(diǎn)坐標(biāo)設(shè)定在液晶屏設(shè)備坐標(biāo)的(170,50),并把繪圖的邏輯坐標(biāo)的水平值設(shè)置成800,垂直范圍按照液晶屏實(shí)際的橫縱比例縮放。,DC設(shè)置圖例,基于Unicode的字庫(kù),什么是Unicode使用Unicode的優(yōu)點(diǎn) 字符的存儲(chǔ)方式編寫Unicode的程序 Unicode字模的提取Uni
42、code字庫(kù)的顯示及相關(guān)函數(shù),什么是Unicode,Unicode 是 統(tǒng)一編碼的緊縮寫法世界上常用的編碼系統(tǒng)有數(shù)百種之多,但所有的這些編碼系統(tǒng),沒有哪一個(gè)能有足夠的字符,可以適用于多種語(yǔ)言文本由于編碼不統(tǒng)一,這些編碼系統(tǒng)之間經(jīng)常相互沖突Unicode出現(xiàn)改變了這一切在Unicode的雙字節(jié)版本中(UTF-16)使用的是16位編碼方式,可提供65,000多個(gè)字符代碼指針,使用Unicode的優(yōu)點(diǎn),使用Unicode避免了亂碼的產(chǎn)
43、生,使得國(guó)際間文本數(shù)據(jù)交換成為可能解決了多語(yǔ)言文本同平面共存的問題實(shí)現(xiàn)了軟件的全球化,避免了軟件產(chǎn)品在貫穿多個(gè)平臺(tái)、語(yǔ)言和國(guó)家時(shí)的重建,字符的存儲(chǔ)方式,在圖形操作系統(tǒng)中,字符(包括:中文、英文)通常有2種存儲(chǔ)方式。 一種方式存儲(chǔ)的是字符的圖形點(diǎn)陣 另一種方式是存儲(chǔ)漢字的矢量圖形 在嵌入式處理中,因?yàn)樘幚砥鞯男阅芎颓度胧较到y(tǒng)資源還不如PC機(jī),而且,嵌入式只是針對(duì)專一控制而應(yīng)用的系統(tǒng)?;旧希瑳]有必要使用矢量字庫(kù)。為了進(jìn)一步加快
44、處理速度,系統(tǒng)中保存有12x12、16x16和24x24三種分辨率的點(diǎn)陣字庫(kù)。,提取Unicode字庫(kù),Windows2000及其以后的系統(tǒng)版本,默認(rèn)的字符處理方式是UnicodeWindows平臺(tái)上,有大量豐富的字符資源Windows2000及其以后的系統(tǒng)版本中,提取Unicode字符點(diǎn)陣無(wú)疑成了最好的選擇。我們的Unicode字符的提取軟件是使用Microsoft Visual C++ 6.0編寫的。,Unicode字庫(kù)分配,本
45、系統(tǒng)中編碼采用雙字節(jié)版本的Unicode格式收集了ASCII字符(0x0000-0x00ff)256個(gè)特殊圖形符號(hào)(0x2600-0x267f和0x2700-0x27bf)320個(gè)中文字符(0x4e00-0x9fff)20992個(gè)。,Unicode字庫(kù)相關(guān)函數(shù),轉(zhuǎn)換函數(shù)void Int2Unicode(int number, U16 str[ ]); int Unicode2Int(U16 str[ ]); void str
46、Char2Unicode(U16 ch2[ ], const char ch1[ ]); 輸出函數(shù)void TextOut(PDC pdc, int x, int y, U16 *ch, U8 bunicode, U8 fnt); void TextOutRect(PDC pdc, structRECT* prect, U16* ch, U8 bunicode, U8 fnt),典型的控件,控件是可視化開發(fā)的基礎(chǔ)。對(duì)于開發(fā)應(yīng)用程序
47、的用戶來(lái)說(shuō),控件是一個(gè)獨(dú)立的組件,它有著自己的顯示方式,自己的動(dòng)態(tài)內(nèi)存管理模式,甚至有的控件還可以向系統(tǒng)發(fā)送自己的消息。用戶不需要掌握控件的內(nèi)部到底是如何工作的,用戶只需要通過控件提供的API函數(shù),改變控件相應(yīng)的屬性,從而改變控件的顯示方式??丶囊肟梢苑奖阌脩舻拈_發(fā),加速用戶應(yīng)用程序界面的編寫速度。為運(yùn)行在操作系統(tǒng)上的應(yīng)用程序的界面提供了統(tǒng)一的標(biāo)準(zhǔn),方便了使用。,系統(tǒng)中的控件,文本框控件列表框控件圖片框控件按鈕控件窗體
48、,控件的使用流程,通用的系統(tǒng)控件,對(duì)一個(gè)通用的系統(tǒng)控件,包含了如下的數(shù)據(jù)結(jié)構(gòu):typedef struct{U32 CtrlType;//控件的類型U32 CtrlID;//控件的IDstructRECT ListCtrlRect;//控件的位置和大小U32 FontSize;//控件的字符大小U32 style;//控件的的邊框風(fēng)格U8 bVisible;//是否可見}OS_C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 32位嵌入式RISC微處理器設(shè)計(jì).pdf
- 基于32位ARM微處理器與μC-OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)的嵌入式系統(tǒng)的研究.pdf
- 32位RISC嵌入式微處理器設(shè)計(jì).pdf
- 微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì)
- 32位RISC嵌入式微處理器設(shè)計(jì)研究.pdf
- 嵌入式32位RISC微處理器的設(shè)計(jì)與實(shí)現(xiàn)及其控制邏輯的改進(jìn).pdf
- 32位嵌入式微處理器的高速緩存的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 32位嵌入式微處理器控制單元的設(shè)計(jì).pdf
- 32位嵌入式處理器的Cache設(shè)計(jì).pdf
- 嵌入式微處理器開發(fā)系統(tǒng)的設(shè)計(jì).pdf
- 基于ARM微處理器與μC-OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)的嵌入式多軸控制器的開發(fā).pdf
- 基于32位arm嵌入式處理器的調(diào)試技術(shù)
- 基于32位arm嵌入式處理器的調(diào)試技術(shù)
- 32位RISC嵌入式處理器的存儲(chǔ)系統(tǒng)設(shè)計(jì).pdf
- 32位嵌入式系統(tǒng)的Java協(xié)處理器設(shè)計(jì)研究.pdf
- 嵌入式信道微處理器的設(shè)計(jì).pdf
- 基于ARM微處理器的嵌入式數(shù)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 嵌入式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)——基于凌陽(yáng)SPCE061A微處理器與μC-OS-Ⅱ?qū)崟r(shí)操作系統(tǒng).pdf
- 32位RISC微處理器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 32位ARM嵌入式處理器的調(diào)試技術(shù).doc
評(píng)論
0/150
提交評(píng)論