當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件

引 言

無(wú)紙記錄儀記錄采樣得到的數(shù)據(jù),并根據(jù)用戶選擇的配置顯示出用戶需要的時(shí)問(wèn)段的數(shù)據(jù)。該記錄儀實(shí)現(xiàn)無(wú)筆、無(wú)紙記錄,日常維護(hù)工作小??赏瑫r(shí)輸入多種信號(hào),互不干涉,實(shí)時(shí)顯示,可靠性好,應(yīng)用靈活。

對(duì)無(wú)紙記錄儀界面要求是:顯示信息量大,方便用戶查找所需要的信息;操作簡(jiǎn)單,界面友好,使用戶不必進(jìn)行專業(yè)培訓(xùn)即可操作。

lμC/GUI

1.1 μC/GuI簡(jiǎn)介

μc/GUI是美國(guó)Micrium公司出品的一款針對(duì)嵌入式系統(tǒng)的優(yōu)秀圖形軟件。它是為任何使用LcD(液晶顯示器)圖形顯示的應(yīng)用提供高效的、獨(dú)立于處理器及LcD控制器而設(shè)計(jì)的GuI(圖形用戶接口),適用于單任務(wù)或多任務(wù)系統(tǒng)環(huán)境。其主要特性是:豐富的圖形庫(kù),多窗口、多任務(wù)機(jī)制,窗口管理及豐富窗口控件類(按鈕、檢驗(yàn)框、單/多行編輯框、列表框、進(jìn)度條、菜單等),多字符集和多字體支持,多種常見(jiàn)圖像文件支持,鼠標(biāo)、觸摸屏支持,靈活自由配制等。

1.2 μC/GuI文件組織

μC/GUI文件結(jié)構(gòu)見(jiàn)圖l。

μC/CUl\GuI\Ant認(rèn)lias:處理顯示的邊緣模糊效果,即抗鋸齒和優(yōu)化LCD鋸齒。

μC/CuI\GUI\ConvertColor:涉及調(diào)色板模式。μC\GuI的調(diào)色板模式支持111、222、223、323、332、444、555、565、8666等相關(guān)模式。

μc/GuI\GuI\ConvertMono:描述單色顯示的不同模式。

μC/GUI\GUI\Core:是μC/GUI的核心部分,包括GUI頭文件、GUI顯示各種文本和數(shù)字、設(shè)置各種字體、2一D圖形庫(kù)、繪圖函數(shù)、鍵盤函數(shù)等。

μC/GUI\GUI\Font:μC/GUl支持的字體。

μC/GUI\GUI\LCDDriver:很多已經(jīng)完備的LCD控制器的驅(qū)動(dòng)程序以及API函數(shù)。

tAC/GUI\GUI\MemDev:MemDev的所有函數(shù)。txC/GUI函數(shù)繪圖不使用MemDev時(shí),畫圖操作直接寫到終端上顯示,交迭繪圖執(zhí)行時(shí)刷新屏幕,多次刷新時(shí)就會(huì)出現(xiàn)抖動(dòng)。如果在程序中使用MemDev,則所有的執(zhí)行操作都在MemDev中執(zhí)行,當(dāng)所有的操作都執(zhí)行完畢之后,最后的結(jié)果才會(huì)送到屏幕上顯示,因而可以避免多次刷新,從而避免抖動(dòng)。

μC/GUI\GUI\Touch:觸摸屏驅(qū)動(dòng)函數(shù)。

μC/GUI\GUI\Widget:窗口控件函數(shù)。

μC/GUI\GUI\WM:窗口管理函數(shù)。

1.3 μC/GUI與其他圖形系統(tǒng)的比較

a)μC/GUI優(yōu)勢(shì)在于體積小,配制性強(qiáng),運(yùn)用領(lǐng)域廣泛。只要滿足RAM 1 00 B,堆棧5 0 0 B,ROM10 kB的小型系統(tǒng)中都可以運(yùn)行μC/GUI,而這個(gè)需求是其他圖形系統(tǒng)所不及的。在資源豐富的大型系統(tǒng)中,也只需要RAM 2 kB~6 kB,堆棧1 2 00 B,ROM30kB一60kB就可以滿足μC/GUI的各種功能。對(duì)比于其他圖形系統(tǒng)最少幾百kB,動(dòng)輒上MB的系統(tǒng)而言是非常有優(yōu)勢(shì)的。其眾多的配制,滿足不同需求用戶需要,方便靈活小巧,實(shí)用性大大增強(qiáng)。

b)平臺(tái)的廣泛性,移植方便。由于μc/GuI是100%C編寫,適應(yīng)絕大多數(shù)軟硬平臺(tái),相對(duì)于眾多具有軟硬件針對(duì)性的圖形系統(tǒng)而言,結(jié)構(gòu)劃分和模塊劃分非常清晰,分設(shè)專門的LCD驅(qū)動(dòng)模塊,移植簡(jiǎn)單方便。代碼量相對(duì)較小,易操作,可擴(kuò)展性強(qiáng),方便用戶定制和自主更新完善,滿足個(gè)性需求。

2工程項(xiàng)目分析

本文主要實(shí)現(xiàn)無(wú)紙記錄儀的界面。項(xiàng)目中利用μC/GUI的消息傳遞機(jī)制來(lái)實(shí)現(xiàn)各控件之間的聯(lián)系及功能,使用回調(diào)函數(shù)進(jìn)行各界面之間的切換。

2.1消息機(jī)制

μC/GuI是采用消息驅(qū)動(dòng)的,它專門有對(duì)外的一套收集消息的接口。

一些基本的消息如下:

wM-CREATE:窗體創(chuàng)建消息,每創(chuàng)建一個(gè)窗體完后都會(huì)向該窗體發(fā)送此消息。

wM-SHOW:顯示窗體消息,此消息在μC/GUI中各控件窗體內(nèi)均未作處理。要顯示窗體一般使用wM-ShowWindow函數(shù)。

WM-PAINT:窗體重畫消息,當(dāng)窗體所在區(qū)域全部或部分無(wú)效時(shí),系統(tǒng)會(huì)發(fā)出該消息,將無(wú)效區(qū)域重畫,μC/GUI中是將全部區(qū)域重畫;當(dāng)由外部輸人操作引起無(wú)效區(qū)域產(chǎn)生時(shí),系統(tǒng)會(huì)在消息處理中發(fā)送該消息到窗體消息回調(diào)函數(shù)中,以重畫此窗體。

WM-KEY:處理按鍵式操作的輸入外設(shè)的消息,消息中必須包含按鍵的按下或彈起狀態(tài),此消息在任務(wù)消息循環(huán)中循環(huán)處理,一旦產(chǎn)生就會(huì)發(fā)送給當(dāng)前焦點(diǎn)窗體。

wM-SET_FOCUS:所有外部輸入設(shè)備消息都是發(fā)送給當(dāng)前焦點(diǎn)窗體的,用戶可以通過(guò)此消息來(lái)設(shè)定當(dāng)前的焦點(diǎn)窗體。

WM-NOTIFY-PARENT:此消息將子窗體的外設(shè)輸入消息傳送到它的父窗體,因?yàn)橐话闱闆r下消息都是在父窗體中統(tǒng)一處理,如對(duì)話框中的按鈕點(diǎn)擊事件,一般在用戶自定義的窗體消息處理函數(shù)中處理,所以必須要子窗體將獲取的輸入外設(shè)的消息傳送給父窗體,這樣才能在父窗體中進(jìn)行子窗體的點(diǎn)擊事件消息的處理,處理該消息時(shí)通過(guò)控件ID來(lái)區(qū)別不同的控件,通過(guò)消息中的通知碼來(lái)區(qū)別控件被操作的各種狀態(tài)。

wM_DELETE:要?jiǎng)h除窗體時(shí)發(fā)送的消息,主要清除窗體數(shù)據(jù)結(jié)構(gòu)所占用內(nèi)存,此消息由WM-DeleteWindow函數(shù)發(fā)送。

WIDGET_HandleActive:基礎(chǔ)控件共通消息處理,大部分μC/GUI控件中都會(huì)在消息回調(diào)函數(shù)的頭部進(jìn)行這個(gè)調(diào)用,處理了消息后,就直接退出消息回調(diào)函數(shù)的調(diào)用。這個(gè)函數(shù)中處理如下消息:

WM-GET-ID:返回窗體控件標(biāo)志ID。

WM-SET-FOCUS:設(shè)置當(dāng)前窗體為焦點(diǎn)窗體,設(shè)置完后還必須向該窗體的父窗體發(fā)送WM-NOTIFY-CHILD-HAS-FOCUS消息,讓其父窗體更新它記載的當(dāng)前焦點(diǎn)子窗體。WM-GET-HAS-FOCUS:獲取當(dāng)前窗體是否為焦點(diǎn)窗體。

WM-SET-ENABLE:設(shè)置窗體為不可用窗體。

WM-GET-ACCEPT-FOCUS:獲取當(dāng)前窗體是否可設(shè)置為焦點(diǎn)窗體。 WM-GET-INSIDE-RECT:返回窗體內(nèi)框矩形。

WM-DefauhProc:窗體默認(rèn)消息處理函數(shù),μC/GUI中提供一些基礎(chǔ)的控件,這些控件有些共通的消息均在此處理,如下:

WM-GETCLIENTRECT:獲取窗體矩形區(qū)域,相對(duì)于矩形自身。

WM-GETORG:獲取窗體矩形左上角坐標(biāo)。

WM-GET-INSIDE-RECT:獲取窗體矩形區(qū)域,相劉屏幕。

WM-GET-CLIENT-WINDOW:獲取窗體客戶區(qū)子窗體句柄。

下面以項(xiàng)目中按下OK按鈕事件為例來(lái)簡(jiǎn)單說(shuō)明消息傳遞機(jī)制(見(jiàn)圖2)。

按下OK按鈕,隨后產(chǎn)生按鈕WM-TOUCH消息。消息LOOP調(diào)用按鈕默認(rèn)的按鈕窗口消息處理函數(shù)一BUTYON-Callback。一OnTouch默認(rèn)處理按鈕按下事件并發(fā)送給父窗體WM-NOTIFY-PARENT消息,這種情況下,消息中還有一個(gè)通知碼WM-NOTIFICATION-REI_EASED。默認(rèn)的對(duì)話框窗體消息處理函數(shù)一FRAMEWIN-Callback收至 WM-NOTIFY-PARENT消息并最終傳送該消息到自己定義的對(duì)話框消息處理函數(shù)。由一FRAMEWIN-Callback傳送的消息首先傳送到對(duì)話框的默認(rèn)窗體消息回調(diào)函數(shù)一CbDialog,然后再經(jīng)它傳送到用戶自定義的窗體回調(diào)函數(shù)當(dāng)中。在自己的對(duì)話框消息處理函數(shù)中處理wM-NOTIFY-PARENT消息,該消息參數(shù)中含有按鈕的ID及操作狀態(tài),如果通知碼是WM-NOTIFICATION-RELELASED,此時(shí)證明一次按下按鈕事件完成。

再來(lái)分析一下對(duì)話框外面的消息接收:GUI-Exec-DialogBox函數(shù)有幾個(gè)參數(shù):第1個(gè)是對(duì)話框的資源定義數(shù)組,這個(gè)數(shù)組定義了對(duì)話框的組成子窗體,其中數(shù)組第1個(gè)成員必須是FrameWin窗體,數(shù)組每1個(gè)成員記載了創(chuàng)建子窗體所用函數(shù)/子窗體Caption/子窗體標(biāo)志:ID/子窗體的位置及寬高/創(chuàng)建窗體時(shí)樣式標(biāo)志/額外傳送的參數(shù)。第2個(gè)參數(shù)是上述的數(shù)組的大小。第3個(gè)參數(shù)是用戶指定的對(duì)話框窗體消息回調(diào)函數(shù)指針。第4個(gè)參數(shù)是對(duì)話框的父窗體,默認(rèn)為0。第

5、第6參數(shù)指定對(duì)話框的左上角屏幕位置。

GUI-ExecDialogBox主要完成如下工作:

a)根據(jù)傳進(jìn)來(lái)的對(duì)話框資源定義數(shù)組創(chuàng)建對(duì)話框及對(duì)話框中的子窗體。

b)根據(jù)傳進(jìn)來(lái)的窗口消息處理函數(shù),記載到一全局變量保存,當(dāng)這個(gè)全局變量中記載的函數(shù)指針為非空時(shí),執(zhí)行消息LOOP,消息LOOP中會(huì)將當(dāng)前KEY消息發(fā)送給當(dāng)前焦點(diǎn)窗體。

c)當(dāng)對(duì)話框關(guān)閉時(shí),記載對(duì)話窗體消息回調(diào)函數(shù)的全局變量會(huì)被清為0,此時(shí)消息LOOP就會(huì)退出,對(duì)話框結(jié)束。

2.2回調(diào)函數(shù)

回調(diào)函數(shù)是由用戶定義的,當(dāng)特定事件發(fā)生時(shí),指示圖形系統(tǒng)調(diào)用特定函數(shù)的函數(shù)。通常當(dāng)窗口的內(nèi)容發(fā)生改變時(shí),它們用來(lái)自動(dòng)重繪窗門。例如,窗口內(nèi)顯示一幅位圖,當(dāng)窗口移動(dòng)時(shí),位圖并不會(huì)自動(dòng)移動(dòng),此時(shí),就需要調(diào)用回調(diào)函數(shù)對(duì)窗口進(jìn)行重繪,即從觀眾的角度來(lái)看,移動(dòng)窗口和窗口內(nèi)容。

μC/GuI提供給窗口和窗口控件的回調(diào)機(jī)制的背后,是一個(gè)事件驅(qū)動(dòng)標(biāo)志。在大多數(shù)的窗口系統(tǒng)中,不僅從用戶程序到圖形系統(tǒng),而且還要能夠從用戶程序到圖形系統(tǒng),并且能夠通過(guò)用戶程序提供的回調(diào)函數(shù),返回到用戶程序。這個(gè)機(jī)制稱為回調(diào)機(jī)制。在μC/GuI中,回調(diào)機(jī)制用來(lái)在窗口管理中控制窗口的重繪操作,這使得窗口管理的有效性成為可能。

使用回調(diào)函數(shù)建立一個(gè)窗口時(shí),必須有一個(gè)回調(diào)函數(shù)。所用的回調(diào)函數(shù)必須有如下原型:void callback(wM-MESSAGE*pMsg)。其中pMsg為指向消息的指針。回調(diào)函數(shù)執(zhí)行的功能依賴于所接收到的消息。以上原型后面一般跟著switch表達(dá)式,表達(dá)式定義不同的case表達(dá)式下不同的信息對(duì)應(yīng)的不同行為,至少要有一個(gè)重繪函數(shù):WM-PAINT()。在工程項(xiàng)目中所有功能都是通過(guò)上述消息機(jī)制以及回調(diào)函數(shù)來(lái)進(jìn)行實(shí)現(xiàn)的。

3結(jié)束語(yǔ)

本文對(duì)μC/GUI的消息機(jī)制、回調(diào)函數(shù)作了簡(jiǎn)單介紹。實(shí)現(xiàn)了鍵盤響應(yīng)的無(wú)紙記錄儀界面,包括按鈕、列表框各種控件,見(jiàn)圖3。

圖3界面包含了無(wú)紙記錄儀中的所有控件,列表框可以實(shí)現(xiàn)上下選擇,編輯框可以實(shí)現(xiàn)輸入,按鈕可響應(yīng)外界消息。通過(guò)鍵盤的左右鍵來(lái)實(shí)現(xiàn)各控件的切換,以便對(duì)某些控件進(jìn)行操作控制。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉