Exemplo n.º 1
0
BUTTON GetKey( )
{
	BUTTON KeySave;	

	KeySave = GetKey1();

 	if( KeySave != BTN_NULL){
		delay_ms(20);
		KeySave = GetKey1();
	}	
	if( KeySave != BTN_NULL){
		while( GetKey1()!= BTN_NULL );
		delay_ms(10);
		secWatchDog=0;
	}
	return KeySave; 
}
Exemplo n.º 2
0
//**********************************************
  // 1.3.0功能 设置模式
  //*******************************************
 void SetModel(void)
 {
   switch(MenuStatus) 
   {
     
   case 2:
     
     Str_8x16(1, 0,"添加/编辑/删除" );
      DispFanBai(1,0,4) ;
      ModefyModel= 0;//默认是添加状态
      Index = 0;
     DispFanBai(1,0,4); 
     MenuStatus = 1000;
     break;
   case 1000:
        switch(GetKey1())
         {
         case ENTER_KEY:
           ModefyModel = Index;
           return;
         // break;
         case UP_KEY:
           if(Index <3)
           {
             DispFanBai(1,Index*5,4);//去掉旧有的反白
             Index++; 
            
             DispFanBai(1,Index*5,4);//增加当前反白;
           }
           
             
           break;
         case DOWN_KEY:
           if(Index >0)
           {
             DispFanBai(1,Index*5,4);//去掉旧有的反白
             Index--; 
            
             DispFanBai(1,Index*5,4);//增加当前反白;
           }
           
             
           break;           

         case ESC_KEY:
           return;
           //break;
         default:
           break;           
         }
     break;
   }
   
 }
Exemplo n.º 3
0
  //**************************8
  // 3整组测量。          
  //功能: 实现某组电池的整组测量。
  //************************* 
void TotalGrpMeasure(void )
{
    unchar i;
    unchar s[12];
     
     unint fint;
     float fres;
     float f,arf[3];    

 switch(MenuStatus)
 {
 case 2:
     if(CURPATH.CurrentDirStarClusID !=0)
       {
         CURPATH.CurrentDirStarClusID = 0;
       } 
     if((ReadFile("CONFIG  TXT", (unchar*)pCfgHead, 0,sizeof (CFG_HEAD))!=0xff))//取出系统头
     {
      
      Index = 1;

     // t=*(unint*)Temp;再次出现字节对齐的问题,开始调试的时候是没问题的现在又出了。。。
         s[0] = Index/1000+0x30;         
         s[1] = (Index%1000)/100+0x30;
         s[2] = ((Index%1000)%100)/10+0x30;
         s[3] = ((Index%1000)%100)%10+0x30;
         s[4] = '\0'; 
       

      Str_8x16(0,0,"组:");
      Str_8x16(0,3,s);
 


      DispFanBai(0,3,4);
      MenuStatus =1000;
     }
     else
     {
       Str_8x16(1,0 ,"系统文件不存在");
       Delay_ms(2000);
       MenuStatus = 3;
       return;
     } 
  break;
 case 1000:
   
         switch(GetKey1())
         {
         case ENTER_KEY:
           DispFanBai(0,3,4);//组位置取消反白
           //先从config文件读出该组电池对应的组属性域;
          
          if( ReadFile("CONFIG  TXT",(unchar*)pGrpHead,Index*64,sizeof (GRP_HEAD))==0xff)
          {
            Str_8x16(2,0,"系统配置文件错误");
            Delay_ms(2000);
            MenuStatus =3;
            return;
          }
     
           
           
           //进入该组所在的目录如果没有该组就建立该组的目录。并在该目录下根据时间建立该组的测量文件
           
        if(CURPATH.CurrentDirStarClusID !=0)
       {
         CURPATH.CurrentDirStarClusID = 0;
       }
         s[0] = Index/1000+0x30;         
         s[1] = (Index%1000)/100+0x30;
         s[2] = ((Index%1000)%100)/10+0x30;
         s[3] = ((Index%1000)%100)%10+0x30;
         s[4] = '\0';
       if(ChgDir(s)==0xff)//没有该目录建立该目录并进入
       {
         CreateDir(s);
            
       }
       ChgDir(s);
       DIR *ID=(DIR*)&Temp[12];
       s[0] = year/1000+0x30;
       s[1] = (year%1000)/100+0x30;
       s[2] = ((year%1000)%100)/10+0x30;
       s[3] = ((year%1000)%100)%10+0x30;    
       s[4]=month/10+0x30;
       s[5]= month%10+0x30;
       s[6]= day/10+0x30;
       s[7]=day%10+0x30;
       s[8]='D';
       s[9]='A';
       s[10]='T';
       s[11]=0;
       
         
         
       if(GetFileID(s, ID)==0xffff)//文件不存在建立之并根据config.txt建立该文件的默认头部
          {
            CreateFile(s);
         
            pMeasureHead=(MEASURE_HEAD*)Temp;
            pMeasureHead->DeviceID=pCfgHead->DeviceID;
            pMeasureHead->BatGrpID=pGrpHead->BatGrpID;
            pMeasureHead->BatNumbers=pGrpHead->BatNumbers;
            AppendData(s,(unchar*)pMeasureHead,sizeof (MEASURE_HEAD));
          }
       //判定该组电池今天已经测量了多少块以便进行下面的测量。
           Index =(ID->FilePosit.Size-16)/8+1;//已经存在的电池测量数据组
           if(Index>=pGrpHead->BatNumbers)
           {
             Str_8x16(1,0,"该组已经测量完毕");
            Delay_ms(2000);
            MenuStatus =3;
            return;
             
           }
        s[0] = Index/1000+0x30;
       s[1] = (Index%1000)/100+0x30;
       s[2] = ((Index%1000)%100)/10+0x30;
       s[3] = ((Index%1000)%100)%10+0x30;           
       s[4] = 0;
       Str_8x16(0,12,s);
       
         
         //给cy单片机上电打开串口并进行串口初始化;
         pRecv0Str=&Temp[20];//设置接收缓冲区的地址。       
         POWRON_CY;
         Init_Uart0;

         Uart0RxTimeOut = 0;
         //等待cy单片机的响应包;
         while(1)
         {
           if(GetKey2( pAck,Temp,10)!=NULL)
           {
             //判定得到的数据是否合法
             if((Temp[4]==0x04)&&(Temp[5]==0x03)&&(Temp[6]==0x02)&&(Temp[7]==0x01))
             {
               unchar  data[4];
               data[0] =10;//设定地址为10
               data[1] = 0;
               data[2] = 0;
               data[3] = 0;
               SendCmd(SET_ADRESS,0,data);  
               Uart0RxTimeOut =0;
             
             }
             
             break;
           }
           
          if(Uart0RxTimeOut>=250)
          {
            //cy单片机没有响应退出;
            Str_8x16(1,0,"测量模块没有响应");
            Delay_ms(2000);
            POWROFF_CY;
            MenuStatus =3;
            return;
          }
         }


             while(1)
             {
               if(GetKey2( pAck,Temp,10)!=NULL)//得到cy的设定地址回应
                 
               {
                 if(Temp[2]==10)
                 {
 
                    break;
                 }                 
                 
                break; 
               }
         if(Uart0RxTimeOut>=250)
          {
            //cy单片机没有响应退出;
            Str_8x16(1,0,"测量模块没有响应");
            Delay_ms(2000);
            POWROFF_CY;
            MenuStatus =3;
            return;
          }               
             }         
         
         
         
           DispFanBai(0,12,4);//电池编号位置加反白;
         //Index = 1;

           MenuStatus =2000;
           break;
         case UP_KEY:
       
         if(Index ==pCfgHead->NumberBatGrps)
         { 
          Index=1;
          
         } 
         else
         {  
          Index++;
          
         }
         s[0] = Index/1000+0x30;         
         s[1] = (Index%1000)/100+0x30;
         s[2] = ((Index%1000)%100)/10+0x30;
         s[3] = ((Index%1000)%100)%10+0x30;
         s[4] = '\0';
         
         Str_8x16(0,3,s);
         DispFanBai(0,3,4);
           
           break;
         case DOWN_KEY:
          
         if(Index==1)
         { 
          Index = pCfgHead->NumberBatGrps;
         
         } 
         else
         {  
          Index--; 
          
         }  
         s[0] = Index/1000+0x30;         
         s[1] = (Index%1000)/100+0x30;
         s[2] = ((Index%1000)%100)/10+0x30;
         s[3] = ((Index%1000)%100)%10+0x30;
         s[4] = '\0';
         
         Str_8x16(0,3,s);
         DispFanBai(0,3,4);           
           break;
         case ESC_KEY:
           break;
         default:
           break;
         }     
     
   
   
  break;
 case 2000: //开始测量不响应任何按键
   //发送测量命令给cy
   
   i = 0;
   while(1)
   {
    
   Uart0RxTimeOut=0;
     SendCmd(MEASURE_VOLT,10,s);
     while(1)
     { 
       if(GetKey2( pAck,Temp,10)!=NULL)
       {
         memcpy((unchar*)&fint,&Temp[4],2);
         f=(float)fint/1000;//注意字节对齐问题;
        
         if((f>=pGrpHead->BatVoltMin)&&(f<=pGrpHead->BatVoltMax))
         {
           arf[i]=f;
           i++;
           break;
         }
       }
       else if(Uart0RxTimeOut>=250)//超时退出;
          {
            //cy单片机没有响应退出;
            Str_8x16(1,0,"测量模块没有响应");
            Delay_ms(2000);
            POWROFF_CY;
            MenuStatus =3;
            return;
          }

       
     }
     if(i==3)
     {
       //已经测量了3次
       i =0;
      float f1 = fabsf(arf[0]-arf[1]);
      float f2 = fabsf(arf[0]-arf[2]);
      float f3 = fabsf(arf[2]-arf[1]);
                       
                        
      if((f1<=0.01)&&(f2<=0.01)&&(f3<=0.01))//比较有效性
      {
        
      //夹子夹好了并连续得到三次合格的电压值;
        //退出电压测量进行电阻测量。

//*******************8
   
        //发测量阻值的命令;
        Uart0RxTimeOut = 0;
        
        SendCmd(MEASURE_RES,10,s);
        DispFanBai(0,12,4);//取消反白。
        f=(arf[0]+arf[1]+arf[2])/3;
        while(1)
        {
         if(GetKey2( pAck,Temp,10)!=NULL)
         { 
         
         memcpy(Temp,&f,4);
         memcpy(&fint,&Temp[4],2);
         fres =(float)fint/1000;
         memcpy(Temp,&fres,4);
        // 显示出电压和内阻值;
         sprintf((char*)s,"%5.3f",f);
         Str_8x16(1,5,s);
         Str_8x16(1,5,s);
         Str_8x16(1,0,"电压:");
         Str_8x16(1,10,"V");
         sprintf((char*)s,"%5.3f",fres);
         Str_8x16(2,5,s);
         Str_8x16(2,0,"内阻:");
         Str_8x16(2,10,"mΩ");
           
         //测量结果存储到文件里
       s[0] = year/1000+0x30;
       s[1] = (year%1000)/100+0x30;
       s[2] = ((year%1000)%100)/10+0x30;
       s[3] = ((year%1000)%100)%10+0x30;    
       s[4]=month/10+0x30;
       s[5]= month%10+0x30;
       s[6]= day/10+0x30;
       s[7]=day%10+0x30;
       s[8]='D';
       s[9]='A';
       s[10]='T';
       s[11]=0;
    
       AppendData(s,Temp,8);
       
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       //开始下一个电池的测量
       //  Str_8x16(2,0, "ENT:下一个 ESC:退出");
         ClrKeyBuf();
         unchar key;
       s[0] = Index/1000+0x30;
       s[1] = (Index%1000)/100+0x30;
       s[2] = ((Index%1000)%100)/10+0x30;
       s[3] = ((Index%1000)%100)%10+0x30;         
       s[4] = 0;
       Str_8x16(0,12,s);
       DispFanBai(0,12,4); //测完了当前电池再次反白此电池表明测量完        
        while(1)//等待用户操作;
          
        {
          KeyScan();
          
          key=GetKey1();
         if(key==ENTER_KEY) 
         {
           if(Index==pGrpHead->BatNumbers)
           {
             //测到了最后一块电池退出系统。
             Str_8x16(1,0,"整组测量完毕");
             Delay_ms(2000);
             POWROFF_CY;
             MenuStatus =3;
             return;         
             
             
           }
           else
           {  
             Index++;
           }
           s[0] = Index/1000+0x30;
           s[1] = (Index%1000)/100+0x30;
           s[2] = ((Index%1000)%100)/10+0x30;
           s[3] = ((Index%1000)%100)%10+0x30;         
           s[4] = 0;
           Str_8x16(0,12,s);
           Str_8x16(0,12,s);
           DispFanBai(0,12,4);
           Str_8x16(1,0,"                ");           
           Str_8x16(2,0,"                ");           
           
           Uart0RxTimeOut=0;
           break;
         }
         else if(key==ESC_KEY)
         {
            Delay_ms(2000);
            POWROFF_CY;
            MenuStatus =3;
            return;            
           
         
         }
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^         
           
        }
        
        
          break;//退出测量阻值的应答循环。
          }
       else if(Uart0RxTimeOut>=250)//超时退出;
          {
            //cy单片机没有响应退出;
            Str_8x16(1,0,"测量模块没有响应");
            Delay_ms(2000);
            POWROFF_CY;
            MenuStatus =3;
            return;
          }
          
      
        }

        
//***************************************        


      //break;  
       
      }
      else
      {
        //判定为夹子没有夹好
        Str_8x16(3,0,"没夹好请重新测量");
        unchar key;
       while(1)
       {
         KeyScan();
         key=GetKey1();
         if(key==ENTER_KEY)
         {
           i=0;
          Str_8x16(3,0,"                "); 
           break;//继续重试当前电池的测量
         }
         else if(key==ESC_KEY)           //放弃对当前电池测量因为这个电池可能已经坏了接着测下面的电池。
         {
           i =0;
       //先占据文件相应的位置等将来进行单独测量。
       s[0] = year/1000+0x30;
       s[1] = (year%1000)/100+0x30;
       s[2] = ((year%1000)%100)/10+0x30;
       s[3] = ((year%1000)%100)%10+0x30;    
       s[4]=month/10+0x30;
       s[5]= month%10+0x30;
       s[6]= day/10+0x30;
       s[7]=day%10+0x30;
       s[8]='D';
       s[9]='A';
       s[10]='T'; 
       for (unchar j=0;j<8;j++)
         Temp[j]=0;
          AppendData(s,Temp,8);    
       if(Index < pGrpHead->BatNumbers)
       {
         Index++;
        Str_8x16(3,0,"跳过测量下一只      "); 
       }
       else
       {
                //测量完毕;
            Str_8x16(1,0,"整组测量完毕");
            Delay_ms(2000);
            POWROFF_CY;
            MenuStatus =3;
            return;         

       }
       s[0] = Index/1000+0x30;
       s[1] = (Index%1000)/100+0x30;
       s[2] = ((Index%1000)%100)/10+0x30;
       s[3] = ((Index%1000)%100)%10+0x30;         
       s[4] = 0;
       Str_8x16(0,12,s); 
       DispFanBai(0,12,4);

           
         }
           
       }
      // break;
      }
     // break;
     }

   }


        


   
   
   
  
 default:
   break;
 } 
}
Exemplo n.º 4
0
  //**************************8
  // 1.3.4 基准内阻。          
  //功能: 设置基准内阻。
  //*************************          
void SetResLevel(void )
{
  unchar s[10];

  float f;

  
 switch(MenuStatus)
 {
 case 2:
     if(CURPATH.CurrentDirStarClusID !=0)
       {
         CURPATH.CurrentDirStarClusID = 0;
       } 
       Str_8x16(1, 0,"添加基准内阻" ); 
      if((ReadFile("CONFIG  TXT", Temp, 24,4)!=0xff))//取出系统默认的基准内阻
       {
  /*       
  unchar *p =(unchar*)&f;         
         *p++=Temp[0];
         *p++=Temp[1];
         *p++=Temp[2];
         *p++=Temp[3];         
 */        
         memcpy(&f,Temp,4);
         memcpy(s,&f,4);
      //   *s=*(unchar*)&f;这种方法不可取只能用memcpy 或一字节一字节的手动存取如上面注释掉的部分。

         sprintf((char*)s,"%f",f);
 
          Str_8x16(1,0,s);
         
         DispFanBai(1,0,4);
         MenuStatus=1000;
         
       }
       else
       {
         //配置文件不存在。
         return;
         
       }     
   break;
 case 1000:
         switch(GetKey1())
         {
         case ENTER_KEY:
           break;
         case UP_KEY:
        
           break;
         case DOWN_KEY:
           break;
         case ESC_KEY:
           break;
         default:
           break; 
         }  
   break;
 default:
   break;
   
 } 
}
Exemplo n.º 5
0
void SetVoltLevel(void)

{
        unchar s[5];
        switch(MenuStatus)
        {
        case 2:
 
       if(CURPATH.CurrentDirStarClusID !=0)
       {
         CURPATH.CurrentDirStarClusID = 0;
       } 
       Str_8x16(1, 0,"添加电压等级" ); 
      if((ReadFile("CONFIG  TXT", Temp, 22,2)!=0xff))//取出系统默认的电压等级
       {
         s[0] = *(unint*)Temp/1000+0x30;         
         s[1] = (*(unint*)Temp%1000)/100+0x30;
         s[2] = ((*(unint*)Temp%1000)%100)/10+0x30;
         s[3] = ((*(unint*)Temp%1000)%100)%10+0x30;
         s[4] = '\0';
         if(((unint)Temp !=2)||((unint)Temp !=6)||((unint)Temp !=12))
         {  
         Str_8x16(1,0, "非法的电压等级");
         return;
         }
         Str_8x16(1,0, Temp);
         if(*(unint*)Temp ==2) Index =0;
         if((unint)Temp[0]==6 ) Index = 1;
         if((unint)Temp[0]==12) Index =2;
         
         DispFanBai(1,0,4);
         MenuStatus=1000;
         
       }
       else
       {
         //配置文件不存在。
         return;
         
       }  
        
          
          break;
        case 1000:
         switch(GetKey1())
         {
         case ENTER_KEY:
        if(ModefyModel ==0) 
        {
          if(ModifyFile("CONFIG  TXT", &Temp[Index],64+CurrentBatGrp*64+16, 2) !=0xff)
          {
            Str_8x16(1,0,"设置已经保存成功");
            return;
          }
          
        }
           return;
           //break;
         case UP_KEY:
          if (Index ==2)
            Index =0;
           else
            Index++;
           s[0] = BatVoltLevel[Index]/10;
           s[1] = BatVoltLevel[Index]%10;
           s[2] = 0;
           Str_8x16(1,0,s);
           DispFanBai(1,0,2);
           break;
         case DOWN_KEY:
           if (Index ==0)
            Index =2;
           else
            Index--;
           s[0] = BatVoltLevel[Index]/10;
           s[1] = BatVoltLevel[Index]%10;
           s[2] = 0;
           Str_8x16(1,0,s);
           DispFanBai(1,0,2);         
             
           break;
         case ESC_KEY:
           return;
           //break;
         default:
           break;          
          //break;          
          
     }
   }          
}
Exemplo n.º 6
0
//**************************************
//功能 :设置ip地址,子网掩码,网关
//************************************
void SetIp(void)
{
  unchar s[5];
 switch(MenuStatus)
 {
 case 2:
   if(CURPATH.CurrentDirStarClusID !=0)
   {
     CURPATH.CurrentDirStarClusID = 0;
   }
   unint32 offset;
   if(pCurrentMenu == &MyMenu[16])//如果这是设置IP地址。           
   {
    Str_8x16(0, 0,"IP地址设置" ); 
    offset =4;
   }
   if(pCurrentMenu == &MyMenu[17])//如果这是设置子网掩码。           
   {
    Str_8x16(0, 0,"子网掩码设置" );      
    offset=8;
   }
   if(pCurrentMenu == &MyMenu[18])//如果这是设置网关地址。           
   {
    Str_8x16(0, 0,"网关设置" ); 
    offset=12;
   }   
   if((ReadFile("CONFIG  TXT", Temp, offset,4)!=0xff))
   {
     //显示ip

     s[0] = Temp[0]/100+0x30;
     s[1] = (Temp[0]%100)/10+0x30;
     s[2] = (Temp[0]%100)%10+0x30;
     s[3]= '.';
     s[4] =0;
     Str_8x16(1, 0, s);
     
     s[0] = Temp[1]/100+0x30;
     s[1] = (Temp[1]%100)/10+0x30;
     s[2] = (Temp[1]%100)%10+0x30;
     s[3]= '.';
     s[4] = 0;
     Str_8x16(1, 4, s); 

     s[0] = Temp[2]/100+0x30;
     s[1] = (Temp[2]%100)/10+0x30;
     s[2] = (Temp[2]%100)%10+0x30;
     s[3]= '.';
     s[4] = 0;
     Str_8x16(1, 8, s); 

     s[0] = Temp[3]/100+0x30;
     s[1] = (Temp[3]%100)/10+0x30;
     s[2] = (Temp[3]%100)%10+0x30;
     s[3] = '\0';
     Str_8x16(1, 12, s);  
     //反白显示第一项。
     Index=0;
     DispFanBai(1,0,3);
     MenuStatus =1000;
     
   }
   
   else
   {
     //文件不存在提示文件不存在确定键返回;
    return; 
   }
   
       

   break;
 case 1000:
     switch(GetKey1())   
     {
       case ENTER_KEY:
         if(Index ==3)
         {
          //保存数据到sd卡并退到上级菜单。
           if(pCurrentMenu == &MyMenu[16])//如果这是设置IP地址。           
           {
             ModifyFile("CONFIG  TXT", Temp,4, 4);
             MenuStatus =3;
             return;
           }
           if(pCurrentMenu == &MyMenu[18])//如果这是设置网关地址。           
           {
             ModifyFile("CONFIG  TXT", Temp,12, 4);
             MenuStatus =3;
             return;
           }           
           if(pCurrentMenu == &MyMenu[17])//如果这是设置子网掩码还需知道子网掩码的合法性。
           {
             unint32 mask;
             mask=(unint32)&Temp[0];
             if(((mask-1)|mask)==0xffffffff)//(mask -1 | mask) ==  0xFFFFFFFF ,如果是TRUE就是子网掩码,是FALSE就不是子网掩码。
             {
               //是合法的子网掩码;保存退出。
               ModifyFile("CONFIG  TXT", Temp,8, 4);
               MenuStatus =3;
              return;
             }
             MenuStatus =3;
             return;//放弃不保存退出。
           }
 
           
         }
           

         else
         //改变反白显示的位置
           DispFanBai(1,Index*4,3); //取消原先的反白           
           Index++;
           DispFanBai(1,Index*4,3);//改为当前的反白           
         
         break;
        case UP_KEY:
          if(Temp[Index]==255)
          Temp[Index]=0;
          else
          Temp[Index]++; 
          s[0] = Temp[Index]/100+0x30;
          s[1] = (Temp[Index]%100)/10+0x30;
          s[2] = (Temp[Index]%100)%10+0x30;

          s[4] = '\0';
          Str_8x16(1, Index*4, s);
          DispFanBai(1,Index*4,3);          
          break;
        case DOWN_KEY:
          if(Temp[Index]==0)
            Temp[Index] = 255;
          else
            Temp[Index]--;
          s[0] = Temp[Index]/100+0x30;
          s[1] = (Temp[Index]%100)/10+0x30;
          s[2] = (Temp[Index]%100)%10+0x30;

          s[4] = '\0';
          Str_8x16(1, Index*4, s); 
          DispFanBai(1,Index*4,3);          
          break;
        case ESC_KEY:
          if(Index ==0)
          {
            
          }
 
         else if(Index==3)
          {
            ////放弃数据并退到上级菜单
           MenuStatus = 3;
           return; 
          }

          else
          { 
                     //改变反白显示的位置
            
           DispFanBai(1,Index*4,3); //取消原先的反白
           Index--; 
           DispFanBai(1,Index*4,3);//改为当前的反白
          } 
          break;
     default:
          break;
     }
   break;
 default:
   break;
 }
}
Exemplo n.º 7
0
  //**********************************************
  // 1.3.2功能 电池数量
  //功能:设置当前电池组的电池数量。           
  //******************************
   SetCurrentBatNumbers()
   {
        unchar s[5];
        switch(MenuStatus)
        {
        case 2:

     
          
       if(CURPATH.CurrentDirStarClusID !=0)
       {
         CURPATH.CurrentDirStarClusID = 0;
       } 
       Str_8x16(1, 0,"添加电池数量" ); 
      if(ReadFile("CONFIG  TXT", Temp, 20,2)!=0xff)
       {
         s[0] = (unint)Temp/1000+0x30;         
         s[1] = ((unint)Temp%1000)/100+0x30;
         s[2] = (((unint)Temp%1000)%100)/10+0x30;
         s[3] = (((unint)Temp%1000)%100)%10+0x30;
         s[4] = '\0';
         Str_8x16(1,0, Temp);
         DispFanBai(1,0,4);
         MenuStatus=1000;
         
       }
       else
       {
         //配置文件不存在。
       }  
        
          
          break;
        case 1000:
         switch(GetKey1())
         {
         case ENTER_KEY:
        if(ModefyModel ==0) 
        {
          if(ModifyFile("CONFIG  TXT", Temp,64+CurrentBatGrp*64, 2) !=0xff)
          {
            Str_8x16(1,0,"设置已经保存成功");
            return;
          }
          
        }
           return;
           //break;
         case UP_KEY:
           if((unint)Temp==9999)
             *(unint*)Temp=0;
           else
             (unint)Temp[0]++;
         s[0] =(unint) Temp/1000+0x30;         
         s[1] = ((unint)Temp%1000)/100+0x30;
         s[2] = (((unint)Temp%1000)%100)/10+0x30;
         s[3] = (((unint)Temp%1000)%100)%10+0x30;
         s[4] = '\0';
         Str_8x16(1,0, Temp);
         DispFanBai(1,0,4);           
           
           break;
         case DOWN_KEY:
           if((unint)Temp ==0)
             *(unint*)Temp=9999;
             else
              (unint)Temp[0]--;
         s[0] =(unint) Temp/1000+0x30;         
         s[1] = ((unint)Temp%1000)/100+0x30;
         s[2] = (((unint)Temp%1000)%100)/10+0x30;
         s[3] = (((unint)Temp%1000)%100)%10+0x30;
         s[4] = '\0';
         Str_8x16(1,0, Temp);
         DispFanBai(1,0,4);               
             
           break;
         case ESC_KEY:
           break;
         default:
           break;          
          //break;          
          
     }
   }        
 }        
Exemplo n.º 8
0
 void SetBatGrpNo(void)
 {
   unchar s[5];
   switch(MenuStatus)
   {
   case 2:
     if(ModefyModel ==0)
     {
       if(CURPATH.CurrentDirStarClusID !=0)
       {
         CURPATH.CurrentDirStarClusID = 0;
       } 
       Str_8x16(1, 0,"添加电池组编号" );
       if((ReadFile("CONFIG  TXT", Temp, 16,2)!=0xff))
       {
         s[0] = (unint)Temp/1000+0x30;         
         s[1] = ((unint)Temp%1000)/100+0x30;
         s[2] = (((unint)Temp%1000)%100)/10+0x30;
         s[3] = (((unint)Temp%1000)%100)%10+0x30;
         s[4] = '\0';
         
       }
     }
     if(ModefyModel ==1)
     {
       Str_8x16(1, 0,"编辑电池组编号" );
     }
     if(ModefyModel ==2)
     {
       Str_8x16(1, 0,"删除电池组编号" );
     }
      Temp[0] = 0;
      Temp[1] = 0;
      Temp[2] = 0;
      Temp[3] = 0;
      s[0] =0x30;
      s[1] =0x30;
      s[2] =0x30;
      s[3] =0x30;
      s[4] =0;
      Index=0;
      Str_8x16(1, 0,s );
      DispFanBai(1,0,1);
      MenuStatus = 1000;
      break;
   case 1000:
         switch(GetKey1())
         {
         case ENTER_KEY:
         if(ModefyModel ==0) 
        {
          if(AppendData("CONFIG  TXT", Temp, 2) !=0xff)
          {
            CurrentBatGrp =(unint)Temp;
            Str_8x16(1,0,"设置已经保存成功");
            return;
          }
          
        }
           return;
             
           //break;
         case UP_KEY:
            if((unint)Temp==9999)
              *(unint*)Temp = 0;
           else
             (unint)Temp[0]++;
         s[0] = (unint)Temp/1000+0x30;         
         s[1] = ((unint)Temp%1000)/100+0x30;
         s[2] = (((unint)Temp%1000)%100)/10+0x30;
         s[3] = (((unint)Temp%1000)%100)%10+0x30;
         s[4] = '\0';
         Str_8x16(1,0, Temp);
         DispFanBai(1,0,4); 

           
           
           break;
         case DOWN_KEY:
            if((unint)Temp ==0)
             *(unint*)Temp=9999;
             else
              (unint)Temp[0]--;
         s[0] = (unint)Temp/1000+0x30;         
         s[1] = ((unint)Temp%1000)/100+0x30;
         s[2] = (((unint)Temp%1000)%100)/10+0x30;
         s[3] = (((unint)Temp%1000)%100)%10+0x30;
         s[4] = '\0';
         Str_8x16(1,0 ,Temp);
         DispFanBai(1,0,4);      
           break;
         case ESC_KEY:

            
           
           break;
         default:
           break;
         } 
              break;  
         
         }     

   }
Exemplo n.º 9
0
 void SetPass(void)
 {
   unchar s[4];
   switch(MenuStatus)
   {
   case 2:
      Str_8x16(0, 0,"请输入新密码" );
      Temp[0] = 0;
      Temp[1] = 0;
      Temp[2] = 0;
      Temp[3] = 0;
      Index=0;
      
      MenuStatus = 1000;
      break;
   case 1000:
         switch(GetKey1())
         {
         case ENTER_KEY:
           
           break;
         case UP_KEY:
           if(Temp[Index] ==9)
             Temp[Index]=0;
            else 
           Temp[Index]++;
           s[0]=Temp[Index]+0x30;
           s[1]='\0';
           Str_8x16(1, Index, s);
           Delay_ms(500);
           s[0]='*';
           s[1]='\0';
           Str_8x16(1, Index, s);
           Dely_2s=0;           
           break;
         case DOWN_KEY:
           if(Temp[Index] ==0)
             Temp[Index]=9;
            else 
           Temp[Index]++;
           s[0]=Temp[Index]+0x30;
           s[1]='\0';
           Str_8x16(1, Index, s);
           Delay_ms(500);
           s[0]='*';
           s[1]='\0';
           Str_8x16(1, Index, s);
           Dely_2s=0;            
           break;
         case ESC_KEY:
           break;
         default:
           if(Dely_2s>=3)
           {
             if(Index ==3)
             {
               //保存密码并退出。
               
             }
             else
             {
               Index++;
             }  
           }
           break;
         }
     break;
   }   
   
 }
Exemplo n.º 10
0
//*************************************
//因为这个函数特殊并且应当属于菜单的一部分所以放到这里
//功能: 验证用户输入的密码的正确性。正确退出
//不正确就在里边循环;
//*******************************************
void PutInPass(void) 
{
  unchar s[5];
  switch(MenuStatus)
  {
  case 1:
    Str_8x16(1, 0,"请输入密码" );
      Temp[0] = 0;
      Temp[1] = 0;
      Temp[2] = 0;
      Temp[3] = 0;
      Index=0;
    MenuStatus = 2000;
    break;
  case 2000:
         switch(GetKey1())
         {
         case ENTER_KEY:
           break;
         case UP_KEY:
           if(Temp[Index] ==9)
             Temp[Index]=0;
            else 
           Temp[Index]++;
           s[0]=Temp[Index]+0x30;
           s[1]='\0';
           Str_8x16(1, Index, s);
           Delay_ms(500);
           s[0]='*';
           s[1]='\0';
           Str_8x16(1, Index, s);
           Dely_2s=0;             
           break;
         case DOWN_KEY:
           if(Temp[Index] ==0)
             Temp[Index]=9;
            else 
           Temp[Index]++;
           s[0]=Temp[Index]+0x30;
           s[1]='\0';
           Str_8x16(1, Index, s);
           Delay_ms(500);
           s[0]='*';
           s[1]='\0';
           Str_8x16(1, Index, s);
           Dely_2s=0;             
           break;
         case ESC_KEY:
           break;
         default:
           if(Dely_2s>=2)
           {
             if(Index ==3)
             {
               //判定密码正确否
               if((Temp[0]==1)&&(Temp[1]==2)&&(Temp[2]==3)&&(Temp[3]==4))
                  {
                    MenuStatus = 3;
                    return;
                  }
               else
               {
                Screen_Clear(); 
                MenuStatus = 1; 
                break;
               }
             }
             else
             {
               Index++;
             }  
           }
           break;           
         }    
    break;
  }
}
Exemplo n.º 11
0
void SetHHMMSS(void)
{
  unchar s[5];
 switch(MenuStatus)
 {
 case 2:
 
     Temp[0] =hour;
     s[0] = Temp[0]/10+0x30;
     s[1] = (Temp[0]%10)+0x30;
     s[2]= 0xcA;//时
     s[3] =0xB1;
     s[4]=0;
     Str_8x16(1, 0, s);
     Temp[1] =min;
     s[0] = Temp[1]/10+0x30;
     s[1] = (Temp[1]%10)+0x30;
     s[2]= 0xB7; //分
     s[3] =0xd6;
     s[4] = 0;
     Str_8x16(1, 4, s); 
     Temp[2] =sec;
     s[0] = Temp[2]/10+0x30;
     s[1] = (Temp[2]%10)+0x30;
     s[2]= 0xc3; //秒
     s[3]=0xeb;
     s[4] = 0;
     Str_8x16(1, 8, s); 


     //反白显示第一项。
     Index=0;
     DispFanBai(1,0,2);
     MenuStatus =1000;
     

      

   break;
 case 1000:
     switch(GetKey1())   
     {
       case ENTER_KEY:
         if(Index ==2)
         {
 
          hour=Temp[0];
          min =Temp[1];
          sec=Temp[2];
          MenuStatus = 3;
          return;
           
         }
           

         else
         //改变反白显示的位置
           DispFanBai(1,Index*4,2); //取消原先的反白           
           Index++;
           DispFanBai(1,Index*4,2);//改为当前的反白           
         
         break;
        case UP_KEY:
          if(Index ==0) //时
          {
          if(Temp[Index]==23)
          Temp[Index]=0;
          else
          Temp[Index]++; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }
          if(Index ==1)//分
          {
          if(Temp[Index]==59)
          Temp[Index]=0;
          else
          Temp[Index]++; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          } 
          if(Index ==2)//秒
          {
            
          if(Temp[Index]==59)
          Temp[Index]=0;
          else
          Temp[Index]++; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }            
          
          Str_8x16(1, Index*4, s);
          DispFanBai(1,Index*4,2);          
          break;
        case DOWN_KEY:
          if(Index ==0) //时
          {
          if(Temp[Index]==0)
          Temp[Index]=23;
          else
          Temp[Index]--; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }
          if(Index ==1)//分
          {
          if(Temp[Index]==0)
          Temp[Index]=59;
          else
          Temp[Index]--; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          } 
          if(Index ==2)//秒
          {
            
          if(Temp[Index]==0)
          Temp[Index]=59;
          else
          Temp[Index]--; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }            
          
          Str_8x16(1, Index*4, s);
          DispFanBai(1,Index*4,2); ;          
          break;
        case ESC_KEY:
          if(Index ==0)
          {
            
          }
 
         else if(Index==2)
          {
            ////放弃数据并退到上级菜单
           MenuStatus = 3;
           return; 
          }

          else
          { 
                     //改变反白显示的位置
            
           DispFanBai(1,Index*4,2); //取消原先的反白
           Index--; 
           DispFanBai(1,Index*4,2);//改为当前的反白
          } 
          break;
     default:
          break;
     }
   break;
 default:
   break;
 }
}
Exemplo n.º 12
0
void SetYYMMDD(void)
{
  unchar s[5];
 switch(MenuStatus)
 {
 case 2:
 
     Temp[0] =year-2000;
     s[0] = Temp[0]/10+0x30;
     s[1] = (Temp[0]%10)+0x30;
     s[2]= 0xc4;//年
     s[3] =0xea;
     s[4]=0;
     Str_8x16(1, 0, s);
     Temp[1] =month;
     s[0] = Temp[1]/10+0x30;
     s[1] = (Temp[1]%10)+0x30;
     s[2]= 0xd4;//月
     s[3] =0xc2;
     s[4] = 0;
     Str_8x16(1, 4, s); 
     Temp[2] =day;
     s[0] = Temp[2]/10+0x30;
     s[1] = (Temp[2]%10)+0x30;
     s[2]= 0xc8;//日
     s[3]=0xd5;
     s[4] = 0;
     Str_8x16(1, 8, s); 


     //反白显示第一项。
     Index=0;
     DispFanBai(1,0,2);
     MenuStatus =1000;
     

      

   break;
 case 1000:
     switch(GetKey1())   
     {
       case ENTER_KEY:
         if(Index ==2)
         {
 
          year=Temp[0]+2000;
          month =Temp[1];
          day=Temp[2];
          MenuStatus = 3;
          return;
           
         }
           

         else
         //改变反白显示的位置
           DispFanBai(1,Index*4,2); //取消原先的反白           
           Index++;
           DispFanBai(1,Index*4,2);//改为当前的反白           
         
         break;
        case UP_KEY:
          if(Index ==0) //年
          {
          if(Temp[Index]==99)
          Temp[Index]=0;
          else
          Temp[Index]++; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }
          if(Index ==1)//月
          {
          if(Temp[Index]==12)
          Temp[Index]=1;
          else
          Temp[Index]++; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          } 
          if(Index ==2)//日
          {
            
          if(Temp[Index]==MAX1())
          Temp[Index]=1;
          else
          Temp[Index]++; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }            
          
          Str_8x16(1, Index*4, s);
          DispFanBai(1,Index*4,2);          
          break;
        case DOWN_KEY:
          if(Index ==0) //年
          {
          if(Temp[Index]==0)
          Temp[Index]=99;
          else
          Temp[Index]--; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }
          if(Index ==1)//月
          {
          if(Temp[Index]==1)
          Temp[Index]=12;
          else
          Temp[Index]--; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          } 
          if(Index ==2)//日
          {
            
          if(Temp[Index]==1)
          Temp[Index]=MAX1();
          else
          Temp[Index]--; 
          s[0] = Temp[Index]/10+0x30;
          s[1] = (Temp[Index]%10)+0x30;
          s[2] = '\0';
          }            
          
          Str_8x16(1, Index*4, s);
          DispFanBai(1,Index*4,2); ;          
          break;
        case ESC_KEY:
          if(Index ==0)
          {
            
          }
 
         else if(Index==2)
          {
            ////放弃数据并退到上级菜单
           MenuStatus = 3;
           return; 
          }

          else
          { 
                     //改变反白显示的位置
            
           DispFanBai(1,Index*4,2); //取消原先的反白
           Index--; 
           DispFanBai(1,Index*4,2);//改为当前的反白
          } 
          break;
     default:
          break;
     }
   break;
 default:
   break;
 }
}
Exemplo n.º 13
0
void MenuFunction(void)
	{
	 unchar Chars;
	
	switch(MenuStatus)

		{
		  case 0:
			{
			 Chars=GetKey1();
			  if (Chars==ESC_KEY)
				{
				  Screen_Clear();
				  while(pCurrentMenu1->pBrothePrev!=NULL)//找到兄弟中的老大
				  pCurrentMenu1=pCurrentMenu1->pBrothePrev;

	 			           
					  while(pCurrentMenu1->pBrotheNext!=NULL) //显示出所有的兄弟菜单
					   {
					    if(CurrentPage==pCurrentMenu1->page) //只显示当前页的菜单项
                                            { 
        				     DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);
					   
                                            }
					     pCurrentMenu1=pCurrentMenu1->pBrotheNext;                                            
										      
					   }
                                    //反显CurentMenu;
                                   DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;      
				         
				    
				 MenuStatus=1;
				 
				}

			  break;
			}
		  case 1: 
			{
			  switch(GetKey1())
				{
             		case ENTER_KEY:

					Screen_Clear();
					if (pCurrentMenu->pSonMenu==NULL)
                                        {
					MenuStatus=2;
                                        break;
                                        }
					else 
				        {
                                         
                                         if(pCurrentMenu->CurrentOperation !=NULL)
                                         {
                                          pCurrentMenu->CurrentOperation();//执行下面有子菜单项,但是执行完此函数才能继续下面的菜单项的函数。一般都是密码相关的函数
                                          
                                         }
                                         
					pCurrentMenu=pCurrentMenu->pSonMenu;
                                        CurrentPage=pCurrentMenu->page;
					
				         pCurrentMenu1=pCurrentMenu;

					  while(pCurrentMenu1->pBrothePrev!=NULL)
						pCurrentMenu1=pCurrentMenu1->pBrothePrev;

					  while(pCurrentMenu1->pBrotheNext!=NULL)//显示出所有的兄弟菜单
					   {
					    if(CurrentPage==pCurrentMenu1->page) //只显示当前页的菜单项
                                            { 
					     DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);

                                            }
					     pCurrentMenu1=pCurrentMenu1->pBrotheNext;                                            
										      
					   }
			           //反显CurentMenu;
                                   if(CurrentPage==pCurrentMenu1->page)       
                                   DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);       
                                   DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;   
					}
					break;

			        case UP_KEY:
					if (pCurrentMenu->pBrothePrev!=NULL)
					      {
                                                
                                                
                                                // clr the  反白显示
					        DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;                                                                                                
                                                
                                    	        pCurrentMenu=pCurrentMenu->pBrothePrev;
                                                if(pCurrentMenu->page==CurrentPage)
                                                {  
			
                                                //使之反白显示
                                                DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;
                                                
                                                
                                                
                                                }
                                                else//菜单项到下一页去了
                                                {
                                                  Screen_Clear();
                                                  CurrentPage=pCurrentMenu->page;
                                                 
                                                  pCurrentMenu1=pCurrentMenu;
			                          while(pCurrentMenu1->pBrothePrev!=NULL)//找到兄弟中的老大
				                   pCurrentMenu1=pCurrentMenu1->pBrothePrev;

	 			           
					  while(pCurrentMenu1->pBrotheNext!=NULL) //显示出所有的兄弟菜单
					   {
					    if(CurrentPage==pCurrentMenu1->page) //只显示当前页的菜单项
                                            { 
					     DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);

                                            }
					     pCurrentMenu1=pCurrentMenu1->pBrotheNext;                                            
										      
					   }
                                    //反显CurentMenu;
                                            if(CurrentPage==pCurrentMenu1->page)                                        
                                            DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);  
                                            DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;                                                    
                                                 
                                                 
                                                }  
                                               
					      }
					       break;
					    
				case DOWN_KEY:
					
					if (pCurrentMenu->pBrotheNext!=NULL)
					      {
                                                // 去除反白显示
					        DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;                                                
					        pCurrentMenu=pCurrentMenu->pBrotheNext;
                                                if(pCurrentMenu->page==CurrentPage)
                                                {  
		                                 // 使之反白显示
                                                DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;                                                  
                                                }
                                                else//菜单项到下一页去了
                                                {
                                                 Screen_Clear();
                                                 CurrentPage=pCurrentMenu->page;
                                                 
                                                 pCurrentMenu1=pCurrentMenu;
			                    while(pCurrentMenu1->pBrothePrev!=NULL)//找到兄弟中的老大
				            pCurrentMenu1=pCurrentMenu1->pBrothePrev;

	 			           
					  while(pCurrentMenu1->pBrotheNext!=NULL) //显示出所有的兄弟菜单
					   {
					    if(CurrentPage==pCurrentMenu1->page) //只显示当前页的菜单项
                                            { 
					     DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);

                                            }
					     pCurrentMenu1=pCurrentMenu1->pBrotheNext;                                            
										      
					   }
                                    //反显CurentMenu;
                                   if(CurrentPage==pCurrentMenu1->page)       
                                   DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);       
                                   DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;                                                   
                                                 
                                                 
                                                }  
					      }

					       break;
				case ESC_KEY:
						
					if(pCurrentMenu->pFatheMenu!=NULL)
                                        {
                                          pCurrentMenu=pCurrentMenu->pFatheMenu;
                                          CurrentPage=pCurrentMenu->page;
                                          Screen_Clear();
                                          pCurrentMenu1=pCurrentMenu;
                                          
					  while(pCurrentMenu1->pBrothePrev!=NULL)
                                            pCurrentMenu1=pCurrentMenu1->pBrothePrev;
                                          
					  while(pCurrentMenu1->pBrotheNext!=NULL) //显示出所有的兄弟菜单
                                          {
					    if(CurrentPage==pCurrentMenu1->page) //只显示当前页的菜单项
                                            { 
                                              DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);
                                              
                                            }
                                            pCurrentMenu1=pCurrentMenu1->pBrotheNext;                                            
                                            
                                          }
                                          //反显CurentMenu;
                                          if(CurrentPage==pCurrentMenu1->page)
                                          DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);
                                          DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ; 
                                        }
                                          break;
				 

				
			    default: break;
					

				}
			break;

			}
 
		 case 2://执行程序;
                        
                     //   Screen_Clear();

			if((pCurrentMenu->CurrentOperation)!=NULL)  
                          (pCurrentMenu->CurrentOperation)();
                        //执行完应用程序就返回菜单;
                        else
			MenuStatus =3;
			 break;
                case 3://退出应用程序之后屏幕处理
                                  
				  Screen_Clear();
                                  pCurrentMenu1=pCurrentMenu;
                                  CurrentPage=pCurrentMenu->page;
		
                                  while(pCurrentMenu1->pBrothePrev!=NULL)//找到兄弟中的老大
				  pCurrentMenu1=pCurrentMenu1->pBrothePrev;

	 			           
					  while(pCurrentMenu1->pBrotheNext!=NULL) //显示出所有的兄弟菜单
					   {
					    if(CurrentPage==pCurrentMenu1->page) //只显示当前页的菜单项
                                            { 
        				     DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle);
					   
                                            }
					     pCurrentMenu1=pCurrentMenu1->pBrotheNext;                                            
										      
					   }
                                    //反显CurentMenu;
                                   if(CurrentPage==pCurrentMenu1->page)
                                    DispMenuTile(pCurrentMenu1->Horizon,pCurrentMenu1->MenuTitle); 
                                   DispFanBaiMenuTitle(pCurrentMenu->Horizon,pCurrentMenu->Width) ;      
				         
				    
				 MenuStatus=1;                    
                  break;
                case 1000:
			if((pCurrentMenu->CurrentOperation)!=NULL)  
                          (pCurrentMenu->CurrentOperation)();                  
                  break;
                case 2000:
	                if((pCurrentMenu->CurrentOperation)!=NULL)  
                          (pCurrentMenu->CurrentOperation)();                  
                  break;                  
                default:
                  break;
			

		
		}
         
	  
	}