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

📄 menu_task.c.bak

📁 电力系统中的保护装置全部代码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
	pMENU	=	(MENU *)&Main_Menu[2];
        pMENU	->      menu_index_num		=	2;
        pMENU	->      x_offset		=	ICON_X2;
        pMENU	->      y_offset		=	ICON_Y2;
        pMENU	->      icon_pointer1	=	pIcon2_Report;
        pMENU	->      menu_text		=	"报告";
        pMENU	->      menu_help		=	"[报告]:动作报告处理";
        pMENU	->      menu_file		=	Display_Report;
/*----------- MENU_3 -------------*/
	pMENU	=	(MENU *)&Main_Menu[3];
        pMENU	->      menu_index_num		=	3;
        pMENU	->      x_offset		=	ICON_X3;
        pMENU	->      y_offset		=	ICON_Y3;
        pMENU	->      icon_pointer1	=	pIcon3_Swipout;
        pMENU	->      menu_text		=	"传动";
        pMENU	->      menu_help		=	"[传动]:保护出口传动";
        pMENU	->      menu_file		=	Outlet_Test;
/*----------- MENU_4 -------------*/
	pMENU	=	(MENU *)&Main_Menu[4];
        pMENU	->      menu_index_num		=	4;
        pMENU	->      x_offset		=	ICON_X4;
        pMENU	->      y_offset		=	ICON_Y4;
        pMENU	->      icon_pointer1	=	pIcon4_Swipin;
        pMENU	->      menu_text		=	"开入";
        pMENU	->      menu_help		=	"[开入]:查看开入状态";
        pMENU	->      menu_file		=	Display_Dinput;
/*----------- MENU_5 -------------*/
	pMENU	=	(MENU *)&Main_Menu[5];
        pMENU	->      menu_index_num		=	5;
        pMENU	->      x_offset		=	ICON_X5;
        pMENU	->      y_offset		=	ICON_Y5;
        pMENU	->      icon_pointer1	=	pIcon5_Comm;
        pMENU	->      menu_text		=	"通讯";
        pMENU	->      menu_help		=	"[通讯]:通讯参数设置";
        pMENU	->      menu_file		=	Device_Comm;
/*----------- MENU_6 -------------*/
	pMENU	=	(MENU *)&Main_Menu[6];
        pMENU	->      menu_index_num		=	6;
        pMENU	->      x_offset		=	ICON_X6;
        pMENU	->      y_offset		=	ICON_Y6;
        pMENU	->      icon_pointer1	=	pIcon6_set;
        pMENU	->      menu_text		=	"设置";
        pMENU	->      menu_help		=	"[设置]:装置参数设置";
        pMENU	->      menu_file		=	Device_Set;
/*----------- MENU_7 -------------*/
	pMENU	=	(MENU *)&Main_Menu[7];
        pMENU	->      menu_index_num		=	7;
        pMENU	->      x_offset		=	ICON_X7;
        pMENU	->      y_offset		=	ICON_Y7;
        pMENU	->      icon_pointer1	=   pIcon10_print;
        pMENU	->      menu_text		=	"打印";
        pMENU	->      menu_help		=	"[打印]:打印装置数据";
        pMENU	->      menu_file		=	Device_Print;
/*----------- MENU_8 -------------*/
	pMENU	=	(MENU *)&Main_Menu[8];
        pMENU	->      menu_index_num		=	8;
        pMENU	->      x_offset		=	ICON_X8;
        pMENU	->      y_offset		=	ICON_Y8;
        pMENU	->      icon_pointer1	=   pIcon7_version;
        pMENU	->      menu_text		=	"版本";
        pMENU	->      menu_help		=	"[版本]:装置版本说明";
        pMENU	->      menu_file		=	Device_Version;
/*------------------------------------*/
	current_menu = 0;
	while(1)
	{	    
	  Lcd_Clear_Memory();
      Lcd_Turnover_Mainmenu(current_menu);
      Lcd_Display_Executive();
      
      Delay_Key();   
	  switch(key_current)
	  {
          case KRIGHT:  current_menu++;
		  if(current_menu >= MAX_MENU)  
		  {
			  current_menu=MAX_MENU-1;
		  } 
		  break;
		  
		  
		  case KDOWN:  current_menu += 3;
		  if(current_menu == MAX_MENU)  
		  {
			  current_menu=MAX_MENU-1;
		  } 
		  else if(current_menu > MAX_MENU)   
          {
              current_menu -= 3;
              break; 
          }
          break;
          
		  
	      case KLEFT:  current_menu--;
          if(current_menu<0)
		  {
			  current_menu = 0; 
			  break;
          }
          break;

          
          case KUP:    current_menu -= 3;
          if(current_menu<0)    
		  {
			  current_menu+=3;
			  break;
          }   
          break;
          
          case KCR: 
          pMENU=(MENU *)&Main_Menu[current_menu];
          (*(pMENU -> menu_file))();
		  break;

          case KESC:
              return;

		  default: break;
        } 
     }
} 

/********************************************************************************/
/*  根据当前光标显示主菜单子程序                        	2002-3-22               */
/*  入口: current_cursor             			出口:无返回值                    */
/*  说明:                                        				                */
/*                                                     				            */
/********************************************************************************/
void  Lcd_Turnover_Mainmenu(int current_cursor)
{
	unsigned page_num,counter,current_menu;
    MENU	*pMENU=NU_NULL;
    page_num=current_cursor/3;
    current_menu=current_cursor;
     
	switch(page_num)
	{
	    case 0:
	    for(counter=0;counter<3;counter++)
	     {
          pMENU  =  (MENU *)&Main_Menu[counter];
          if(pMENU->menu_index_num == current_menu)
		   {
             Lcd_Draw_Icon(pMENU->icon_pointer1,pMENU->x_offset,pMENU->y_offset,0);
             Lcd_Draw_Cchar(pMENU->menu_text,pMENU->x_offset, pMENU->y_offset+36,1);  
             Lcd_Draw_Line(pMENU->x_offset,pMENU->y_offset+53,pMENU->x_offset+32,pMENU->y_offset+53,1);
		     Lcd_Draw_Line(pMENU->x_offset,pMENU->y_offset+54,pMENU->x_offset+32,pMENU->y_offset+54,1);
		   }
	      else
           {
             Lcd_Draw_Icon(pMENU->icon_pointer1,pMENU->x_offset,pMENU->y_offset,1);
             Lcd_Draw_Cchar(pMENU->menu_text,pMENU->x_offset, pMENU->y_offset+36,1);
		   }
	     }
        break;

	    case 1:
		 for(counter=3;counter<6;counter++)
	     {
          pMENU  =  (MENU *)&Main_Menu[counter];
          if(pMENU->menu_index_num == current_menu)
		   {
             Lcd_Draw_Icon(pMENU->icon_pointer1,pMENU->x_offset,pMENU->y_offset,0);
             Lcd_Draw_Cchar(pMENU->menu_text,pMENU->x_offset, pMENU->y_offset+36,1); 
             Lcd_Draw_Line(pMENU->x_offset,pMENU->y_offset+53,pMENU->x_offset+32,pMENU->y_offset+53,1);
		     Lcd_Draw_Line(pMENU->x_offset,pMENU->y_offset+54,pMENU->x_offset+32,pMENU->y_offset+54,1);
		   }
	      else
           {
             Lcd_Draw_Icon(pMENU->icon_pointer1,pMENU->x_offset,pMENU->y_offset,1);
             Lcd_Draw_Cchar(pMENU->menu_text,pMENU->x_offset, pMENU->y_offset+36,1);
		   }
          }
	    break;

	    case 2:
		 for(counter=6;counter<9;counter++)
	      {
            pMENU  =  (MENU *)&Main_Menu[counter];
          if(pMENU->menu_index_num == current_menu)
		   {
             Lcd_Draw_Icon(pMENU->icon_pointer1,pMENU->x_offset,pMENU->y_offset,0);
             Lcd_Draw_Cchar(pMENU->menu_text,pMENU->x_offset, pMENU->y_offset+36,1); 
             Lcd_Draw_Line(pMENU->x_offset,pMENU->y_offset+53,pMENU->x_offset+32,pMENU->y_offset+53,1);
		     Lcd_Draw_Line(pMENU->x_offset,pMENU->y_offset+54,pMENU->x_offset+32,pMENU->y_offset+54,1);
		   }
	      else
           {
             Lcd_Draw_Icon(pMENU->icon_pointer1,pMENU->x_offset,pMENU->y_offset,1);
             Lcd_Draw_Cchar(pMENU->menu_text,pMENU->x_offset, pMENU->y_offset+36,1);
		   }
          }
	    break;

		default: return;
	  }
}


/********************************************************************************/
/*  查看实时参数子程序                        	2001-12-3               			*/
/*  入口: ( )             			出口:无返回值                 				*/
/*  说明:                                        								*/
/*                                                     							*/
/********************************************************************************/
void Display_Rundata()  
{
	int i,x1,x2,current_y,pointer,protect_counter;
	PROTECT *pPROTECT[3]={NU_NULL};
    char char_buf[3];

	if(PRO_Total_Protect==0)
    {
		Lcd_Clear_Memory();
		Lcd_Draw_Cchar("没有保护模块运行",0,24,1);
        Lcd_Display_Executive();  
		NU_Sleep(1000*NU_TICKS);
        return;
     }
	
	pointer=0;
	pPROTECT[0] = PRO_Created_Protect_List;
    while((pointer<2)&&(pointer<PRO_Total_Protect-1))
    {
        pPROTECT[pointer+1]= pPROTECT[pointer] -> pro_link_next;
        pointer++;   
    }

	current_y = 0;
    protect_counter=0;

    while(1)
	{
        Lcd_Clear_Memory();
		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();
		
		
		if(key_current==KESC) break;

		if((key_current==KDOWN)||(key_current==KRIGHT))
		{
		        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++;  
		        	}
		        }
			continue;
		}
		
		if((key_current==KLEFT)||(key_current==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--;
			}			
			continue;
		}
		
		if(key_current==KCR)
		{
		        Select_RunData(pPROTECT[current_y]);
			    continue;
		}
  }	
}

/*********************************************************/
/*                                                      **/
/* Select_RunData                                       **/
/*********************************************************/

void Select_RunData(void *pPROTECT)
{
	
    PROTECT *pprotect=NU_NULL;
	char  *pchar1="没有实时参数"; 
	int    i,j,k,total_value,pointer,value_n;
	int    length,current_y,value_counter,angle;
    float  value,real,imaginary;
	VALUE  *pvalue[VALUE_MAX_NUMBER]={NU_NULL},*pvalue_disp[3]={NU_NULL};
	char   char_buf1[6],char_buf2[8];

    pprotect=(PROTECT *)pPROTECT;
    total_value=pprotect->pro_run_data_number;
	
	if(!total_value)
	{
		Lcd_Clear_Memory();
		Lcd_Draw_Cchar(pchar1,16,24,1);
        Lcd_Display_Executive();
		NU_Sleep(1000*NU_TICKS);
		return;
	}

    for(i=0;i<total_value;i++)
	{
        pvalue[i]=&pprotect->pro_run_data[i];
	}            
	
	pointer = 0;
	while((pointer<=2)&&(pointer <= total_value-1))
	{
        pvalue_disp[pointer]=pvalue[pointer];
        pointer++;
	}
	current_y = 0;
	value_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(pvalue_disp[i]->pvalue_alias,4,2+i*14,1);
			if(pvalue_disp[i]->value_calculate_style != CHL_FREQ_)
			{
				 Lcd_Draw_Echar(pvalue_disp[i]->pvalue_dimension,104,2+i*14,1); 
			}
			switch(pvalue_disp[i]->value_calculate_style)               
        	{
        		case	CHL_FOURIER1_:  //0
        		    value = sqrt(pvalue_disp[i]->value_measure)
        					 	/pvalue_disp[i]->value_calculate_coefficient;
        		    	if((value<0.001) && (value>-0.001))
		    			{
		        			strcpy(char_buf2,"  0.000");
		    			}
		    			else if(value< -0.001)
		    			{
		    				sprintf(char_buf2, "-%7.3f",-value+0.0001);
		    			}
		    			else
		    			{
		    				sprintf(char_buf2,"%7.3f",value+0.0001);
		    			}
        		break;
        			
				case	CHL_MUL_:
        		    value = (pvalue_disp[i]->value_measure)
        						/(pvalue_disp[i]->value_calculate_coefficient);
        			if((value<0.001) && (value>-0.001))
		    		{
		        		strcpy(char_buf2,"  0.000");
		    		}
		    		else if(value< -0.001)
		    		{
		    			sprintf(char_buf2, "-%7.3f",-value+0.0001);
		    		}
		    		else
		    		{
		    			sprintf(char_buf2,"%7.3f",value+0.0001);
		    		}
        		break;
        		
				case	CHL_VECTOR_:
        		     real = pvalue_disp[i]->value_real;
        			 imaginary = pvalue_disp[i]->value_imaginary;
        			 sqrt(pvalue_disp[i]->value_measure)
        					 	/pvalue_disp[i]->value_calculate_coefficient;
                    
        			 angle = atan2(imaginary,real)*180.0/3.1416;
					 if(angle<0) angle=angle+360;
        	    	 sprintf(char_buf2,"%3.0f^",angle+0.1);
        			 break;                                                          
                  	
				case	CHL_FREQ_:
        				value_n = (int)(pvalue_disp[i]->value_measure+0.1);
        				sprintf(char_buf2,"%7d",value_n%10000000);     
        			break; 
        		
			}  
		 
			if(i==current_y)
        	{
        		for(k=0,j=0;k<6;k++)
				{
					if(char_buf2[k]==' ')
				    {
						j++;
					}
				}
				
				Lcd_Draw_Echar((char *)(char_buf2+j), 44+j*8, 2+i*14, 0);
				length=strlen(pvalue_disp[i]->pvalue_name);
				if(length==8)
				Lcd_Draw_Cchar(pvalue_disp[i]->pvalue_name,40,46,1);  
				else if(length==10) 
				Lcd_Draw_Cchar(pvalue_disp[i]->pvalue_name,32,46,1);  
				else 
				Lcd_Draw_Cchar(pvalue_disp[i]->pvalue_name,16,46,1);  
                //Lcd_Draw_Line(4,10+i*14,20,10+i*14,1); 
				sprintf(char_buf1,"%02d",pvalue_disp[i]->value_index_number);
			    Lcd_Draw_Echar(char_buf1,4,50,1);
        	}

⌨️ 快捷键说明

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