lkdGui是一款為單色顯示屏制作的圖形化界面,lkdGui主要定位于工業(yè)控制領(lǐng)域,用于簡(jiǎn)單漂亮的圖形界面設(shè)計(jì)。它的源代碼全部使用c語(yǔ)言編寫(xiě),符合c99標(biāo)準(zhǔn)。它包含了常用的畫(huà)圖函數(shù)如畫(huà)點(diǎn)、畫(huà)線、畫(huà)矩形、文字顯示、按鈕控件、進(jìn)度條控件。它使用`窗口`進(jìn)行統(tǒng)一管理和調(diào)度,使得各個(gè)應(yīng)用顯示模塊之間低耦合,方便應(yīng)用程序的開(kāi)發(fā)。
lkdGui源碼介紹
1.lkdGui_source文件夾:它包含了lkdGui的所有源碼
A.include文件夾:它包含了Gui所有的.h文件。移植時(shí)應(yīng)將此路徑加入工程項(xiàng)目。
a.lkdGui.h:此文件里包含所有的Gui函數(shù)接口。用戶使用Gui函數(shù)時(shí)應(yīng)該包含此頭文件。
b.lkdGuiConfig.h:此文件用來(lái)配置和裁剪Gui.
c.lkdGuiTypedef.h:此文件定義了Gui相關(guān)的數(shù)據(jù)結(jié)構(gòu),使用者不必看它。
B.port文件夾:它里邊包含的是移植相關(guān)的文件。
a.fontDriver文件夾:它包含常用的字模庫(kù)、字庫(kù)芯片驅(qū)動(dòng)等。使用者可以在這里面加入字體相關(guān)的驅(qū)動(dòng)。
b.lcdDriverPort文件夾:它包含常用的液晶驅(qū)動(dòng)。使用者可以在這里面加入液晶相關(guān)的驅(qū)動(dòng)。
c.lcdDriverPort.c:Gui的液晶驅(qū)動(dòng)移植接口。用戶應(yīng)該填充里面的相關(guān)函數(shù)。
d.userFontPort.c:Gui的字體驅(qū)動(dòng)移植接口。用戶應(yīng)該填充里面的相關(guān)函數(shù)。
e.userAppPort.c:這個(gè)輸入應(yīng)用層,里面包含了初始化、窗口管理等函數(shù)。永和可以直接在這里面寫(xiě)應(yīng)用。
C.source文件夾:Gui繪圖、窗口管理等相關(guān)函數(shù)實(shí)現(xiàn)源碼。
圖片來(lái)源:公眾號(hào)嵌入式的日常
lkdGui移植
上節(jié)的源碼介紹中已經(jīng)提到了移植相關(guān)的工作在port文件夾中。分為字體移植接口和液晶移植接口。1.字體移植接口:包含fontDriver文件夾和userFontPort.c。移植流程如下:
A.用戶先看fontDriver文件夾下有沒(méi)有自己要用的字體庫(kù)或字庫(kù)芯片驅(qū)動(dòng)。如果沒(méi)有則需要添加。
B.然后修改userFontPort.c。填充此文件中的相關(guān)函數(shù)。
a.GetDfontData():此函數(shù)用于獲取漢字字模。字體庫(kù)中應(yīng)該包含獲取字模的函數(shù).用此函數(shù)調(diào)用即可。
b.GetSfontData():此函數(shù)用于獲取ASII碼字模。使用如GetDfontData()。
c.用lkdFont結(jié)構(gòu)體對(duì)象聲明自己的字體->初始化->用GuiFontSet()設(shè)置為系統(tǒng)默認(rèn)字體。
2.液晶移植接口:包含lcdDriverPort文件夾和lcdDriverPort.c。移植流程如下:
A.用戶先看lcdDriverPort文件夾下有沒(méi)有自己要用的液晶驅(qū)動(dòng)。如果沒(méi)有則需要添加。
B.然后修改lcdDriverPort.c。填充此文件中的相關(guān)函數(shù)。(根據(jù)需求可以只填部分函數(shù))。下面是必須要填充的。
a.GuiUpdateDisplayAll():此函數(shù)用于將緩存的數(shù)據(jù)刷新到液晶。
b.GuiDrawPoint():畫(huà)點(diǎn)函數(shù)。在液晶固定位置畫(huà)點(diǎn)。3.修改lkdGuiConfig.h中液晶大小相關(guān)宏GUI_LCM_XMAX,GUI_LCM_YMAX.
4.用戶使用接口:用戶可使用的接口函數(shù)都包含在lkdGui.h中。userAppPort.c是用戶使用的模板。
lkdGui窗口介紹
lkdGui使用窗口作為管理、調(diào)度單元。用戶所有的繪圖都應(yīng)該在具體的某個(gè)窗口里邊。
1、lkdGuiConfig.h中的GUIWINMANAGE_NUM用于修改窗口最大嵌套數(shù)量。
2、GuiWinInit()系統(tǒng)上電時(shí)應(yīng)該使用它初始化窗口相關(guān)資源。
3、GuiWinDisplay()是窗口調(diào)度函數(shù),需要程序一直能執(zhí)行到。
4、lkdWin是窗口的結(jié)構(gòu)體。用戶使用它創(chuàng)建任意多個(gè)窗口實(shí)體對(duì)象。lkdWin->WindowFunction()是用戶在此窗口里畫(huà)圖等的接口。
5、GuiWinAdd()函數(shù)用于將lkdWin結(jié)構(gòu)的窗口實(shí)體對(duì)象加入到窗口調(diào)度棧中。
6、GuiWinDeleteTop()函數(shù)用于將頂部的窗口實(shí)體對(duì)象從窗口調(diào)度棧中移除。
7、GuiGetTopWin()函數(shù)可以獲取窗口調(diào)度棧中頂部的窗口(當(dāng)前顯示的窗口)。
lkdGui菜單介紹
菜單是lkdGui里一個(gè)有特色的控件,而且在工業(yè)控制中經(jīng)常使用。具體使用請(qǐng)參看例程。
lkdGui字體介紹
lkdGui可以添加很多字體庫(kù),在使用過(guò)程中使用GuiFontSet()函數(shù)來(lái)切換。使用GetCurrentFont()函數(shù)可以獲取當(dāng)前的字體指針;
圖片來(lái)源:公眾號(hào)嵌入式的日常
其他控件和繪圖函數(shù)
見(jiàn)lkdGui.h。里面有詳細(xì)的使用說(shuō)明。
如何在RT-Thread上使用lkdGui
聽(tīng)取了使用者的意見(jiàn)后,lkdGui在第一版的基礎(chǔ)上對(duì)源碼程序進(jìn)行了整理,更新到版本V0.0.1.同時(shí),為了方便使用,將lkdGui加入到了RT-Thread的軟件包中。使用者只需在RT-Thread的管理工具env中選中l(wèi)kdGui即可(關(guān)于RT-Thread的使用請(qǐng)參看RT-Thread官網(wǎng))。下圖是lkdGui在menuconfig中的位置:
-
顯示屏
+關(guān)注
關(guān)注
28文章
4493瀏覽量
74409 -
工業(yè)控制
+關(guān)注
關(guān)注
38文章
1458瀏覽量
85884 -
軟件包
+關(guān)注
關(guān)注
0文章
104瀏覽量
11611
原文標(biāo)題:?【使用指南】lkdGui軟件包——專為工業(yè)控制領(lǐng)域而生
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論