前阵子收到一个AutoChips的开发板,琢磨着练练手。刚好手头上有个128X64的单色LCD,想试试移植一个GUI。试过ucgui,littleVGL,都是大**打蚊子,移植后,一言难尽,不好使。查查百度,发现有个simplegui的开源项目,便拿来试试。
下面是移植过程:
1.准备一个可用的工程,必须包含LCD驱动代码和按键驱动代码。
2.源码在 https://gitee.com/Polarix/simplegui 。下载后复制GUI,HMI,DemoProc三个文件夹到工程目录下。添加进工程,如下图。
3.修改SGUI_Config.h文件,把里面的内容全部注释掉。4.修改DemoProc.c文件。
a. HMI_ENGINE_RESULT InitializeHMIEngineObj(void)函数添加LCD驱动函数。
- /* Initialize display size. */
- g_stDeviceInterface.stSize.iWidth = 128;
- g_stDeviceInterface.stSize.iHeight = 64;
- /* Initialize interface object. */
- g_stDeviceInterface.fnSetPixel = LCD_DrawPoint;
- g_stDeviceInterface.fnGetPixel = LCD_ReadPoint;
- g_stDeviceInterface.fnClear = LCD_Clear;
- g_stDeviceInterface.fnSyncBuffer = LCD_Refresh_Gram ;
void KeyPressEventProc(void)里添加按键代码,这里根据需求修改。
- if(tkey1.val)
- {
- tkey1.val=0;
- stEvent.Data.uiKeyValue = KEY_VALUE_DOWN;
- }
- else
- if(tkey6.val)
- {
- tkey6.val=0;
- stEvent.Data.uiKeyValue = KEY_VALUE_UP;
- }
- else
- if(tkey7.val)
- {
- tkey7.val=0;
- stEvent.Data.uiKeyValue = KEY_VALUE_ENTER;
- }else
- if(tkey345.val)
- {
- tkey345.val=0;
- stEvent.Data.uiKeyValue = KEY_VALUE_ESC;
- }
- bool UserEventTriggered(void)
- {
- /*----------------------------------*/
- /* Process */
- /*----------------------------------*/
- #ifdef _SIMPLE_GUI_IN_VIRTUAL_SDK_
- return CheckEventFlag(ENV_FLAG_IDX_SDK_KEY_EVENT);
- #else
- //#error Add user event trigger process here.
- return (tkey1.val+tkey6.val+tkey7.val+tkey345.val)>0 ;
- #endif
- }
3.移植OK。效果如下。
4.这个GUI有人机交互的代码,不过感觉限制的使用范围吧,实际项目上,还得自己折腾一番才行。
|