⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu_task.c.bak

📁 电力系统中的保护装置全部代码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
		for(i=0;i<=pointer;i++)
		{
			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=NU_NULL;
    SETTING *psets[3]={NU_NULL,NU_NULL,NU_NULL},*psets_pointer=NU_NULL;
    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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -