📄 sample.c
字号:
if (INPT_Result > 0x00FF)
{
INPT_Result = 0x00FF;
}
}
}
else
{
if (INPT_MAX_Width == INT8_MAX_NUM)
{
INPT_Result = 0x00FF;
}
else
{
INPT_Result = 0xFFFF;
}
}
INPT_CUR_Width = GetIntLen(INPT_Result);
if (INPT_CUR_Width > INPT_MAX_Width)
{
INPT_CUR_Width = INPT_MAX_Width;
}
SET_STATUS(STATUS_UPDATEVALUE);
}
else if ( Key == BT_DOWN )
{
if (INPT_Result >= V[MenuGui.IconFlag])
{
INPT_Result -= V[MenuGui.IconFlag];
}
else if (INPT_Result > 0)
{
INPT_Result -= 1;
MenuGui.IconFlag = 0;
}
INPT_CUR_Width = GetIntLen(INPT_Result);
if (INPT_CUR_Width > INPT_MAX_Width)
{
INPT_CUR_Width = INPT_MAX_Width;
}
if (MenuGui.IconFlag > INPT_CUR_Width - 1)
{
MenuGui.IconFlag = INPT_CUR_Width - 1;
}
SET_STATUS(STATUS_UPDATEVALUE);
}
else if (( Key == BT_APPLY) || (Key == BT_CANCEL))
{
if ( Key== BT_APPLY)
{
GUI_SetControlValue(MENU_Selected);
MenuID = MENU_Selected;
}
GUI_Pop_Stack();
LCD_HideCursor();
CLR_STATUS(STATUS_CONTROL);
CLR_STATUS(STATUS_UPDATETITLE);
CLR_STATUS(STATUS_UPDATEVALUE);
SET_STATUS(STATUS_EVENT);
CLR_STATUS(STATUS_CONTROL);
}
Key = NO_KEY;
}
if (MENU_Status & STATUS_UPDATEVALUE)
{
BYTE Len;
CLR_STATUS(STATUS_UPDATEVALUE);
Len=IntToStr(Buffer,INPT_Result);
LCD_HideCursor();
LCD_Position(2,1);
LCD_PutStrF(DefaultInputCaption);
if (Len < INPT_CUR_Width)
{
for (i=0; i<INPT_CUR_Width - Len; i++)
{
LCD_PutChar('0');
}
}
else if (Len > INPT_CUR_Width)
{
Len = INPT_CUR_Width;
}
for (i=0; i<Len; i++)
{
LCD_PutChar(Buffer[i]);
}
for (i=0; i<CAPTION_LENGTH - INPT_CUR_Width; i++)
{
LCD_PutChar(' ');
}
LCD_Position(2,6 + INPT_CUR_Width - MenuGui.IconFlag);
LCD_ShowCursor();
}
}
/*******************************************************************************
** 函数名称: GUI_ShowMainMenu **
** 功能描述: 显示主菜单 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ShowMainMenu(void)
{
if (Key != NO_KEY)
{
if (Key == BT_UP)
{
if (MenuGui.IconFlag > 0)
{
MenuGui.IconFlag--;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
else if (MenuGui.ItemIndex > 0)
{
MenuGui.ItemIndex--;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
GUI_SaveControlStatus(0x00,0x10);
}
else if (Key == BT_DOWN)
{
BYTE CalCount = 0;
CalCount = MenuGui.ItemCount - MenuGui.ItemIndex - 1;
if (MenuGui.IconFlag < LCD_ROW_COUNT - 1)
{
if (MenuGui.IconFlag < CalCount)
{
MenuGui.IconFlag++;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
}
else if (CalCount > LCD_ROW_COUNT - 1)
{
MenuGui.ItemIndex++;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
else if (CalCount == LCD_ROW_COUNT - 1)
{
MenuGui.ItemIndex++;
MenuGui.IconFlag = LCD_ROW_COUNT - 2;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
GUI_SaveControlStatus(0x10,0x30);
}
else if ((Key == BT_APPLY) || (Key == BT_RIGHT))
{
MENU_Selected = MenuGui.TopItemID + MenuGui.ItemIndex + MenuGui.IconFlag;
if (MENU_Selected < MENU_COUNT)
{
BYTE Type;
flash BYTE *SubMenuDefine;
SubMenuDefine = SUBMENUDEFINE(MENU_Selected);
Type = SubMenuDefine[SubMenuDefine_Type] & 0x0F;
if (Type == MENU_SUBITEM)
{
GUI_Push_Stack();
MenuGui.TopItemID = SubMenuDefine[SubMenuDefine_FirstItemAddr];
MenuGui.ItemCount = SubMenuDefine[SubMenuDefine_Count];
MenuGui.ShowNum = SubMenuDefine[SubMenuDefine_ShowNum] & FORMAT_SHOW_NUM;
MenuGui.IconFlag = 0;
MenuGui.ItemIndex = 0;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
else
{
MenuID = MENU_Selected;
SET_STATUS(STATUS_UPDATETITLE | STATUS_UPDATEVALUE);
CLR_STATUS(STATUS_MAINMENU);
if (Type == MENU_TEXT)
{
SET_STATUS(STATUS_EVENT);
}
else
{
SET_STATUS(STATUS_CONTROL);
SET_STYLE(Type);
}
}
}
GUI_SaveControlStatus(0xF0,0xF0);
}
else if ((Key == BT_CANCEL) || (Key == BT_LEFT))
{
if (MENU_StackIndex > MENU_STACK_TOP)
{
GUI_Pop_Stack();
MENU_Selected = MenuGui.TopItemID;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
if (Key == BT_LEFT)
{
GUI_SaveControlStatus(0x30,0x70);
}
if (Key == BT_CANCEL)
{
GUI_SaveControlStatus(0x70,0xF0);
}
}
Key = NO_KEY;
}
if (MENU_Status & STATUS_UPDATEMAINMENU)
{
BYTE j = 0;
#if (LCD_SUPPORT_ICON == FALSE)
LCD_WriteCGRAM(ICONROM_MENU_CURRENT, ICON_MENU_CURRENT, 0);
#endif
for (j=0; j< LCD_ROW_COUNT ; j++)
{
LCD_Position(j + 1, 1);
if (MenuGui.ItemIndex + j < MenuGui.ItemCount)
{
if (MENU_Control[0] == 0xF1)
{
GUI_WriteCaption(0, 0xFF);
}
else
{
if (MenuGui.IconFlag == j)
{
#if (LCD_SUPPORT_REVERSE == TRUE)
LCD_ReverseLine(j+1);
#else
LCD_PutChar(ICON_MENU_CURRENT);
#endif
}
else
{
#if (LCD_SUPPORT_REVERSE == FALSE)
LCD_PutChar(' ');
#endif
}
if (MenuGui.ShowNum)
{
LCD_PutChar(GUI_MenuNo(MenuGui.ItemIndex + j + 1));
LCD_PutChar('.');
}
GUI_WriteCaption(MenuGui.TopItemID + MenuGui.ItemIndex + j, FORMAT_SHOW_SPACE);
}
}
else
{
LCD_ClearLine(j + 1);
}
}
CLR_STATUS(STATUS_UPDATEMAINMENU);
}
}
/*******************************************************************************
** 函数名称: GUI_ShowMenu **
** 功能描述: 让菜单的GUI可以显示在LCD上 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ShowMenu(void)
{
SET_STATUS(STATUS_VISIBLE);
SET_STATUS(STATUS_UPDATEMAINMENU);
}
/*******************************************************************************
** 函数名称: GUI_HideMenu **
** 功能描述: 隐藏菜单GUI,显示用户自己的内容 **
** 输入参数: BYTE ClearScreen : 关闭GUI之后,是否清除屏幕 **
** 输出参数: BYTE : 关功成功,返回TRUE,否则返回FALSE **
*******************************************************************************/
BYTE GUI_HideMenu(BYTE ClearScreen)
{
if ((GET_STATUS & STATUS_MAINMENU) || (GET_STATUS & STATUS_EVENT))
{
CLR_STATUS(STATUS_VISIBLE);
if (ClearScreen) LCD_Clear();
return TRUE;
}
else
return FALSE;
}
/*******************************************************************************
** 函数名称: GUI_ProgressMessage **
** 功能描述: 菜单GUI消息分配和事件调用 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ProgressMessage(void)
{
if (GUI_VISIBLE)
{
if (GET_STATUS & STATUS_MAINMENU)
{
GUI_ShowMainMenu();
}
else if (GET_STATUS & STATUS_CONTROL)
{
if (GET_STYLE == MENU_RADIOMENU)
{
GUI_ChooseRadioMenu();
}
else if (GET_STYLE == MENU_INPUT)
{
GUI_GetUserInput();
}
else
{
CLR_STATUS(STATUS_CONTROL);
SET_STATUS(STATUS_UPDATEMAINMENU);
SET_STATUS(STATUS_MAINMENU);
}
}
else if (GET_STATUS & STATUS_EVENT)
{
ExecuteMenu();
MenuID = 0;
CLR_STATUS(STATUS_EVENT);
SET_STATUS(STATUS_UPDATEMAINMENU);
SET_STATUS(STATUS_MAINMENU);
}
}
else
{
if ((Key == BT_MENU)&&(!GUI_VISIBLE))
{
GUI_ShowMenu();
Key = NO_KEY;
}
}
}
/*******************************************************************************
** 函数名称: GUI_Init **
** 功能描述: GUI和菜单初始化 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_Init(void)
{
flash BYTE *SubMenuDefine;
SubMenuDefine = SUBMENUDEFINE(MENU_Selected);
MenuGui.TopItemID = SubMenuDefine[SubMenuDefine_FirstItemAddr];
MenuGui.IconFlag = 0;
MenuGui.ItemIndex = 0;
MenuGui.ItemCount = SubMenuDefine[SubMenuDefine_Count];
MenuGui.ShowNum = SubMenuDefine[SubMenuDefine_ShowNum] & FORMAT_SHOW_NUM;
MENU_Selected = 0;
MENU_StackIndex = MENU_STACK_TOP;
CLR_STATUS(STATUS_VISIBLE);
SET_STATUS(STATUS_MAINMENU);
SET_STATUS(STATUS_UPDATEMAINMENU);
SET_STYLE(MENU_SUBITEM);
}
#endif
/*******************************************************************************
** END OF FILE **
*******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -