📄 sample_main.i
字号:
flash unsigned char *Caption;
flash unsigned char *SubMenuDefine;
unsigned char Result=0;
unsigned char i = 0;
SubMenuDefine = &MenuData[Menu[MenuItemID]];
i = SubMenuDefine[0x00] >> 4;
Caption = SubMenuDefine + i;
i = Caption[0];
if (i==0)
{
MenuItemID = Caption[1];
Caption = &MenuData[Menu[MenuItemID]];
i = Caption[0] >> 4;
Caption+=i;
i = Caption[0];
}
Result = i;
Caption++;
if ((SubMenuDefine[0x00] & 0x0F) == 0x05)
{
Format |= SubMenuDefine[0x03] & 0x02;
}
else
{
Format &= ~0x02;
}
LCD_HideCursor();
if (Format & 0x02)
{
unsigned char Buffer[5];
unsigned char Len=0;
GUI_GetControlValue(MenuItemID);
Len=IntToStr(Buffer,MENU_Result.Word);
while (i--)
{
if ((Caption[0]=='=') && (Caption[1]=='#') && (Len>0))
{
unsigned char j;
for (j=0; j<Len; j++)
{
LCD_PutChar(Buffer[j]);
}
Result+=Len;
Result-=2;
Caption+=2;
if (i) {i--;}
if (i==0) {break;}
}
else
{
LCD_PutChar(*Caption++);
}
}
}
else if ((MenuItemID == 0)&&(Format == ~0x02))
{
while (i--)
{
LCD_PutChar(~(*Caption++));
}
}
else
{
while (i--)
{
LCD_PutChar(*Caption++);
}
}
if ((Format & 0x80) && (Result < 16))
{
while (Result < 16)
{
LCD_PutChar(0x20);
Result++;
}
}
return Result;
}
/*******************************************************************************
** 函数名称: GUI_MenuNo **
** 功能描述: 把菜单序号转换成字符 **
** 输入参数: BYTE No:序号 **
** 输出参数: 无 **
*******************************************************************************/
unsigned char GUI_MenuNo(unsigned char No)
{
if ((No >= 0) && (No <= 9))
{
return No + '0';
}
else if ((No >= 10) && (No <= 36))
{
return No - 10 + 'A';
}
else
{
return '?';
}
}
/*******************************************************************************
** 函数名称: GUI_ChooseRadioMenu **
** 功能描述: 选择单选菜单,单选菜单有对应的控制值 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ChooseRadioMenu(void)
{
if (MENU_Status & 0x20)
{
flash unsigned char *SubMenuDefine;
unsigned char i;
SubMenuDefine = &MenuData[Menu[MENU_Selected]];
GUI_Push_Stack();
LCD_WriteCGRAM(Icon6x8 + 0x02 * 0x05, 0x01, 0);
LCD_WriteCGRAM(Icon6x8 + 0x03 * 0x05, 0x02, 0);
LCD_WriteCGRAM(Icon6x8 + 0x04 * 0x05, 0x03, 0);
LCD_Position(1,1);
GUI_WriteCaption(MENU_Selected, 0x80);
for (i=3; i<=2; i++)
{
LCD_ClearLine(i);
}
MenuGui.ItemCount = SubMenuDefine[0x02];
MenuGui.TopItemID = SubMenuDefine[0x01];
GUI_GetControlValue(MENU_Selected);
MenuGui.ItemIndex = MENU_Result.Byte;
if (MenuGui.ItemIndex > 0)
{
MenuGui.ItemIndex --;
}
if (MenuGui.ItemIndex > MenuGui.ItemCount - 1)
{
MenuGui.ItemIndex = MenuGui.ItemCount - 1;
}
MENU_Status |= 0x40;
MENU_Status &= ~0x20;
}
if ((Key != 0x00)||(MENU_Status & 0x40))
{
MENU_Status &= ~0x40;
LCD_Position(2,1);
if (MenuGui.ItemIndex == 0)
{
LCD_PutChar(0x03);
}
else if (MenuGui.ItemIndex == MenuGui.ItemCount - 1)
{
LCD_PutChar(0x01);
}
else
{
LCD_PutChar(0x02);
}
LCD_PutChar('=');
GUI_WriteCaption(MenuGui.TopItemID + MenuGui.ItemIndex, 0x80);
if (Key == 0x01)
{
if (MenuGui.ItemIndex > 0)
{
MenuGui.ItemIndex --;
MENU_Status |= 0x40;
}
}
else if (Key == 0x02)
{
if (MenuGui.ItemIndex < MenuGui.ItemCount - 1)
{
MenuGui.ItemIndex ++;
MENU_Status |= 0x40;
}
}
else if ((Key == 0x10)||(Key == 0x04))
{
MENU_Result.Byte = MenuGui.ItemIndex + 1;
GUI_SetControlValue(MENU_Selected);
MenuID = MENU_Selected;
GUI_Pop_Stack();
MENU_Status &= ~0x20;
MENU_Status &= ~0x40;
MENU_Status |= 0x08;
MENU_Status &= ~0x02;
}
Key = 0x00;
}
}
/*******************************************************************************
** 函数名称: GUI_GetUserInput **
** 功能描述: 取得用户的输入值,用户输入的数值会保存在相应的控制项 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_GetUserInput(void)
{
unsigned int V[5]={1,10,100,1000,10000};
unsigned char Buffer[5];
unsigned char i;
if (MENU_Status & 0x20)
{
GUI_Push_Stack();
i = GUI_GetControlValue(MENU_Selected);
if (i == 1)
{
MenuGui.ItemCount = 3;
}
else
{
MenuGui.ItemCount = 5;
}
LCD_Position(1,1);
GUI_WriteCaption(MENU_Selected, 0x80);
for (i=3; i<=2; i++)
{
LCD_ClearLine(i);
}
/*
LCD_Position(2,1);
for (i=0;i<6;i++)
{
LCD_PutChar(DefaultInputCaption[i]);
}
*/
MenuGui.ItemIndex = GetIntLen(MENU_Result.Word);
if (MenuGui.ItemIndex > MenuGui.ItemCount)
{
MenuGui.ItemIndex = MenuGui.ItemCount;
}
MenuGui.IconFlag = 0;
MENU_Status |= 0x40;
MENU_Status &= ~0x20;
}
if (Key!=0x00)
{
if ( Key == 0x04 )
{
if (MenuGui.IconFlag < MenuGui.ItemIndex - 1)
{
MenuGui.IconFlag++;
MENU_Status |= 0x40;
}
else
{
if (MenuGui.ItemIndex < MenuGui.ItemCount)
{
MenuGui.ItemIndex++;
MenuGui.IconFlag++;
MENU_Status |= 0x40;
}
}
}
else if ( Key == 0x08 )
{
if (MenuGui.IconFlag > 0)
{
MenuGui.IconFlag --;
MENU_Status |= 0x40;
}
}
else if ( Key == 0x01 )
{
if (MENU_Result.Word + V[MenuGui.IconFlag] > MENU_Result.Word)
{
MENU_Result.Word += V[MenuGui.IconFlag];
if (MenuGui.ItemCount == 3)
{
if (MENU_Result.Word > 0x00FF)
{
MENU_Result.Word = 0x00FF;
}
}
}
else
{
if (MenuGui.ItemCount == 3)
{
MENU_Result.Word = 0x00FF;
}
else
{
MENU_Result.Word = 0xFFFF;
}
}
MenuGui.ItemIndex = GetIntLen(MENU_Result.Word);
if (MenuGui.ItemIndex > MenuGui.ItemCount)
{
MenuGui.ItemIndex = MenuGui.ItemCount;
}
MENU_Status |= 0x40;
}
else if ( Key == 0x02 )
{
if (MENU_Result.Word >= V[MenuGui.IconFlag])
{
MENU_Result.Word -= V[MenuGui.IconFlag];
}
else if (MENU_Result.Word > 0)
{
MENU_Result.Word -= 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -