前阵子收到一个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有人机交互的代码,不过感觉限制的使用范围吧,实际项目上,还得自己折腾一番才行。
|