📄 uifunction.c
字号:
#include "UItype.h"
#include "led.h"
#include "Keyboard_drv.h"
#define TopMenu_Initial( symbol_1,symbol_2,MenuName,datatemp,nextnode,bit,num) do\
{\
if( symbol_1 == 0 )\
{\
(&MenuName) -> symbolData[0] = LedNum[symbol_2];\
(&MenuName) -> symbolData[1] = LedNum[10];\
}\
else\
{\
(&MenuName) -> symbolData[0] = LedNum[symbol_1];\
(&MenuName) -> symbolData[0] = Numdot[symbol_2];\
}\
(&MenuName) -> data[0] = datatemp[0];\
(&MenuName) -> data[1] = datatemp[1];\
(&MenuName) -> data[2] = datatemp[2];\
(&MenuName) -> NodeNext = &((&nextnode)->NodeNext);\
(&MenuName) -> BitNeedSet = bit;\
(&MenuName) -> MenuNum = num;\
}while(0)
#define SonMenu_Initial( MenuName,symbol_1,symbol_2,data,bit,nextMenu ) do\
{\
(&MenuName)->symbolData[0] = symbol_1 ; \
(&MenuName)->symbolData[1] = symbol_2 ; \
(&MenuName)->dataAdd = data ; \
(&MenuName)->BitNeedSet = bit; \
(&MenuName)->NodeNext = & ((&nextMenu) -> NodeNext );\
}while( 0 )
#define Menu_0 OverCurrent_Menu
#define Menu_1 OverVoltage_Menu
Menu_Top_Struct OverCurrent_Menu,OverVoltage_Menu;
SonMenu_Struct OverCurrent_SonMenu_1, OverCurrent_SonMenu_2,OverVoltage_SonMenu_1,OverVoltage_SonMenu_2 ;
MenuStatus_Struct *MenuStatus = (MenuStatus_Struct *) (0x1fff0000 + 0x800);
Measure_Display_Data_Struct *Measure_Display_Data = (Measure_Display_Data_Struct * )0x1fff1000;
void Initial_MenuStatus(void)
{
Func_Select = 0; //测量或者设置选择
Protect_Select = 0; //保护功能或显示的参数 选择菜单
Menu_Num = 0; // 子菜单总数
Menu_Level = 0; // 当前子菜单号
Cursor = 0; //光标位置
Bit_NeedSet = 0; // 需要修改的位数
LED_1 = 0;
LED_2 = 0;
LED_3 = 0;
LED_4 = 0; //数码管数据
UP_flag = 0; //上下键按键标志
DOWN_flag = 0; //上下键按键标志
ActiveMenuAdd = 0; //当前菜单的结构体地址
}
void Initial_Stetting_Menu(void )
{
int *dataTemp[3] = {0, &KG_5_1 , &KG_5_2 };
TopMenu_Initial(0, 1, OverCurrent_Menu, dataTemp, OverCurrent_SonMenu_1,3,2 );
SonMenu_Initial( OverCurrent_SonMenu_1,0x1189,0x1177,JDSettingAdd + offset_ShortCircuit_CurrentI, 3,OverCurrent_SonMenu_2);
SonMenu_Initial( OverCurrent_SonMenu_2,0x1189,0x1177,JDSettingAdd + offset_ShortCircuit_CurrentII, 3,OverCurrent_SonMenu_1);
dataTemp[0] = &KG_4_1;
dataTemp[1] =&KG_5_1;
dataTemp[2] =&KG_5_1;
TopMenu_Initial( 0,2,OverVoltage_Menu, dataTemp, OverVoltage_SonMenu_1,3,2 );
SonMenu_Initial( OverVoltage_SonMenu_1,0x7116,0x6511,JDSettingAdd+offset_Voltage_Over_Setting, 3,OverVoltage_SonMenu_2);
SonMenu_Initial( OverVoltage_SonMenu_2,0x7116,0x8117,JDSettingAdd + offset_Start_Setting_Time, 3,OverVoltage_SonMenu_2);
}
void Initial_Measure_Menu(void)
{
int i = 0;
int j = 0;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = JDInputsAdd + off_IA ;
j++;
Symbol_Segment[i] = charA ; //随便填的
i++;
Symbol_Segment[i] = charb ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = JDInputsAdd + off_IB ;
j++;
Symbol_Segment[i] = charC ; //随便填的
i++;
Symbol_Segment[i] = chard ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = JDInputsAdd + off_IC ;
j++;
Symbol_Segment[i] = charE ; //随便填的
i++;
Symbol_Segment[i] = charF ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = JDInputsAdd + off_UA ;
j++;
Symbol_Segment[i] = chard ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = JDInputsAdd + off_UB ;
j++;
Symbol_Segment[i] = charE ; //随便填的
i++;
Symbol_Segment[i] = charE ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = JDInputsAdd + off_UC ;
j++;
Symbol_Segment[i] = charF ; //随便填的
i++;
Symbol_Segment[i] = 0 ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = JDInputsAdd + off_I0 ;
j++;
Symbol_Segment[i] = charH ; //随便填的
i++;
Symbol_Segment[i] = charJ ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = StatusVarAdd + off_OverCurrent_Ratio;
j++;
Symbol_Segment[i] = 0x456c ; //随便填的
i++;
Symbol_Segment[i] = 0x456c ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = StatusVarAdd + off_HeatOver_Ratio;
j++;
Symbol_Segment[i] = 0x456c ; //随便填的
i++;
Symbol_Segment[i] = 0x456c ; //随便填的
i++;
(Measure_Display_Data_Struct *) Measure_Display_Data -> DataAdd[j] = StatusVarAdd + off_Unbalance_Current_Value;
j++;
Symbol_Segment[i] = 0x456c ; //随便填的
i++;
Symbol_Segment[i] = 0x456c ; //随便填的
i++;
}
int MenuNode_Scan(int node1,int node2 )
{
void * ActiveMenuTop;
//int ActiveMenu;
void * ActiveMenu;
int i;
switch(node1)
{
case 0:
ActiveMenuTop = (&Menu_0) -> NodeNext ;
break;
case 1:
ActiveMenuTop = (&Menu_1) -> NodeNext ;
break;
}
ActiveMenu = ActiveMenuTop ;
for( i = node2; i > 0; i-- )
{
//ActiveMenu = *(int *)ActiveMenu
ActiveMenu = ((SonMenu_Struct *)ActiveMenu) -> NodeNext ;
}
return ActiveMenu;
}
void KEY_Process( int KEY )
{
if( Func_Select == Measure )
{
/*************************进入参数测量界面****************************/
switch( KEY )
{
case UP:
if( Protect_Select == Measure_StateNum-1 )
{
Protect_Select = 0 ;
}
else
{
Protect_Select++;
}
break;
case DOWN:
if( Protect_Select == 0 )
{
Protect_Select = Measure_StateNum;
}
else
{
Protect_Select--;
}
break;
case FUNC:
Func_Select = Setting ;
break;
case RESET:
Protect_Select = 0 ;
break;
default:
break;
}
}
if( Func_Select == Setting )
{
/****************进入设定界面***************************/
switch( KEY )
{
case FUNC:
Menu_Level = 0;
if( Protect_Select == Protect_StateNum - 1 )
{
Protect_Select = 0 ;
}
else
{
Protect_Select++;
}
break;
case ENTER:
if( Cursor == Bit_NeedSet )
{
Cursor = 0;
if( Menu_Level == Menu_Num )
{
Menu_Level = 0;
}
else
{
Menu_Level++;
}
}
else
{
Cursor++;
}
break;
case UP:
UP_flag = 1;
break;
case DOWN:
DOWN_flag = 1;
break;
case RESET:
break;
case STOP:
break;
}
}
}
void Float2Led(float value,U16 Data[3])
{
float temp = value ;
float temp_point = 0;
int temp_pointToInt = 0;
int p = 0;
int temp_int = 0 ;
int temp_left = 0 ;
U16 Float2LedValue[3] ;
U16 i[3];
int j;
Float2LedValue[0] = 0;
Float2LedValue[1] = 0 ;
Float2LedValue[2] = 0;
temp_int = temp ;
temp_point = temp - temp_int ;
if( temp_int > 999 )
{
Float2LedValue[0] = LedNum[9];
Float2LedValue[1] = LedNum[9];
Float2LedValue[2] = LedNum[9];
}
temp_left = temp_int;
if( (temp_int > 99) && (temp_int <= 999) )
{
p = temp_int / 100;
Float2LedValue[0] = LedNum[ p ] ;
temp_left -= p*100;
if( (temp_left > 9) && (temp_left <=99) )
{
p = temp_left / 10 ;
Float2LedValue[1] = LedNum[ p ] ;
temp_left -= p*10;
}
if( (temp_left >= 0) && (temp_left <10) )
{
Float2LedValue[2] = LedNum[ temp_left ] ;
}
}
if( (temp_int > 9) && (temp_int <= 99) )
{
temp_pointToInt = temp_point * 100 ;
temp_pointToInt %= 10 ;
if( temp_pointToInt >= 5 )
{
p = temp_int / 10;
Float2LedValue[0] = LedNum[p] ;
temp_left -= p * 10 ;
Float2LedValue[1] = Numdot[temp_left];
temp_pointToInt = temp_point * 10;
/***************************小数部分*********************************/
Float2LedValue[2] = LedNum[ temp_pointToInt ];
j++;
}
else
{
temp_pointToInt = temp_point * 10 ;
temp_pointToInt %= 10 ;
if( temp_pointToInt == 0 )
{
p= temp_int / 10;
Float2LedValue[0] = LedNum[ 10 ];
Float2LedValue[1] = LedNum[ p ] ;
temp_left -= p * 10 ;
Float2LedValue[2] = LedNum[ temp_left ];
}
}
}
/************************************************************/
if( (temp_int >= 0 ) && (temp_int <= 9) )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -