freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于minigui的嵌入式gui開發(fā)(編輯修改稿)

2024-12-23 21:20 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 版的 Linux系統(tǒng)中普遍采用的 GUI是XWindows系統(tǒng),但顯然它相對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)是過(guò)于龐大了,嵌入式系統(tǒng)要求西北大學(xué)學(xué)士學(xué)位論文 11 的是一個(gè)輕量級(jí)的性能可靠和可裁減的 GUI,因此需要重新開發(fā)適合嵌人式系統(tǒng)的 GUI。目前國(guó)內(nèi)外已經(jīng)推出了很多基于 Linux的 GUI產(chǎn)品,現(xiàn)在比較流行的一些 GUI產(chǎn)品包括 MiniGUI、 MicmWindov,OpenGUI、 QT/ Embedded等,其中 QT/ Embedded屬于商業(yè)化的產(chǎn)品,其他屬于開源軟件。 5 嵌入式界面開發(fā)框架 和 Minigui 版本描述 本嵌入式界面的開發(fā)選擇開放源碼的 Linux 操作系統(tǒng)作為平臺(tái),采用 MiniGUI 作為圖形用戶界面支持系統(tǒng)。其相應(yīng)的版本號(hào)如下: Linux 操作系統(tǒng)的版本為 RedHat 。 GNU C編譯器版本為 。 圖形用戶界面支持系統(tǒng) MiniGUI 的函數(shù)庫(kù)源代碼 libminigui 版本為 。 MiniGUI 所使用的資源文件 miniguires 版本為 的上述文件代碼可在網(wǎng)站 上下載到。 由于本次工作只做 LMTGUI 的部分開發(fā),即不涉及 LMTGUI 在相應(yīng)硬件平臺(tái)上的移植和測(cè)試,所以在此不介紹開發(fā)相應(yīng)系統(tǒng)的硬件平臺(tái) 。 在 PC 機(jī)上的開發(fā) 由于在嵌入式系統(tǒng)環(huán)境下調(diào)試 MiniGUI程序比較復(fù)雜,為了縮短開發(fā)周期,可以先將程序在 PC機(jī)上調(diào)試,成功后加載進(jìn)嵌入式 Linux的文件系統(tǒng)即可。 由于不涉及 LMTGUI的移植,在此將不會(huì)介紹移植過(guò)程。 第一:設(shè)置 MiniGUI運(yùn)行環(huán)境。 為了運(yùn)行 MiniGuI,需要激活系統(tǒng)的 FrameBuffer設(shè)備驅(qū)動(dòng)程序。 由于安裝的 Linux系統(tǒng)是 RedHat ,且在安裝 Red Hat 時(shí)使用了 GRUB作為引導(dǎo)裝載器,其激活 FrameBuffer過(guò)程如下:首先需要修改/boot/grub/,在第一個(gè)出現(xiàn) Red Hat Linux()的地方,把它修改為 Red Hat Linux(, FrameBuffer) 。并在 kernel打頭的一行添加vga=。 第二:建立 MiniGUI運(yùn)行環(huán)境。要開發(fā) MiniGUI程序,首 先要建立其開發(fā)環(huán)境。 MiniGuI圖形系統(tǒng)由函數(shù)庫(kù)、資源及演示程序組成。 MiniGUI的函數(shù)庫(kù)部分由libminigui, libmgext以及 libvcongui三個(gè)函數(shù)庫(kù)組成。 MiniGUI的資源部分包括西北大學(xué)學(xué)士學(xué)位論文 12 運(yùn)行 MiniGUI應(yīng)用程序需要的基本字體、圖標(biāo)、位圖以及鼠標(biāo)光標(biāo)等。安裝上述源文件的過(guò)程如下所述。 首先安裝 MiniGUI的資源文件。第一步, 使用 tar命令解開,使用如下命令: $tar zxf 。 該命令將建立 。 第二步,用 cd命令改變到新建的目錄中,然后以超級(jí)用戶的身份運(yùn)行 make install命令:make install。 其次配置和編譯 ,使用 tar解開 的目錄。該命令將建立 。第二步,改變到這一新目錄,然后運(yùn)行 ./configure:,命令如下 $./,運(yùn)行下面命令編譯并安裝MiniGUI: $make。 第四步,修改 /etc/,將 /usr/local/lib目錄添加到該文件的最后一行。 第五步,安裝 MiniGUI之后,運(yùn)行下面的命令更新共享函數(shù)庫(kù)系統(tǒng)的緩存: ldconfig。 第三:圖形用戶界面的開發(fā)。圖形用戶界面的開發(fā)流程圖如圖 51所示。 (1)頭文件 程序?qū)崿F(xiàn)時(shí),開始是包含的頭文件。在本次開發(fā)的程序中包含的 MiniGUI圖形包的頭文件有 : MiniGUI常用的宏及數(shù)據(jù)類型的定義; ; 、數(shù)據(jù)類型 、數(shù)據(jù)結(jié)構(gòu)以及函數(shù)接口聲明; MiniGUI繪圖函數(shù)的接 121定義; libminigui中所有內(nèi)建控件的接口定義; ( 2)程序入口點(diǎn) MiniGUI的程序人口點(diǎn)是 MiniGUIMain函數(shù),系統(tǒng)初始化后就會(huì)自動(dòng)找到該函數(shù)。 再通過(guò) 調(diào)用 InitDialogBox (HWND_DESKTOP)函數(shù)初始化對(duì)話框。 本程序使用對(duì)話框模板來(lái)創(chuàng)建對(duì)話框和對(duì)話框中的控件。在 MiniGUI中,對(duì)話框是一類特殊的主窗口,這種主窗 口只關(guān)注與用戶的交互 —— 向用戶提供輸出信息,但更多的是 用于用戶輸入。對(duì)話框可以理解為子類化后的主窗口類。在 MiniGUI 中,用兩個(gè)結(jié)構(gòu) CTRLDATA 和西北大學(xué)學(xué)士學(xué)位論文 13 DLGTEMPLATE 來(lái)表示對(duì)話框模板( minigui/) 【 1】 . CTRLDATA 用來(lái)定義控件, DLGTEMPLATE 用來(lái)定義對(duì)話框本身。 圖 51 圖形用戶界面開發(fā)流程圖 ( 3)對(duì)話框回調(diào)函數(shù) 在定義完對(duì)話框模板數(shù)據(jù)之后,需要定義對(duì)話框的回調(diào)函數(shù),并調(diào)用DialogBoxIndirecParam函數(shù)建立對(duì)話框。在程序中根據(jù)需要一 共建立了 14個(gè)控件 。 包括 6個(gè)靜態(tài)框, 5個(gè)按鈕, 1個(gè)進(jìn)度條, 1個(gè)旋鈕數(shù)字框和 1個(gè)定時(shí)器 。對(duì)話框回調(diào)函數(shù)是一類特殊的主窗口回調(diào)函數(shù)。在程序中它需要處理如下消息: MSG_INITDIALOG消息 :該消息是在 MiniGUI根據(jù)對(duì)話框模板建立對(duì)話框以及控件之后,發(fā)送到對(duì)話框回調(diào)函數(shù)的。該消息的 lParam參數(shù)包含了由DialogBoxIndirectParam函數(shù)的第四個(gè)參數(shù)傳遞到對(duì)話框回調(diào)函數(shù)的值。 MSG_TIMER消息: 創(chuàng)建定時(shí)器時(shí)指定的窗口會(huì)收到 MSG_TIMER消息,并傳遞到期程序入口點(diǎn) MiniGUIMain 調(diào)用 InitDialogBox (HWND_DESKTOP)函數(shù) 定義對(duì)話框各控件 建立對(duì)話框及控件 定義對(duì)話框 定義對(duì)話框回調(diào)函數(shù) 對(duì)話框與控件, 控件與控件間消息傳遞 程序退出 西北大學(xué)學(xué)士學(xué)位論文 14 的定時(shí)器標(biāo)號(hào)。定時(shí)器消息是優(yōu)先級(jí)最低的消息類型,只有消息隊(duì)列中不存在其他類型的消息時(shí),系統(tǒng)才會(huì)去檢查是否有定時(shí)器的到期。在程序中用定時(shí)器來(lái) 確定加熱的時(shí)間長(zhǎng)短,并在進(jìn)度條中顯示出來(lái)。 MSG_COMMAND消息 : 當(dāng)命令按鈕被擊中后,從該按鈕發(fā)送一個(gè)消息到窗口或其對(duì)話框。其中按鈕標(biāo)識(shí)符 id= LOWORD(wParam),通知消息的代碼為: code = HIWORD(wParam)。在程序中因?yàn)橛卸鄠€(gè)按鈕控件,所以要多次用到該消息。 ( 4) 程序的退出 在程序中,當(dāng)單擊 EXIT按鈕時(shí),會(huì)按順序調(diào)用函數(shù) DestroyAllControls (hDlg)和函數(shù) EndDialog (hDlg, wParam)來(lái)結(jié)束程序。 DestroyAllControls銷毀對(duì)話框中的所有子控件, EndDialog用來(lái)銷毀對(duì)話框本身。 6LMAGUI描述 LMTGUI 作為一種激光醫(yī)療設(shè)備上的嵌入式界面,非常小,性能好,效率比較高,占用的資源少。它一共分為 6 個(gè)子界面,如圖 61所示。 在進(jìn)入系統(tǒng)界面的正中間有一行提示語(yǔ)言:“ Wele to system!” 在其左下方有“ NEXT” 按鈕 ,通過(guò)單 擊此按鈕可進(jìn)入預(yù)熱時(shí)間設(shè)置界面?!?NEXT” 按鈕通過(guò)隱藏進(jìn)入系統(tǒng)界面中的子控件,顯示下一界面的子控件來(lái)完成程序賦予它的功能。其相應(yīng)的源代碼如下所示。 case IDC_COM1: /*Show IDC_STATIC2,IDC_DATA,IDC_STATIC3。 hide IDC_STATIC1,IDC_COM1.*/ SendDlgItemMessage(hDlg, IDC_DATA, CB_SETSPINRANGE, 1, 20)。 /*SET THE RANGE 120 OF IDC_DATA*/ SendDlgItemMessage(hDlg, IDC_DATA, CB_SETSPINVALUE, 5, 0)。 hwnd1=GetDlgItem (hDlg, IDC_STATIC1)。 hwnd2=GetDlgItem (hDlg, IDC_COM1)。 hwnd3=GetDlgItem (hDlg, IDC_STATIC2)。 hwnd4=GetDlgItem (hDlg, IDC_COM2)。 hwnd5=GetDlgItem (hDlg, IDC_DATA)。 hwnd6=GetDlgItem (hDlg, IDC_STATIC3)。 if (hwnd1amp。amp。hwnd2amp。amp。hwnd3amp。amp。hwnd4amp。amp。hwnd5amp。amp。hwnd6) 西北大學(xué)學(xué)士學(xué)位論文 15 {DestroyWindow (hwnd1)。 /*ShowWindow(hwnd1,SW_HIDE)。*/ DestroyWindow (hwnd2)。 /*HWND GUIAPI GetDlgItem (HWND hDlg, int nIDDlgItem)*/ ShowWindow(hwnd3,SW_SHOW)。 ShowWindow(hwnd4,SW_SHOW)。 ShowWindow(hwnd5,SW_SHOW)。 ShowWindow(hwnd6,SW_SHOW)。 } else return 0。 break。 圖 61 LMAGUI 系統(tǒng)界面 進(jìn)入系統(tǒng)的界面圖如圖 62所示: 預(yù)熱時(shí)間設(shè)置界面 預(yù)熱過(guò)程等待界面 退出系統(tǒng)界面 進(jìn)入系 統(tǒng)界面 正常工作界面 工作暫停界面 西北大學(xué)學(xué)士學(xué)位論文 16 圖 63 預(yù)熱時(shí)間設(shè)置界面 圖 62 系統(tǒng)進(jìn)入界面 在第 二 個(gè)預(yù)熱時(shí)間設(shè)置界面 (如圖 63) 中一共有 4個(gè)控件,它們分別是預(yù)熱時(shí)間設(shè)置提示語(yǔ)言,預(yù)熱時(shí)間設(shè)置框,確定按鈕以及退出按鈕。提示語(yǔ)言代碼和按鈕的代碼基本與前面的相同,下面著重列出預(yù)熱時(shí)間設(shè)置框 接受用戶輸入的時(shí)間 的代碼: (在用戶單擊確定按鈕時(shí),處理預(yù)熱時(shí)間設(shè)置框接受到的數(shù)據(jù),并設(shè)置好定時(shí)器) min = SendDlgItemMessage(hDlg, IDC_DATA, CB_GETSPINVALUE, 0, 0)。 /*獲得用戶所設(shè)置的預(yù)熱時(shí)間 ,單位為分鐘 */ SetTimer(hDlg,IDC_TIMER,500)。 /*給對(duì)話框發(fā)一次定時(shí)消息 */ hOldCursor = SetDefaultCursor (GetSystemCursor (IDC_WAIT))。 /*設(shè)置鼠標(biāo)狀態(tài)為忙 */ 第三個(gè)界面為預(yù)熱過(guò)程等待界面,在等待過(guò)程中,選用進(jìn)度條作為 直觀的已等待時(shí)間顯示,讓用戶的等待不至于沒(méi)有期望,減少用戶對(duì)系統(tǒng)的焦慮。進(jìn)度條控件的顯示參數(shù)設(shè)置如下: { progressbar, WS_CHILD|PBS_NOTIFY, 10, 40, 380, 20, IDC_PROGRESS, NULL, 西北大學(xué)學(xué)士學(xué)位論文 17 0 }, 其相應(yīng)的操作行為代碼如下: SendMessage(hwnd1,PBM_SETPOS,0, 0)。 /*hwnd1為 進(jìn)度條的操作句柄,該函數(shù)設(shè)置進(jìn)度條的起始位置為 0,進(jìn)度方向?yàn)榍斑M(jìn)方向 */ SendDlgItemMessage(hDlg, IDC_PROGRESS, PBM_DELTAPOS, 5, 0)。 /*設(shè)置進(jìn)度條的進(jìn)行過(guò)程進(jìn)度 ,定時(shí)器每發(fā)送一次定時(shí)消息,進(jìn)度加 5*/ SendDlgItemMessage(hDlg, IDC_PROGRESS, PBM_SETRANGE,1, min*60)。 /*,設(shè)置進(jìn)度條的進(jìn)度范圍,從 1到 min*60, min為用戶設(shè)置的時(shí)間 */ 當(dāng)用戶設(shè)置的時(shí)間到達(dá)時(shí),即進(jìn)度條到達(dá)最大值時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)入正常工作狀態(tài)界面。 正常工作界面主要是為了表明系統(tǒng)正在進(jìn)行工作,并且工作正常。若想停止系統(tǒng)工作,可單擊此界面下的“ STOP”按鈕,則 系統(tǒng)會(huì)進(jìn)入工作暫停界面。 通過(guò)單擊“ EXIT”按鈕,可進(jìn)入最后一個(gè)界面,即退出系統(tǒng)界面,在該界面有“ Thanks using the system!”作為系統(tǒng)退出界面的提示語(yǔ)言。在退出界面時(shí)會(huì)做一些善 后工作,先處理一些系統(tǒng)的信號(hào),并銷毀所有子控件和對(duì)話框 , 讓系統(tǒng)穩(wěn)定退出。 7 結(jié)論 在開發(fā)應(yīng)用于激光醫(yī)療設(shè)備的嵌入式系統(tǒng)界面 LMAGUI中,首先熟悉了 Linux操作系統(tǒng),它是一種可配置的,穩(wěn)定性好,源碼開放的系統(tǒng),非常適合于嵌入式系統(tǒng)的開發(fā)。用 C 語(yǔ)言寫成的 MiniGUI 采取的是事件加消息的驅(qū)動(dòng)機(jī)制,非常接近于 面向?qū)ο蟮木幊陶Z(yǔ)言。 由于 它本身小巧的特點(diǎn),常用于中小型系統(tǒng)的嵌入式界面開發(fā)。 在開發(fā)過(guò)程中不但熟悉了這些軟件,還掌握了開發(fā)嵌入式界面的基本流程。 激光醫(yī)療設(shè)備的操作比較簡(jiǎn)單,這使得 LMAGUI 的界面也相對(duì)簡(jiǎn)潔。在開發(fā)過(guò)程中,主要用模板對(duì)話框來(lái)建立系統(tǒng)界面的,通過(guò)控件之間 以及控件與對(duì)話框之間 的消息
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1