📄 menu_task_motor.c
字号:
sprintf(char_buf,"%02d",pPROTECT[i]->pro_id);
if(i==current_y)
{
Lcd_Draw_Echar(char_buf,0,6+i*23,1);
Lcd_Draw_Cchar(pPROTECT[i]->ppro_name,28,2+i*22,0);
Lcd_Draw_Line(0,14+i*23,15,14+i*23,1);
Lcd_Draw_Line(0,15+i*23,15,15+i*23,1);
}
else
{
Lcd_Draw_Echar(char_buf,0,6+i*23,1);
Lcd_Draw_Cchar(pPROTECT[i]->ppro_name,28,2+i*22,1);
}
}
Lcd_Display_Executive();
Delay_Key();
switch(key_current)
{
case KESC: return;
case KDOWN:
if(protect_counter<PRO_Total_Protect-1)
{
if(current_y>=2)
{
protect_counter++;
current_y=2;
pPROTECT[0]= pPROTECT[1];
pPROTECT[1]= pPROTECT[2];
pPROTECT[2]= pPROTECT[2] -> pro_link_next;
}
else
{
current_y++;
protect_counter++;
}
}
break;
case KUP:
if(current_y<=0)
{
if(protect_counter>0)
{
protect_counter--;
current_y=0;
pPROTECT[2]= pPROTECT[1];
pPROTECT[1]= pPROTECT[0];
pPROTECT[0]= pPROTECT[0] -> pro_link_previous;
}
}
else
{
current_y--;
protect_counter--;
}
break;
case KCR:
(*pfile)(zone,pPROTECT[current_y]);
break;
}
}
}
/********************************************************************************/
/* 修改保护定值子程序 2001-12-3 */
/* 入口: (pPROTECT) 出口:无返回值 */
/* 说明:修改保护定值 */
/* */
/********************************************************************************/
extern UNSIGNED uSaveSetZone;
void Select_Sets(int set_zone,void *pPROTECT)
{
char *pchar1="没有定值数据!";
char *pchar2="定值已修改固化!";
char *pchar3="定值未修改!";
PROTECT *pprotect;
SETTING *psets[3],*psets_pointer;
int i,j,k,zone,pointer,set,current_y,sets_counter;
int length,total_set,current_x,flag,temp;
float setting_buf[PRO_SETS_MAX_NUMBER],setting_disp[3],setting;
char char_buf1[5],char_buf2[10];
flag = 0;
zone=set_zone;
pprotect = (PROTECT *)pPROTECT;
total_set = pprotect->pro_setting_number; //get setting number
if(total_set==0)
{
Lcd_Clear_Memory();
Lcd_Draw_Cchar(pchar1,8,24,1);
Lcd_Display_Executive();
NU_Sleep(1000*NU_TICKS);
return;
}
for(i=0;i<total_set;i++)
{
psets_pointer = &pprotect -> pro_setting[i];
setting_buf[i] = psets_pointer->set_value_zone[zone];
}
pointer = 0;
while((pointer<3)&&(pointer<total_set))
{
psets[pointer] = &pprotect -> pro_setting[pointer];
setting_disp[pointer] = setting_buf[pointer];
pointer++;
}
current_y = 0;
current_x = 0;
sets_counter=0;
while(1)
{
Lcd_Clear_Memory();
Lcd_Draw_Line(0,44,127,44,1);
Lcd_Draw_Line(0,63,127,63,1);
for(i=0;i<pointer;i++)
{
Lcd_Draw_Echar(psets[i]->pset_dimension,104,2+i*14,1);
switch(psets[i]->set_calculate_style)
{
case CHL_FOURIER1_:
setting = sqrt(setting_disp[i])
/psets[i]->set_calculate_coefficient;
if(((setting+0.0001)>psets[i]->set_high_limit)||
((setting+0.0001)<psets[i]->set_lower_limit))
{
setting = psets[i]->set_high_limit;
flag=0x55aa;
}
set=(int)(setting*100+0.5);
sprintf(char_buf2,"%3d.%02d",set/100,set%100);
break;
case CHL_MUL_:
setting = setting_disp[i]
/psets[i]->set_calculate_coefficient;
if((setting>psets[i]->set_high_limit)||
(setting<psets[i]->set_lower_limit))
{
setting = psets[i]->set_high_limit;
flag=0x55aa;
}
set=(int)(setting*100+0.5);
sprintf(char_buf2,"%3d.%02d",set/100,set%100);
break;
case CHL_FREQ_:
setting = 0;
set=(int)(setting*100+0.5);
sprintf(char_buf2,"%3d.%02d",set/100,set%100);
break;
case MODE_:
setting= setting_disp[i];
if((setting>psets[i]->set_high_limit)||
(setting<psets[i]->set_lower_limit))
{
setting = psets[i]->set_high_limit;
flag=0x55aa;
}
set=(int)(setting+0.1);
sprintf(char_buf2,"%6d",set);
break;
default: break;
}
if(i==current_y)
{
switch(current_x)
{
case 0:
Lcd_Draw_Line(84,10+i*14,91,10+i*14,1);
break;
case 1:
Lcd_Draw_Line(76,10+i*14,83,10+i*14,1);
break;
case 3:
Lcd_Draw_Line(60,10+i*14,67,10+i*14,1);
break;
case 4:
Lcd_Draw_Line(52,10+i*14,59,10+i*14,1);
break;
case 5:
Lcd_Draw_Line(44,10+i*14,51,10+i*14,1);
break;
}
for(j=0,k=0;j<6;j++)
{
if(char_buf2[j]==' ')
k++;
}
//Lcd_Draw_Echar((char *)(char_buf2+k), 44+k*8, 2+i*14, 1); //显示数值
Lcd_Draw_Echar(char_buf2,44,2+i*14 ,1);
Lcd_Draw_Echar(psets[i]->pset_alias,4,2+i*14,0);
length=strlen(psets[i]->pset_name);
if(length==8)
Lcd_Draw_Cchar(psets[i]->pset_name,32,46,1);//32
else if(length<8)
Lcd_Draw_Cchar(psets[i]->pset_name,40,46,1);
else
Lcd_Draw_Cchar(psets[i]->pset_name,24,46,1);//32
sprintf(char_buf2,"%02d",psets[i]->set_id);
Lcd_Draw_Echar(char_buf2,0,50,1);
}
else
{
Lcd_Draw_Echar(char_buf2,44,2+i*14 ,1);
Lcd_Draw_Echar(psets[i]->pset_alias,4,2+i*14,1);
}
}
Lcd_Display_Executive();
Delay_Key();
switch(key_current)
{
case KDOWN:
if(sets_counter<(total_set-1))
{
if(current_y>=2)
{
current_y=2;
sets_counter++;
psets[0] = psets[1];
psets[1] = psets[2];
psets[2] = &pprotect -> pro_setting[sets_counter];
setting_disp[0] = setting_disp[1];
setting_disp[1] = setting_disp[2];
setting_disp[2] = setting_buf[sets_counter];
}
else
{
current_y++;
sets_counter++;
}
}
break;
case KUP:
if(current_y<=0)
{
if(sets_counter>0)
{
sets_counter--;
current_y=0;
psets[2]= psets[1];
psets[1]= psets[0];
psets[0]= &pprotect -> pro_setting[sets_counter];
setting_disp[2]=setting_disp[1];
setting_disp[1]=setting_disp[0];
setting_disp[0]=setting_buf[sets_counter];
}
}
else
{
sets_counter--;
current_y--;
}
break;
case KLEFT:
if(current_x<5)
{
current_x++;
}
break;
case KRIGHT:
if(current_x>0)
{
current_x--;
}
break;
case KINC:
{
flag = 0x55aa;
switch(psets[current_y]->set_calculate_style)
{
case CHL_FOURIER1_:
setting = sqrt(setting_buf[sets_counter])
/psets[current_y]->set_calculate_coefficient;
set=(int)(setting*100+0.5);
switch(current_x)
{
case 0: set+=1; break;
case 1: set+=10; break;
case 3: set+=100; break;
case 4: set+=1000; break;
case 5: set+=10000; break;
}
setting=((float)set)/100;
if(setting>psets[current_y]->set_high_limit)
{
setting = psets[current_y]->set_high_limit;
}
else if(setting<psets[current_y]->set_lower_limit)
{
setting = psets[current_y]->set_lower_limit;
}
setting_buf[sets_counter]=setting*psets[current_y]->set_calculate_coefficient
*setting*psets[current_y]->set_calculate_coefficient;
break;
case CHL_MUL_:
setting = setting_buf[sets_counter]
/psets[current_y]->set_calculate_coefficient;
set=(int)(setting*100+0.5);
switch(current_x)
{
case 0: set+=1; break;
case 1: set+=10; break;
case 3: set+=100; break;
case 4: set+=1000; break;
case 5: set+=10000; break;
}
setting=((float)set)/100;
if(setting>psets[current_y]->set_high_limit)
{
setting = psets[current_y]->set_high_limit;
}
else if(setting<psets[current_y]->set_lower_limit)
{
setting = psets[current_y]->set_lower_limit;
}
setting_buf[sets_counter]=setting*psets[current_y]->set_calculate_coefficient;
break;
case CHL_FREQ_:
setting = 0;
break;
case MODE_:
set=(int)(setting_buf[sets_counter]+0.1);
switch(current_x)
{
case 0: set+=1; break;
case 1: set+=10; break;
case 3: set+=100; break;
case 4: set+=1000; break;
case 5: set+=10000; break;
}
if(set>(int)psets[current_y]->set_high_limit)
{
set = psets[current_y]->set_high_limit;
}
else if(set<(int)psets[current_y]->set_lower_limit)
{
set = psets[current_y]->set_lower_limit;
}
setting_buf[sets_counter]=(float)set;
break;
default:break;
}
setting_disp[current_y] = setting_buf[sets_counter];
break;
}
case KDEC:
{
flag = 0x55aa;
switch(psets[current_y]->set_calculate_style)
{
case CHL_FOURIER1_:
setting = sqrt(setting_buf[sets_counter])
/psets[current_y]->set_calculate_coefficient;
set=(int)(setting*100+0.5);
switch(current_x)
{
case 0: set-=1; break;
case 1: set-=10; break;
case 3: set-=100; break;
case 4: set-=1000; break;
case 5: set-=10000; break;
}
setting=((float)set)/100;
if(setting>psets[current_y]->set_high_limit)
{
setting = psets[current_y]->set_high_limit;
}
else if(setting<psets[current_y]->set_lower_limit)
{
setting = psets[current_y]->set_lower_limit;
}
setting_buf[sets_counter]=setting*psets[current_y]->set_calculate_coefficient
*setting*psets[current_y]->set_calculate_coefficient;
break;
case CHL_MUL_:
setting = setting_buf[sets_counter]
/psets[current_y]->set_calculate_coefficient;
set=(int)(setting*100+0.5);
switch(current_x)
{
case 0: set-=1; break;
case 1: set-=10; break;
case 3: set-=100; break;
case 4: set-=1000; break;
case 5: set-=10000; break;
}
setting=((float)set)/100;
if(setting>=psets[current_y]->set_high_limit)
{
setting = psets[current_y]->set_high_limit;
}
else if(setting<=psets[current_y]->set_lower_limit)
{
setting = psets[current_y]->set_lower_limit;
}
setting_buf[sets_counter]=setting*psets[current_y]->set_calculate_coefficient;
break;
case CHL_FREQ_:
setting = 0;
break;
case MODE_:
set=(int)(setting_buf[sets_counter]+0.1);
switch(current_x)
{
case 0: set-=1; break;
case 1: set-=10; break;
case 3: set-=100; break;
case 4: set-=1000; break;
case 5: set-=10000; break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -