ucGUI與emWin是眾多嵌入式工程師編寫顯示界面的首選,但是隨著版本的升級(jí),對(duì)于商用GUI提出了專利費(fèi)的要求,這也是國(guó)內(nèi)小型企業(yè)所不愿意接受的。于是,編寫了一份屬于自己的獨(dú)特GUI界面代碼。作品采用stm32作為主MCU,驅(qū)動(dòng)LCM12864進(jìn)行顯示。我們的任務(wù)是寫自己的GUI,因此對(duì)其他外設(shè)資源要求不高。另能力僅屬于中神級(jí)別,尚未爐煉至大神級(jí)別,因此我們先用單色LCM12864練手,此貼至此始終開源,供大家一起學(xué)習(xí)交流,把xlGUI豐富起來。
系統(tǒng)設(shè)計(jì)框圖:
講解:
1.xlGUI采用WM_Manage窗口管理器統(tǒng)一管理UI消息事件,用戶交互消息(數(shù)據(jù)信息、按鍵事件等等)均通過WM_SendMessage發(fā)送至控件,由控件自行解析事件類型并響應(yīng)消息;
2.整個(gè)工程中GUI_GDI是公共繪圖接口,其作用是方便控件或者用戶對(duì)顯示屏進(jìn)行繪制顯示;
3.GUI_GDI統(tǒng)一調(diào)用GUI_Drive函數(shù)接口進(jìn)行操作顯存,本例程中,我們?cè)贕UI_GDI里面開辟了m_MemDev顯示內(nèi)存池,該內(nèi)存池與顯示屏顯示像素一一對(duì)應(yīng),GUI_GDI所有函數(shù)默認(rèn)直接操作顯存池像素點(diǎn)。 顯存刷新操作則統(tǒng)一由GUIDRV_DEVICE_API函數(shù)完成,用戶不同類型的顯示屏均可以通過編寫GUI_Driver函數(shù)達(dá)到驅(qū)動(dòng)顯示目的。
制作成功實(shí)物圖片:
說明:
作品全部使用C語言進(jìn)行編寫,通俗易懂,熟悉GDI界面編程的更加不會(huì)陌生。作品旨在提供小型GUI界面編程入門,并盡可能提供擴(kuò)展接口,備注詳細(xì),方便各路嵌入式大神進(jìn)行移植擴(kuò)展維護(hù),希望這版本GUI最終演化成能夠替代ucGUI/emWin。
該項(xiàng)目設(shè)計(jì)來源于立創(chuàng)社區(qū),設(shè)計(jì)資料僅供學(xué)習(xí)參考。