display.c
上传用户:jndfzc
上传日期:2014-06-02
资源大小:325k
文件大小:149k
源码类别:

单片机开发

开发平台:

Others

  1. temp_Line=1;
  2. for(i=30;i<32;i++)
  3. {
  4.     if(select==i)
  5.            Bcd_show(0,temp_Erect, temp_Line*16,Channel_Ration_Flag.Temp[i],0,5,0,1);
  6.        else
  7.       Bcd_show(1,temp_Erect, temp_Line*16,Channel_Ration_Flag.Temp[i],0,5,0,1);
  8. temp_Line++;
  9. }
  10.           break;
  11.           default:break;
  12. }
  13.  Frame_Show(temp);
  14. }
  15. void YxTime_Value(void)
  16. {
  17.     if(L_Screen_state!=414)
  18.      {  
  19.        
  20.        L_Screen_state=414;
  21.                 menupage=0;
  22.         SubMenuPosition = 0;
  23.    
  24.        YxTime_Value_Show(menupage,100) ;
  25.        
  26.      }
  27.   if((Key_UP==0 )&&(L_Key_UP==1))
  28.      { 
  29.        L_Key_UP    = Key_UP;
  30.             
  31.        if( menupage== 0)  menupage = 1;
  32.        else                       menupage--;
  33.       
  34.     YxTime_Value_Show(menupage,100) ;
  35.    
  36.        } 
  37.     if((Key_DOWN==0 )&&(L_Key_DOWN==1))
  38.      { 
  39.        L_Key_DOWN  = Key_DOWN;
  40.             
  41.         if( menupage>= 1)  menupage = 0;
  42.        else                       menupage++;
  43.      
  44.        YxTime_Value_Show(menupage,100) ;
  45.     
  46.        }
  47.     
  48.    
  49.      if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  50.      {
  51.         Screen_state =41;
  52.         SubMenuPosition = 0;
  53.         L_Key_CANCEL = Key_CANCEL;
  54.      }
  55.      
  56.   if((Key_OK==0 )&&(L_Key_OK==1))
  57. {
  58.  L_Key_OK= Key_OK;
  59.  if(Flag_Password_True==1)
  60.                  Screen_state=4141;  
  61. else
  62.       Screen_state=110;
  63.  Returnto_Modify=36;
  64.  
  65. }
  66. }
  67. void YxTime_Value_Modify(void)
  68. {
  69. UC fast_step_flag;
  70. UC Fast_Step=10;
  71.     if( L_Screen_state != 4141 )
  72.      {  
  73.          L_Screen_state = 4141;
  74.          SubMenuPosition=0;
  75.         menupage=0;
  76.        YxTime_Value_Show(menupage,SubMenuPosition) ;
  77.          
  78.      }
  79.      if(((Key_ADD==0)&&(L_Key_ADD==1))||(Key_ADD_Long==1))
  80.      {
  81.       L_Key_ADD=Key_ADD;
  82.       if(Key_ADD_Long==1) {Key_ADD_Long=0;fast_step_flag=1;}
  83.  if((SubMenuPosition>-1)&&(SubMenuPosition<=10))
  84.   {
  85.   if(System_config[SubMenuPosition+YX1_TIME]>=YXTime_Limit.Up_Limit) 
  86. System_config[SubMenuPosition+YX1_TIME]=YXTime_Limit.Low_Limit;
  87. else if(fast_step_flag==1)
  88. System_config[SubMenuPosition+YX1_TIME]+=YXTime_Limit.step_Size*Fast_Step;
  89. System_config[SubMenuPosition+YX1_TIME]+=YXTime_Limit.step_Size;
  90.   }
  91.   else  
  92. Screen_state=0;
  93.     
  94.      fast_step_flag=0;
  95.       YxTime_Value_Show(menupage,SubMenuPosition) ;
  96.      }
  97.      
  98.      
  99. if(((Key_SUB==0)&&(L_Key_SUB==1))||(Key_SUB_Long==1))
  100.      {
  101.      L_Key_SUB=Key_SUB;
  102.      if(Key_SUB_Long==1) {Key_SUB_Long=0;fast_step_flag=1;}
  103.  if((SubMenuPosition>-1)&&(SubMenuPosition<=10))
  104.   {
  105.   if((System_config[SubMenuPosition+YX1_TIME]<=YXTime_Limit.Low_Limit)||
  106.            (System_config[SubMenuPosition+YX1_TIME]>=YXTime_Limit.Up_Limit))
  107. System_config[SubMenuPosition+YX1_TIME]=YXTime_Limit.Up_Limit;
  108. else if(fast_step_flag==1)
  109. System_config[SubMenuPosition+YX1_TIME]-=YXTime_Limit.step_Size*Fast_Step;
  110. System_config[SubMenuPosition+YX1_TIME]-=YXTime_Limit.step_Size;
  111.   }
  112. else  
  113. Screen_state=0;
  114. fast_step_flag=0;
  115.       YxTime_Value_Show(menupage,SubMenuPosition) ;
  116.      }
  117.       
  118.    if((Key_UP==0)&&(L_Key_UP==1))
  119.      {
  120.       L_Key_UP=Key_UP;
  121. if(SubMenuPosition==0)
  122.      SubMenuPosition=10;
  123. else 
  124. SubMenuPosition--;
  125.  if((SubMenuPosition==10)||(SubMenuPosition==5))
  126.   { if(menupage==0) menupage = 1;
  127.         else                       menupage--;
  128.       
  129.       
  130.   }
  131.        
  132. YxTime_Value_Show(menupage,SubMenuPosition) ;
  133.      }
  134.      
  135.      
  136.    if((Key_DOWN==0)&&((L_Key_DOWN==1)))
  137.      {
  138.       L_Key_DOWN=Key_DOWN;
  139.      
  140.   if(SubMenuPosition>=10)
  141.      SubMenuPosition=0;
  142. else 
  143. SubMenuPosition++;
  144.         if((SubMenuPosition==6)||(SubMenuPosition==0))
  145.   {  if( menupage>= 1)  menupage = 0;
  146.         else                       menupage++;
  147.        
  148.   }
  149.          
  150. YxTime_Value_Show(menupage,SubMenuPosition) ;
  151.   
  152.      } 
  153.  
  154. if((Key_OK==0)&&(L_Key_OK==1))
  155.      {
  156.       L_Key_OK=Key_OK;
  157.         Screen_state =41;
  158.        Returnto_Save=30;
  159.        SubMenuPosition=0;
  160.        SubMenuPosition_temp=0;
  161.      }
  162. }
  163. void YxTime_Value_Show(UC page,UC select)
  164. { UC i,temp=0;
  165.  cls();
  166. Logo_Title();
  167.        LCDPrintf( 0,0,0,"肆遥信参数",12);
  168.         for(i=0;i<6;i++)
  169.          LCDPrintf( 1,1,(i+1)*16,(char *)YxTime_Text[page*6+i],20);
  170.        
  171. switch(page)
  172.       {
  173. case 0:  
  174.             
  175.  for(i=0;i<6;i++)
  176.       {
  177.         if(select==i)
  178.         {
  179.            Bcd_show(0,6, ((i+1)*16),System_config[i+YX1_TIME],0,6,0,1);
  180.      }
  181.          else
  182.       {
  183.          Bcd_show(1,6, ((i+1)*16),System_config[i+YX1_TIME],0,6,0,1);
  184.       }
  185.    
  186.         }
  187.  temp=3;
  188.          break;
  189. case 1:  
  190.  for(i=6;i<11;i++)
  191.       {
  192.         if(select==i)
  193.         {
  194.         Bcd_show(0,6, ((i-6+1)*16),System_config[i+YX1_TIME],0,6,0,1);
  195.      }
  196.          else
  197.       {
  198.          Bcd_show(1,6, ((i-6+1)*16),System_config[i+YX1_TIME],0,6,0,1);
  199.       }
  200.    
  201.         }     
  202.    
  203.       temp=1;
  204.          break;
  205.       
  206. default: 
  207.            break;
  208.     }
  209. Frame_Show(temp);
  210. }
  211. //系统信息/端口信息
  212. void Comm_Information(void)
  213. {
  214.     if(L_Screen_state!=416)
  215.      {  
  216.       
  217.        L_Screen_state=416;
  218.     SubMenuPosition = 0;  menupage=0;
  219.           switch(System_config[RS485_BAUD])
  220. {
  221. case 2400:
  222. Rs485_Baud=0;
  223. break;
  224. case 4800:
  225. Rs485_Baud=1;
  226. break;
  227. case 9600:
  228. Rs485_Baud=2;
  229. break;
  230. case 19200:
  231. Rs485_Baud=3;
  232. break;
  233. default:
  234. Rs485_Baud=2;
  235. break;
  236. }
  237.         Comm_Information_Show(menupage,100) ;
  238.         
  239.      }
  240.      if((Key_UP==0 )&&(L_Key_UP==1))
  241.      { 
  242.        L_Key_UP    = Key_UP;
  243.    
  244.        if( menupage== 0) { menupage = 1;}
  245.        else                      { menupage=0;}
  246.        
  247.            Comm_Information_Show(menupage,100) ;
  248.        
  249.        } 
  250.     if((Key_DOWN==0 )&&(L_Key_DOWN==1))
  251.      { 
  252.        L_Key_DOWN  = Key_DOWN;
  253.       if( menupage>= 1) { menupage = 0;}
  254.        else                     {  menupage=1;}
  255.       
  256.            Comm_Information_Show(menupage,100) ;
  257.    
  258.        }
  259.    
  260.      if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  261.      {
  262.         Screen_state =41;
  263.         SubMenuPosition = 0;
  264.         L_Key_CANCEL = Key_CANCEL;
  265.      }
  266. if((Key_OK==0 )&&(L_Key_OK==1))
  267. {
  268.  L_Key_OK= Key_OK;
  269.  if(Flag_Password_True==1)
  270.                   Screen_state=4161;
  271.    else 
  272.       Screen_state=110;
  273.  Returnto_Modify=38;
  274.  
  275. }
  276. }
  277. void Comm_Information_Modify(void)//
  278. {
  279.     if( L_Screen_state != 4161 )
  280.      {  
  281.          L_Screen_state = 4161;
  282.          menupage=0;
  283.          SubMenuPosition=0;
  284.        Comm_Information_Show(menupage,SubMenuPosition) ;
  285.            
  286.      }
  287.      if((Key_ADD==0)&&(L_Key_ADD==1))
  288.      {
  289.       L_Key_ADD=Key_ADD;
  290.      switch(SubMenuPosition)
  291.       {
  292. case 0:  
  293. if(System_config[RS485_ADDR]>254) System_config[RS485_ADDR]=0;
  294. else System_config[RS485_ADDR]++;
  295. break;
  296. case 1:  
  297. switch(System_config[RS485_BAUD])
  298. {
  299. case 2400:
  300. Rs485_Baud=0;
  301. break;
  302. case 4800:
  303. Rs485_Baud=1;
  304. break;
  305. case 9600:
  306. Rs485_Baud=2;
  307. break;
  308. case 19200:
  309. Rs485_Baud=3;
  310. break;
  311. default:
  312. Rs485_Baud=2;
  313. break;
  314. }
  315. if (Rs485_Baud>=3) Rs485_Baud=0;
  316. else Rs485_Baud++;
  317.                      break;
  318.   
  319. default: 
  320.           break;
  321.       };
  322.       Comm_Information_Show(menupage,SubMenuPosition) ;
  323.      }
  324.      
  325.      
  326. if((Key_SUB==0)&&(L_Key_SUB==1))
  327.      {
  328.      L_Key_SUB=Key_SUB;
  329. switch(SubMenuPosition)
  330.       {
  331. case 0:  
  332. if(System_config[RS485_ADDR]==0) System_config[RS485_ADDR]=255;
  333. else System_config[RS485_ADDR]--;
  334. break;
  335. case 1:  
  336. switch(System_config[RS485_BAUD])
  337. {
  338. case 2400:
  339. Rs485_Baud=0;
  340. break;
  341. case 4800:
  342. Rs485_Baud=1;
  343. break;
  344. case 9600:
  345. Rs485_Baud=2;
  346. break;
  347. case 19200:
  348. Rs485_Baud=3;
  349. break;
  350. default:
  351. Rs485_Baud=2;
  352. break;
  353. }
  354. if (Rs485_Baud==0) Rs485_Baud=3;
  355. else Rs485_Baud--;
  356.         
  357.          break;
  358. default: 
  359.           break;
  360.       };
  361.       Comm_Information_Show(menupage,SubMenuPosition) ;
  362.      }
  363.      
  364.       
  365.    if((Key_UP==0)&&(L_Key_UP==1))
  366.      {
  367.       L_Key_UP=Key_UP;
  368. if(SubMenuPosition==0)
  369.      SubMenuPosition=1;
  370. else 
  371. SubMenuPosition--;
  372.       Comm_Information_Show(menupage,SubMenuPosition) ;
  373.        
  374.      }
  375.          
  376.    if((Key_DOWN==0)&&((L_Key_DOWN==1)))
  377.      {
  378.       L_Key_DOWN=Key_DOWN;
  379.      
  380.   if(SubMenuPosition>=1)
  381.      SubMenuPosition=0;
  382. else 
  383. SubMenuPosition++;
  384.       
  385.       Comm_Information_Show(menupage,SubMenuPosition) ;
  386.        
  387.      } 
  388.       
  389.   
  390. if((Key_OK==0)&&(L_Key_OK==1))
  391.      {
  392.       L_Key_OK=Key_OK;
  393.      
  394.        Screen_state =41;
  395.        Returnto_Save=30;
  396.        SubMenuPosition=0;
  397.        SubMenuPosition_temp=0;
  398.      } 
  399. }
  400. void Comm_Information_Show(UC page,UC select)
  401. { UC i,temp=0;
  402. UC temp_Erect=8,temp_Line=2;
  403. cls();Logo_Title();
  404.         LCDPrintf( 0,0,0,"肆端口信息",12);
  405.     for(i=0;i<6;i++)
  406.           LCDPrintf( 1,1,(i+1)*16,(char *)Comm_Text[i+6*page],20);
  407. switch(page)
  408. { case 0:
  409. temp=3;
  410.  for(i=0;i<5;i++)
  411. LCDPrintf(1, (i+temp_Erect),temp_Line*16, "     ", 5);
  412.  if(select==0)
  413.    Bcd_show(0, temp_Erect, temp_Line*16, System_config[RS485_ADDR], 0, 5, 0,1);
  414.       else 
  415.    Bcd_show(1, temp_Erect, temp_Line*16, System_config[RS485_ADDR], 0, 5, 0,1);
  416.   
  417.    for(i=0;i<5;i++)
  418. LCDPrintf(1, (i+9), 48, "     ", 5);
  419. switch(Rs485_Baud)
  420.          {
  421.          case 0:
  422.          System_config[RS485_BAUD]=2400;
  423.             
  424.          break;
  425.          case  1:
  426.          System_config[RS485_BAUD]=4800;
  427.         
  428.          break;
  429.          case  2:
  430.          System_config[RS485_BAUD]=9600;
  431.         
  432.          break;
  433.          case  3:
  434.          System_config[RS485_BAUD]=19200;
  435.           
  436.          break;
  437. default: 
  438.           break;
  439.          }
  440. temp_Line++;
  441.  if(select==1)
  442. Bcd_show(0, temp_Erect, temp_Line*16,  System_config[RS485_BAUD], 0, 5, 0,1);
  443.    else
  444.    Bcd_show(1, temp_Erect, temp_Line*16, System_config[RS485_BAUD], 0, 5, 0,1);
  445.     break;
  446.   default:break;
  447. }
  448. Frame_Show(temp);
  449. }
  450. //*****************时间设置****************************
  451. void   ReadTime(void)//用10进制格式
  452. {
  453.  if(realtime.second>59)  
  454.       realtime1.second=0;
  455.          else 
  456.           realtime1.second =realtime.second;
  457. if(realtime.minute>59)
  458. realtime1.minute=0;
  459.  else 
  460.                realtime1.minute= realtime.minute;
  461.       if( realtime.hour>23)
  462.    realtime1.hour=0;
  463.   else
  464.           realtime1.hour=realtime.hour;
  465.  if(realtime.day>31)
  466.   realtime1.day=1;
  467.   else
  468.         realtime1.day= realtime.day;
  469. if(realtime.month>12)
  470.  realtime1.month=1;
  471. else 
  472.          realtime1.month = realtime.month;
  473.        if(realtime.year>99) 
  474.      realtime1.year=04;
  475.     else
  476.             realtime1.year = realtime.year;
  477. }
  478. //------------------------时间状态条显示-----------------------------------
  479. void  State_Time_Show(void)
  480. {
  481. Bcd_show(1,1,112,realtime1.month,0,0,0,2);
  482.         LCDPrintf(1, 3, 112,"-",1);
  483.         Bcd_show(1,4,112,realtime1.day,0,0,0,2);
  484.         Bcd_show(1,10,112,realtime1.hour,0,0,0,2);
  485.         LCDPrintf(1, 12, 112, ":",1);
  486.         Bcd_show(1,13,112,realtime1.minute,0,0,0,2);
  487.         //if(System_Info.Charge>=17999)  LCDPrintf(1, 8, 112, "甸",1);//充电满
  488. // else  LCDPrintf(1, 8, 112, "倥",1);//充电未满
  489.          display_sqr(0,15,113,127,0x80,0x01); 
  490. }
  491. void Show_Time(UC select)
  492. {
  493.  if(select==0)
  494.      Bcd_show(0,5,72,realtime1.year,0,5,0,2);
  495.    else 
  496.      Bcd_show(1,5,72,realtime1.year,0,5,0,2);
  497.   
  498.    if(select==1) 
  499.     Bcd_show(0,8,72,realtime1.month,0,5,0,2);
  500.      else 
  501.    Bcd_show(1,8,72,realtime1.month,0,5,0,2);
  502.   
  503.    if(select==2) 
  504.    Bcd_show(0,11,72,realtime1.day,0,5,0,2);
  505.       else 
  506.    Bcd_show(1,11,72,realtime1.day,0,5,0,2);
  507.   
  508.    if(select==3)  
  509.    Bcd_show(0,4,88,realtime1.hour,0,5,0,2);
  510.       else 
  511.    Bcd_show(1,4,88,realtime1.hour,0,5,0,2);
  512.    if(select==4)  
  513.    Bcd_show(0,7,88,realtime1.minute,0,5,0,2);
  514.    else
  515.    Bcd_show(1,7,88,realtime1.minute,0,5,0,2);
  516.   
  517.    if(select==5)  
  518.    Bcd_show(0,10,88,realtime1.second,0,5,0,2);
  519.    else 
  520.    Bcd_show(1,10,88,realtime1.second,0,5,0,2);
  521.  
  522.   
  523. }
  524. //系统信息/时间修改
  525. void  Clock_Modify(void)
  526. {
  527. UC i;
  528.    
  529.     if( L_Screen_state != 418 )
  530.      {  
  531.          L_Screen_state = 418;
  532.          SubMenuPosition=0;
  533.          for(i=4;i<7;i++)
  534. LCDPrintf(1, 1,( i*16), "              ", 20);
  535. LCDPrintf(1, 3, 72, "20  -  -   ", 20);
  536. LCDPrintf(1, 3, 88, "   :  :  ", 20);
  537.   
  538.      display_sqr(1, 14, 64,110,0x80,0x03);
  539.      LineX(1, 112, 14);
  540.          
  541.          Show_Time(SubMenuPosition) ;       
  542.      }
  543.      if((Key_ADD==0)&&(L_Key_ADD==1))
  544.      {
  545.       L_Key_ADD=Key_ADD;
  546.       time_modify_flag=1;
  547.      switch(SubMenuPosition)
  548.       {
  549. case 0:  
  550. if(realtime1.year>=99) realtime1.year=4;
  551. else realtime1.year++;
  552. break;
  553. case 1:  
  554.         
  555.          if(realtime1.month>=12) realtime1.month=1;
  556. else realtime1.month++;
  557.          break;
  558. case 2:  
  559.         
  560.          if(realtime1.day>=31) realtime1.day=1;
  561. else realtime1.day++;
  562.          break;
  563. case 3:  
  564.         
  565.          if(realtime1.hour>=23) realtime1.hour=0;
  566. else realtime1.hour++;
  567.          break;
  568.          case 4:  
  569.         
  570.          if(realtime1.minute>=59) realtime1.minute=0;
  571. else realtime1.minute++;
  572.          break;
  573.          case 5:  
  574.         
  575.          if(realtime1.second>=59) realtime1.second=0;
  576. else realtime1.second++;
  577.          break;
  578. default: 
  579.           break;
  580.       };
  581.       Show_Time(SubMenuPosition) ;
  582.      }
  583.      
  584.      
  585. if((Key_SUB==0)&&(L_Key_SUB==1))
  586.      {
  587.      L_Key_SUB=Key_SUB;
  588.       time_modify_flag=1;
  589. switch(SubMenuPosition)
  590.       {
  591. case 0:  
  592. if(realtime1.year<=4) realtime1.year=99;
  593. else realtime1.year--;
  594. break;
  595. case 1:
  596.          if(realtime1.month<=1) realtime1.month=12;
  597. else realtime1.month--;
  598.          break;
  599. case 2: 
  600.          if(realtime1.day<=1) realtime1.day=31;
  601. else realtime1.day--;
  602.              break;
  603. case 3: 
  604.          if(realtime1.hour==0) realtime1.hour=23;
  605. else realtime1.hour--;
  606.                 break;
  607.          case 4:  
  608.          if(realtime1.minute==0) realtime1.minute=59;
  609. else realtime1.minute--;
  610.                  break;
  611.          case 5: 
  612.         
  613.          if(realtime1.second==0) realtime1.second=59;
  614. else realtime1.second--;
  615.                   break;
  616. default: 
  617.           break;
  618.       };
  619.       Show_Time(SubMenuPosition) ;
  620.      }
  621.      
  622.       
  623.    if((Key_LEFT==0)&&(L_Key_LEFT==1))
  624.      {
  625.       L_Key_LEFT=Key_LEFT;
  626. if(SubMenuPosition==0)
  627.      SubMenuPosition=5;
  628. else 
  629. SubMenuPosition--;
  630. Show_Time(SubMenuPosition) ;
  631.      }
  632.      
  633.      
  634.    if((Key_RIGHT==0)&&((L_Key_RIGHT==1)))
  635.      {
  636.       L_Key_RIGHT=Key_RIGHT;
  637.   if(SubMenuPosition==5)
  638.      SubMenuPosition=0;
  639. else 
  640. SubMenuPosition++;
  641. Show_Time(SubMenuPosition) ;
  642.      } 
  643.       
  644.     if((Key_CANCEL==0)&&(L_Key_CANCEL==1))
  645.      {
  646.       L_Key_CANCEL=Key_CANCEL;
  647.         Screen_state =41;
  648.         SubMenuPosition=0;
  649.         time_modify_flag=0;
  650.      }
  651. if((Key_OK==0)&&(L_Key_OK==1))
  652.      {
  653.       L_Key_OK=Key_OK;
  654.         Screen_state =120;
  655.        Returnto_Save=6;
  656.        SubMenuPosition=0;
  657.        SubMenuPosition_temp=0;
  658.      } 
  659. }
  660. void ConfigValue_Init(void)
  661. {
  662.     UC i;
  663.     if(L_Screen_state!=419)
  664.      {  
  665.        
  666.        L_Screen_state=419;
  667.           Dlg_Frame_View();
  668.            LCDPrintf(1, 3, 72, "写系统配置", 10);
  669.      }
  670.     if((Key_OK==0 )&&(L_Key_OK==1))
  671.      {  
  672.          L_Key_OK = Key_OK;
  673.          Screen_state =119;
  674.          Returnto_Save=133;
  675.  for(i=0;i<CONFIG_NUM;i++)
  676.   System_config[i]=Config_Init[i];
  677.          SubMenuPosition = 0;
  678.          SubMenuPosition_temp=0;
  679.         
  680. }
  681. }
  682. //*********************************系统信息结束****************************************
  683. //--------------------------------------控制操作---------------------------------------------------------
  684. //遥分操作
  685. //遥合操作
  686. //开出传动
  687. //压板投退
  688. //与PC通信
  689. //装置复归
  690. void  System_Test(void)
  691. {
  692.    UC i;
  693.     if(L_Screen_state!=51)
  694.      {  
  695.        
  696.        L_Screen_state=51;
  697.        
  698. cls();
  699. Logo_Title();
  700.        LCDPrintf( 0,0,0,(char *)(&mainMenu[4][0]),10);
  701.        for(i=0;i<6;i++)
  702.          LCDPrintf( 1,1,(i+1)*16,(char *)secondMenu_systest[i],20);
  703.    SubMenuPosition = Father2_MenuPosition;
  704. if(SubMenuPosition>5) SubMenuPosition=0;
  705.        LCDPrintf( 0,1,(SubMenuPosition+1)*16,(char *)secondMenu_systest[SubMenuPosition],20);
  706.          Frame_Show(0);
  707.      }
  708.     if((Key_UP==0 )&&(L_Key_UP==1))
  709.      { 
  710.        L_Key_UP    = Key_UP;
  711.        LCDPrintf( 1,1,(SubMenuPosition+1)*16,(char *)secondMenu_systest[SubMenuPosition],20);
  712.        
  713.        if( SubMenuPosition == 0) SubMenuPosition = 5;
  714.        else                       SubMenuPosition--;
  715.        
  716.        LCDPrintf( 0,1,(SubMenuPosition+1)*16,(char *)secondMenu_systest[SubMenuPosition],20);
  717.         Frame_Show(0);      
  718.      } 
  719.     if((Key_DOWN==0 )&&(L_Key_DOWN==1))
  720.      { 
  721.        L_Key_DOWN  = Key_DOWN;
  722.        LCDPrintf( 1,1,(SubMenuPosition+1)*16,(char *)secondMenu_systest[SubMenuPosition],20);
  723.        
  724.        if( SubMenuPosition == 5) SubMenuPosition = 0;
  725.        else                       SubMenuPosition++;
  726.        
  727.        LCDPrintf( 0,1,(SubMenuPosition+1)*16,(char *)secondMenu_systest[SubMenuPosition],20);
  728.        Frame_Show(0);
  729.      } 
  730.     if((Key_OK==0 )&&(L_Key_OK==1))
  731.      {
  732.      L_Key_OK= Key_OK;
  733. Father2_MenuPosition=SubMenuPosition;
  734. Father3_MenuPosition=0;
  735. Father3_page=0;
  736.      SubMenuPosition_temp=0;
  737.      switch(SubMenuPosition)
  738.      {
  739.     
  740.     
  741.      case 0://开出传动
  742.     
  743.      case 1: //压板投退
  744.     
  745.      case 2://与PC通信
  746.     
  747.      case 3://装置复归
  748.      Screen_state=513+SubMenuPosition;
  749.      break;
  750.      default: break;
  751.      }
  752.      }
  753.     if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  754.      {
  755.         Screen_state =1;
  756. Flag_Password_True=0;
  757.         SubMenuPosition = 0;
  758.         L_Key_CANCEL = Key_CANCEL;
  759.      }
  760. }
  761. //控制操作/遥分操作
  762. //控制操作/遥合操作
  763. //控制操作/开出传动
  764. //控制操作/开出传动
  765. void Output_Test(void)
  766. {
  767. if(L_Screen_state!=513)
  768. {
  769.        L_Screen_state=513;
  770.        SubMenuPosition = 0;
  771.        SubMenuPosition_temp=0;
  772.        menupage=0; 
  773.    Outport_Test_Show(menupage, 100);
  774. }
  775. if((Key_UP==0 )&&(L_Key_UP==1))
  776.      { 
  777.        L_Key_UP    = Key_UP;
  778.             
  779.        if( menupage== 0)  menupage = 2;
  780.        else                       menupage--;
  781.       
  782.    Outport_Test_Show(menupage, 100);
  783.    
  784.        } 
  785.     if((Key_DOWN==0 )&&(L_Key_DOWN==1))
  786.      { 
  787.        L_Key_DOWN  = Key_DOWN;
  788.             
  789.         if( menupage>= 2)  menupage = 0;
  790.        else                       menupage++;
  791.      
  792.    Outport_Test_Show(menupage, 100);
  793.     
  794.        }
  795.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  796.      {
  797.          Screen_state =51;
  798.          SubMenuPosition = 0;
  799.          L_Key_CANCEL = Key_CANCEL;
  800.      }
  801.  if((Key_OK==0 )&&(L_Key_OK==1))
  802.      {
  803.        
  804.          L_Key_OK= Key_OK;
  805.   if(Flag_Password_True==1)
  806.    Screen_state=5131;
  807.       else
  808.                 Screen_state=110;//密码管理
  809.         Returnto_Modify=50;
  810.          
  811.      }
  812. }
  813. void Output_Test_Modify(void)
  814. {
  815. if(L_Screen_state!=5131)
  816. {
  817.  
  818.        L_Screen_state=5131;
  819.        SubMenuPosition = Father3_MenuPosition;
  820.        SubMenuPosition_temp=0;
  821.        menupage=Father3_page;
  822. if(menupage>2)menupage=0;
  823. if(SubMenuPosition>14)  SubMenuPosition=0;
  824.     Outport_Test_Show(menupage, SubMenuPosition);
  825. }
  826.      if((Key_UP==0)&&(L_Key_UP==1))
  827.      {
  828.       L_Key_UP=Key_UP;
  829. if(SubMenuPosition==0)
  830.      SubMenuPosition=14;
  831. else 
  832. SubMenuPosition--;
  833.  if(( SubMenuPosition==5)||(SubMenuPosition==11)||(SubMenuPosition==14))
  834.   { if(menupage==0) menupage = 2;
  835.         else       menupage--;
  836.       
  837.        }
  838. Outport_Test_Show(menupage, SubMenuPosition);
  839.      }
  840.     if((Key_DOWN==0 )&&(L_Key_DOWN==1))
  841.      { 
  842.        L_Key_DOWN  = Key_DOWN;
  843. if(SubMenuPosition>=14)
  844.      SubMenuPosition=0;
  845. else 
  846. SubMenuPosition++;
  847. if(( SubMenuPosition==0)||(SubMenuPosition==6)||(SubMenuPosition==12))
  848.   { if(menupage==2) menupage = 0;
  849.         else         menupage++;
  850.       
  851.        }
  852. Outport_Test_Show(menupage, SubMenuPosition);
  853.      } 
  854.      if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  855.      {
  856.         Screen_state =51;
  857.         SubMenuPosition = 0;
  858.         L_Key_CANCEL = Key_CANCEL;
  859.      }
  860.      
  861.  if((Key_OK==0 )&&(L_Key_OK==1))
  862.      {
  863.        
  864.          L_Key_OK= Key_OK;
  865.         Father3_MenuPosition=SubMenuPosition;
  866. Father3_page=menupage;
  867.          Output_Select_Flag=1;
  868.      if(SubMenuPosition<=15)
  869.    Returnto_Save=SubMenuPosition+12;
  870.               Screen_state =119;
  871.                 SubMenuPosition_temp=0;
  872.          
  873.      }
  874.  
  875. }
  876. void   Outport_Test_Show(UC page,UC select)
  877. { UC i,temp;
  878.  cls();
  879. Logo_Title();
  880.        LCDPrintf( 0,0,0,"伍开出传动",10);
  881.      //  LineY(7, 16, 111,0x05);
  882. switch(page)
  883. {
  884. case 0:
  885. temp=3;
  886. for(i=0;i<6;i++)
  887. {
  888. if(select==i)
  889.  LCDPrintf( 0,1,(i+1)*16,(char *)ThirdMenu_output1[i],20);
  890. else
  891. LCDPrintf( 1,1,(i+1)*16,(char *)ThirdMenu_output1[i],20);
  892. }
  893. break;
  894. case 1:
  895. temp=3;
  896. for(i=6;i<12;i++)
  897. {
  898. if(select==i)
  899.   LCDPrintf( 0,1,(i-6+1)*16,(char *)ThirdMenu_output1[i],20);
  900. else
  901.  LCDPrintf( 1,1,(i-6+1)*16,(char *)ThirdMenu_output1[i],20);
  902. }
  903. break;
  904. case 2:
  905. temp=1;
  906. for(i=12;i<18;i++)
  907. {
  908. if(select==i)
  909.   LCDPrintf( 0,1,(i-12+1)*16,(char *)ThirdMenu_output1[i],20);
  910. else
  911.  LCDPrintf( 1,1,(i-12+1)*16,(char *)ThirdMenu_output1[i],20);
  912. }
  913. break;
  914. default: break;
  915. }
  916.         Frame_Show(temp);
  917. }
  918. void  Yaban_Control(void)
  919. {
  920. if(L_Screen_state!=514)
  921. {
  922.         L_Screen_state=514;
  923.      
  924.        SubMenuPosition = 0;  menupage=0;
  925.      
  926.        YYB_Modify_Flag.YYB_temp=System_Info.YB_Soft;
  927.      
  928.         Yaban_Control_Show(menupage,100) ;      
  929.         
  930. }
  931.     
  932.  if((Key_UP==0 )&&(L_Key_UP==1))
  933.      { 
  934.        L_Key_UP    = Key_UP;
  935.              
  936.        if( menupage== 0)  menupage = 3;
  937.         else              menupage--;
  938.        Yaban_Control_Show(menupage,100) ;
  939.        
  940.        } 
  941.     if((Key_DOWN==0 )&&(L_Key_DOWN==1))
  942.      { 
  943.        L_Key_DOWN  = Key_DOWN;
  944.      
  945.         if( menupage>= 3)  menupage = 0;
  946.          else                       menupage++;
  947.       Yaban_Control_Show(menupage,100) ;
  948.    
  949.        }
  950.    
  951.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  952.      {
  953.         Screen_state =51;
  954.          SubMenuPosition = 0;
  955.          L_Key_CANCEL = Key_CANCEL;
  956.      }
  957.  if((Key_OK==0 )&&(L_Key_OK==1))
  958.      {
  959.    
  960.          L_Key_OK= Key_OK;
  961. if(Flag_Password_True==1)
  962. {Screen_state=5141;}
  963.      else
  964.              Screen_state=110;//密码管理
  965.         Returnto_Modify=51;
  966.          
  967.      }
  968. }
  969. void  Yaban_Control_Modify(void)
  970. { UI temp_bit;
  971. if( L_Screen_state != 5141)
  972.      {  
  973.          L_Screen_state = 5141;
  974.          
  975.         SubMenuPosition=0;
  976.          menupage=0;SubMenuPosition_temp=0;
  977.        Yaban_Control_Show(menupage,SubMenuPosition) ;
  978.       
  979. }
  980.         if(((Key_ADD==0)&&(L_Key_ADD==1))||((Key_SUB==0)&&(L_Key_SUB==1)))
  981.          
  982.      {
  983.       L_Key_ADD=Key_ADD;
  984.  L_Key_SUB=Key_SUB;
  985.   { temp_bit=YB_D(SubMenuPosition);
  986.      if((YYB_Modify_Flag.YYB_temp&temp_bit)==temp_bit) 
  987. YYB_Modify_Flag.YYB_temp=YYB_Modify_Flag.YYB_temp&(~temp_bit);
  988. else YYB_Modify_Flag.YYB_temp=YYB_Modify_Flag.YYB_temp|temp_bit;
  989.   }
  990. Yaban_Control_Show(menupage,SubMenuPosition) ;
  991.      }
  992.      if((Key_UP==0)&&(L_Key_UP==1))
  993.      {
  994.       L_Key_UP=Key_UP;
  995. if(SubMenuPosition==0)
  996.      SubMenuPosition=19;
  997. else 
  998. SubMenuPosition--;
  999.  if((SubMenuPosition%5==4))
  1000.   { if(menupage==0) {menupage = 3;}
  1001.         else       {   menupage--;}
  1002.              
  1003.   }
  1004.        
  1005. Yaban_Control_Show(menupage,SubMenuPosition) ;
  1006.  
  1007.      }
  1008.      
  1009.      
  1010.    if((Key_DOWN==0)&&((L_Key_DOWN==1)))
  1011.      {
  1012.       L_Key_DOWN=Key_DOWN;
  1013.      
  1014.   if(SubMenuPosition>=19)
  1015.      SubMenuPosition=0;
  1016. else 
  1017. SubMenuPosition++;
  1018.         if((SubMenuPosition%5==0))
  1019.   {  if( menupage>= 3)  menupage = 0;
  1020.         else                       menupage++;
  1021.         }
  1022.         Yaban_Control_Show(menupage,SubMenuPosition) ; 
  1023.        
  1024.      } 
  1025.   if((Key_OK==0)&&(L_Key_OK==1))
  1026.      {
  1027.       L_Key_OK=Key_OK;
  1028.      
  1029.        Screen_state =119;
  1030.        Returnto_Save=51;
  1031.        SubMenuPosition=0;
  1032.        SubMenuPosition_temp=0;
  1033.      } 
  1034.  
  1035. }
  1036. /*++++++++++++++++++++++++++++++++====*/
  1037. void Yaban_Control_Show(UC page,UC select )//压板
  1038. {
  1039. UC  temp_Erect=13,temp_Line=0;
  1040. UC   i,temp=0;
  1041.   cls();Logo_Title();
  1042.         LCDPrintf( 0,0,0,"伍压板投退",10);
  1043.    for(i=0;i<6;i++)
  1044.          LCDPrintf( 1,1,(i+1)*16,(char *)ThirdMenu_yaban[i+6*page],20);
  1045. switch(page)
  1046.       {
  1047. case 0:  
  1048. temp=3;
  1049. temp_Line=2;
  1050. for(i=0;i<5;i++)
  1051.         { 
  1052.         if(select==i)
  1053.              Control_Word_Show(0,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1054.        else
  1055.        Control_Word_Show(1,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1056. temp_Line++;
  1057.      }
  1058.            
  1059.           break;
  1060. case 1:  
  1061. temp=2;
  1062. temp_Line=2;
  1063.     for(i=5;i<10;i++)
  1064.         { 
  1065.         if(select==i)
  1066.              Control_Word_Show(0,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1067.        else
  1068.        Control_Word_Show(1,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1069. temp_Line++;
  1070. }
  1071. break;
  1072. case 2:  
  1073. temp=2;
  1074. temp_Line=2;
  1075.   for(i=10;i<15;i++)
  1076.         { 
  1077.         if(select==i)
  1078.              Control_Word_Show(0,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1079.        else
  1080.        Control_Word_Show(1,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1081. temp_Line++;
  1082. }
  1083. break;
  1084. case 3:  
  1085. temp=1;
  1086. temp_Line=2;
  1087.  for(i=15;i<20;i++)
  1088.         { 
  1089.         if(select==i)
  1090.              Control_Word_Show(0,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1091.        else
  1092.        Control_Word_Show(1,temp_Erect, temp_Line*16,(YYB_Modify_Flag.YYB_temp&YB_D(i)) , 4);
  1093. temp_Line++;
  1094. }
  1095. break;
  1096. default: 
  1097.            break;
  1098.            
  1099.     }
  1100. Frame_Show(temp);
  1101. }
  1102. void  PC_Com(void)
  1103. {
  1104. //int i;
  1105. if(L_Screen_state!=515)
  1106. {
  1107.  cls();
  1108.        L_Screen_state=515;
  1109.        
  1110. Logo_Title();
  1111.        LCDPrintf( 0,0,0,"伍与PC通信",10);
  1112.          Comm_bmp_View();
  1113.        if(SubMenuPosition>4) SubMenuPosition = 0;
  1114.        
  1115.        PC_Comm_Flag=1;/*与pc通信调试标志*/
  1116.        Frame_Show(0);
  1117. }
  1118.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1119.      {
  1120.         Screen_state =51;
  1121.          SubMenuPosition = 0;
  1122.          PC_Comm_Flag=0;/*与pc通信调试标志*/
  1123.          L_Key_CANCEL = Key_CANCEL;
  1124.      }
  1125. }
  1126. void System_Reset(void)
  1127. {
  1128. if(L_Screen_state!=516)
  1129. {  
  1130. L_Screen_state=516;
  1131. Dalog_Info_Show(0, 3, 0);
  1132.    }
  1133.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1134.      {
  1135.         Screen_state =51;
  1136.       
  1137.          L_Key_CANCEL = Key_CANCEL;
  1138.      }
  1139.  if((Key_OK==0 )&&(L_Key_OK==1))
  1140.      {
  1141.        
  1142.          L_Key_OK= Key_OK;
  1143.          MMI_DSP_Instruction(0x1300, 0, 0);
  1144.          SubMenuPosition=0;SubMenuPosition_temp=0;
  1145. menupage=0;Father1_MenuPosition=0;
  1146. Father2_MenuPosition=0;
  1147. Father3_MenuPosition=0;
  1148. Father2_page=0;
  1149. Father3_page=0;
  1150. Screen_state=0;
  1151.                
  1152.      }
  1153.  
  1154. }
  1155. //*****************************控制操作结束**************************************
  1156. //---------------------------------帮助信息----------------------------------------------------
  1157. //产品简介
  1158. //使用指南
  1159. //联系方式
  1160. //功能配置
  1161. //版本信息
  1162. //系统状态
  1163. void  System_Help(void)
  1164. {
  1165.   
  1166.     if(L_Screen_state!=61)
  1167.      {  
  1168.       
  1169.        L_Screen_state=61;
  1170.    SubMenuPosition=0;
  1171.        System_Help_show(SubMenuPosition);
  1172.      }
  1173.     if((Key_UP==0 )&&(L_Key_UP==1))
  1174.      { 
  1175.        L_Key_UP    = Key_UP;
  1176.        
  1177.        if( SubMenuPosition == 0) SubMenuPosition = 5;
  1178.        else                       SubMenuPosition--;
  1179.        System_Help_show(SubMenuPosition);
  1180.        
  1181.       
  1182.      } 
  1183.     if((Key_DOWN==0 )&&(L_Key_DOWN==1))
  1184.      { 
  1185.        L_Key_DOWN  = Key_DOWN;
  1186.        
  1187.        if( SubMenuPosition == 5) SubMenuPosition = 0;
  1188.        else                       SubMenuPosition++;
  1189.          System_Help_show(SubMenuPosition);
  1190.       
  1191.        
  1192.      } 
  1193.       if((Key_OK==0 )&&(L_Key_OK==1))
  1194.      {  
  1195.         L_Key_OK = Key_OK;
  1196.    //    Father2_MenuPosition=SubMenuPosition;
  1197. if(SubMenuPosition<6)
  1198. Screen_state =611+SubMenuPosition;
  1199.         
  1200.       }
  1201.     if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1202.      {
  1203.         Screen_state =1;
  1204.         SubMenuPosition = 0;
  1205.         L_Key_CANCEL = Key_CANCEL;
  1206.      }
  1207. }
  1208. void  System_Help_show(UC select)
  1209. {      UC  i;
  1210.         cls();
  1211. Logo_Title();
  1212.        LCDPrintf( 0,0,0,(char *)(&mainMenu[5][0]),10);
  1213.        for(i=0;i<6;i++)
  1214.          LCDPrintf( 1,1,(i+1)*16,(char *)secondMenu_syshelp[i],20);
  1215.     for(i=0;i<6;i++)
  1216. if(select==i)
  1217.                      LCDPrintf( 0,1,(i+1)*16,(char *)secondMenu_syshelp[i],20);
  1218.        else
  1219.                          LCDPrintf( 1,1,(i+1)*16,(char *)secondMenu_syshelp[i],20);
  1220. }
  1221. Frame_Show(0);
  1222. }
  1223. void Production_Introduction(void)
  1224. { UC i;
  1225.  if(L_Screen_state!=611)
  1226.      {  
  1227.        cls();
  1228.        L_Screen_state=611;
  1229. Logo_Title();
  1230. LCDPrintf(0,0,0,"陆产品简介",12);
  1231.        menupage=0;
  1232.        for(i=0;i<6;i++)
  1233.          LCDPrintf( 1,1,(i+1)*16,(char *)Production_Text[i],20);
  1234.          
  1235.       Frame_Show(0);
  1236.         }
  1237.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1238.      {
  1239.         Screen_state =61;
  1240.        menupage= 0;
  1241.         L_Key_CANCEL = Key_CANCEL;
  1242.      }
  1243. }
  1244. void User_Manual(void)
  1245. { UC i;
  1246.  if(L_Screen_state!=612)
  1247.      {  
  1248.        cls();
  1249.        L_Screen_state=612;
  1250. Logo_Title();
  1251. LCDPrintf(0,0,0,"陆使用指南",12);
  1252.        
  1253.        for(i=0;i<6;i++)
  1254.          LCDPrintf( 1,1,(i+1)*16,(char *)User_Manual_Text[i],20);
  1255.          
  1256.       Frame_Show(0);
  1257.      }
  1258.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1259.      {
  1260.         Screen_state =61;
  1261.         SubMenuPosition = 0;
  1262.         L_Key_CANCEL = Key_CANCEL;
  1263.      }
  1264. }
  1265. void Help_Tel(void)
  1266. { UC i;
  1267.  if(L_Screen_state!=613)
  1268.      {  
  1269.        cls();
  1270.        L_Screen_state=613;
  1271. Logo_Title();
  1272. LCDPrintf(0,0,0,"陆联系方式",12);
  1273.        
  1274.        for(i=0;i<6;i++)
  1275.          LCDPrintf( 1,1,(i+1)*16,(char *)Help_Tel_Text[i],20);
  1276.          
  1277.       Frame_Show(0);
  1278.      }
  1279.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1280.      {
  1281.         Screen_state =61;
  1282.         SubMenuPosition = 0;
  1283.         L_Key_CANCEL = Key_CANCEL;
  1284.      }
  1285. }
  1286. //帮助信息/功能配置
  1287. void Function_Introduction(void)
  1288. {
  1289. UC i,temp=0;
  1290.  if(L_Screen_state!=614)
  1291.      {  
  1292.        cls();
  1293.        L_Screen_state=614;
  1294. Logo_Title();
  1295. LCDPrintf(0,0,0,"肆功能配置",12);
  1296.        menupage=0;
  1297.        for(i=0;i<6;i++)
  1298.          LCDPrintf( 1,1,(i+1)*16,(char *)Function_Text[i],20);
  1299.          
  1300.       Frame_Show(3);
  1301.         }
  1302.  if((Key_UP==0)&&(L_Key_UP==1))
  1303.      {
  1304.       L_Key_UP=Key_UP;
  1305. if(menupage==0)
  1306.      menupage=1;
  1307. else 
  1308. menupage--;
  1309. cls();
  1310.       Logo_Title();
  1311. LCDPrintf(0,0,0,"肆功能配置",12);
  1312. switch (menupage)
  1313. {
  1314. case 0:
  1315.  temp=3;
  1316.  break;
  1317. case 1:
  1318. temp=1;
  1319.  break;
  1320. case 2:
  1321.  
  1322. case 3: 
  1323. temp=1;
  1324.  break;
  1325. default:break;
  1326. }
  1327.   for(i=0;i<6;i++)
  1328.   LCDPrintf( 1,1,(i+1)*16,(char *)Function_Text[i+menupage*6],20);
  1329.  Frame_Show(temp);
  1330.      }
  1331.      
  1332.      
  1333.    if((Key_DOWN==0)&&((L_Key_DOWN==1)))
  1334.      {
  1335.       L_Key_DOWN=Key_DOWN;
  1336.       cls();
  1337.       Logo_Title();
  1338. LCDPrintf(0,0,0,"陆产品简介",12);
  1339.  if(menupage>=1)
  1340.      menupage=0;
  1341. else 
  1342. menupage++;
  1343. switch (menupage)
  1344. {
  1345. case 0:
  1346.  temp=3;
  1347.  break;
  1348. case 1:
  1349.  temp=1;
  1350.  break;
  1351. case 2:
  1352. case 3: 
  1353. temp=1;
  1354.  break;
  1355. default:break;
  1356. }
  1357.   for(i=0;i<6;i++)
  1358.   LCDPrintf( 1,1,(i+1)*16,(char *)Function_Text[i+menupage*6],20);
  1359.  Frame_Show(temp);
  1360.      } 
  1361.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1362.      {
  1363.         Screen_state =61;
  1364.        menupage= 0;
  1365.         L_Key_CANCEL = Key_CANCEL;
  1366.      }
  1367. }
  1368. //系统信息/版本信息
  1369. void Version_Show(void)
  1370. {
  1371.  UC i;
  1372.     if(L_Screen_state!=615)
  1373.      {  
  1374.        cls();
  1375.        L_Screen_state=615;
  1376.        
  1377. Logo_Title();
  1378. LCDPrintf(0,0,0,"肆版本信息",12);
  1379.      for(i=0;i<5;i++)
  1380.               LCDPrintf( 1,1,(i+1)*16,(char *)Version_Text[i],20);
  1381.       LCDPrintf( 1,7,2*16,(char *)SoftInformation.Model,8);
  1382.        LCDPrintf( 1,7,3*16,(char *)SoftInformation.Ver,6);
  1383.      Bcd_show(1,5, 4*16, SoftInformation.Year, 0, 0, 0, 2);
  1384. Bcd_show(1,8, 4*16,  SoftInformation.Month, 0, 0, 0, 2);
  1385. Bcd_show(1,11, 4*16, SoftInformation.Day, 0, 0, 0, 2);
  1386.     Frame_Show(0);
  1387.      }
  1388.        if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1389.      {
  1390.         Screen_state =61;
  1391.         SubMenuPosition = 0;
  1392.         L_Key_CANCEL = Key_CANCEL;
  1393.      }
  1394.     
  1395. }
  1396. //*************************系统状态****************************************
  1397. void System_State_Show(void)
  1398. {UC temp_Line=1;
  1399.     if(L_Screen_state!=616)
  1400.      {  
  1401.      L_Screen_state=616;
  1402.         cls();
  1403. Logo_Title();
  1404. LCDPrintf(0,0,0,"肆系统状态",12);
  1405.  LCDPrintf( 1,1,temp_Line*16,(char *)System_State_Text[0],20);
  1406.  temp_Line++;
  1407.      /*读取系统状态*/
  1408.  if((System_Info.SYS_Statue&0x01)==0x01)//初始化异常
  1409.   {temp_Line++;
  1410.   LCDPrintf( 1,1,temp_Line*16,(char *)System_State_Text[2],20);
  1411.   }
  1412.   else if((System_Info.SYS_Statue&0x02)==0x02)//系统参数异常
  1413.          {temp_Line++;
  1414.   LCDPrintf( 1,1,temp_Line*16,(char *)System_State_Text[3],20);
  1415.   }
  1416.         else if((System_Info.SYS_Statue&0x04)==0x04)//定值区错
  1417.          {temp_Line++;
  1418.   LCDPrintf( 1,3,temp_Line*16,(char *)System_State_Text[4],20);
  1419.   }
  1420. else if((System_Info.SYS_Statue&0x10)==0x10)//rom出错
  1421.          {temp_Line++;
  1422.   LCDPrintf( 1,1,temp_Line*16,(char *)System_State_Text[5],20);
  1423.   }
  1424. else   //正常
  1425. {temp_Line++;
  1426.   LCDPrintf( 1,3,temp_Line*16,(char *)System_State_Text[1],20);
  1427.   }
  1428.          Frame_Show(0);
  1429.      }
  1430.        if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1431.      {
  1432.         Screen_state =61;
  1433.         SubMenuPosition = 0;
  1434.         L_Key_CANCEL = Key_CANCEL;
  1435.      }
  1436.     
  1437. }
  1438. //++++++++++++++++++++++++实时运行处理++++++++++++++++++++++++++++++++++
  1439. //时间状态条刷新、面板复归按键处理、刷新标志
  1440. //新的soe处理
  1441. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+
  1442. void RUN_Process(void)
  1443. {
  1444.  
  1445. WrPortE08(LED,(System_Info.LED_Statue|System_Info.MMI_Statue));//点运行灯
  1446. if(time_modify_flag==0)//修改时间标志
  1447.         ReadTime();
  1448.       if(New_Information_Flag==1) //£新的SOE
  1449.        {
  1450.        New_Information_Flag=0;
  1451.        Screen_state=10000;
  1452. System_Info.MMI_Statue=0x00;
  1453.        L_Screen_state=0;
  1454.        }
  1455.       if(ucsigned_1000ms_flag==1)
  1456.        {
  1457.        ucsigned_1000ms_flag=0;
  1458.        update_flag1=1;
  1459.         State_Time_Show();
  1460.       
  1461.        }
  1462.       if(ucsigned_60s==1)  /*5min清除背光*/
  1463.        {
  1464.        ucsigned_60s=0;
  1465.      System_Info.MMI_Statue=0x80;
  1466.       }
  1467.       if((Key_FUGUI==0)&&(L_Key_FUGUI==1))//装置复归
  1468.        {
  1469.         L_Key_FUGUI= Key_FUGUI;
  1470.        MMI_DSP_Instruction(0x1300, 0, 0);
  1471.        SubMenuPosition=0;SubMenuPosition_temp=0;
  1472. menupage=0;Father1_MenuPosition=0;
  1473. Father2_MenuPosition=0;
  1474. Father3_MenuPosition=0;
  1475. Father2_page=0;
  1476. Father3_page=0;
  1477. Screen_state=0;
  1478.        }
  1479. }
  1480. //++++++++++++++++++++++++新信息显示++++++++++++++++++++
  1481. void New_Information(void)
  1482. { UC i;
  1483.  if(L_Screen_state!=10000)
  1484.      {  
  1485.        cls();
  1486.        L_Screen_state=10000;
  1487. Logo_Title();
  1488. LCDPrintf(0,0,0,"新信息",12);
  1489.        
  1490.        for(i=0;i<6;i++)
  1491.          LCDPrintf( 1,1,(i+1)*16,(char *)LookSoe_Text[i],20);
  1492.         Bcd_show(1,9, 1*16, SOE_Buf_Show0.num, 0, 0, 0, 2);
  1493. Bcd_show(1,5, 2*16, SOE_Buf_Show0.year, 0, 0, 0, 2);
  1494. Bcd_show(1,8, 2*16, SOE_Buf_Show0.mon, 0, 0, 0, 2);
  1495. Bcd_show(1,11, 2*16, SOE_Buf_Show0.day, 0, 0, 0, 2);
  1496. Bcd_show(1,3, 3*16, SOE_Buf_Show0.hour, 0, 0, 0, 2);
  1497. Bcd_show(1,6, 3*16, SOE_Buf_Show0.min, 0, 0, 0, 2);
  1498. Bcd_show(1,9, 3*16,  SOE_Buf_Show0.sec, 0, 0, 0, 2);
  1499. Bcd_show(1,12, 3*16, SOE_Buf_Show0.msec, 0, 0, 0, 2);
  1500. LCDPrintf( 1,6,4*16,(char *)&Soe_Info_Text[(UC)(Check_SoeTable(SOE_Buf_Show0.num))][0],8);
  1501. LCDPrintf( 1,2,5*16,(char *)&Soe_Info_Text[(UC)(Check_SoeTable(SOE_Buf_Show0.num))][8],12);
  1502. if( SOE_Buf_Show0.stu==0x02) 
  1503. LCDPrintf( 1,6,6*16,"发生",6);
  1504.  else if( SOE_Buf_Show0.stu==0x01)
  1505.   LCDPrintf( 1,6,6*16,"消失",6);
  1506.   
  1507.       Frame_Show(0);
  1508.      }
  1509.  if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1510.      {
  1511.         Screen_state =1;
  1512.         SubMenuPosition = 0;
  1513.         L_Key_CANCEL = Key_CANCEL;
  1514.      }
  1515. }
  1516. //+++++++++++++++++++++++++++状态条显示++++++++++++++++++++++++++++++
  1517. void Frame_Show(UC select)
  1518. {
  1519.        State_Time_Show();
  1520.        
  1521.         switch(select)
  1522.         {
  1523.         case 0:
  1524.         break;
  1525.         case 1://up
  1526.         LCDPrintf(1, 7, 112, "仩",1);
  1527.         break;
  1528.         case 2://up-down
  1529.         LCDPrintf(1, 7, 112, "肿",1);
  1530.         break;
  1531.         case 3://up-down
  1532.         LCDPrintf(1, 7, 112, "虾",1);
  1533.         break;
  1534.         default:break;
  1535.         }
  1536.      
  1537.          display_sqr(0,15,16,111,0x80,0x01);//画框
  1538.         display_sqr(0,15,113,127,0x80,0x01); 
  1539.         
  1540. }
  1541. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1542. //
  1543. // 系统管理部分(密码管理、定值操作等)
  1544. //
  1545. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1546. //            系统信息/密码修改(输入密码)
  1547. void     Password_Manager(void)
  1548. {
  1549. UC i;
  1550. if( L_Screen_state != 110 )
  1551.      {  
  1552.          L_Screen_state = 110;
  1553.          PassWordNum = 0;
  1554.  PASSWord_temp=0;  
  1555.          PASSWord=System_Info.Password1;
  1556.          if(PassWordchanged==0) //输入旧密码
  1557.       {
  1558.         Dalog_Info_Show(0, 0, 0);
  1559.              
  1560. }
  1561. else //输入新密码
  1562. {
  1563.            for(i=3;i<7;i++)
  1564. LCDPrintf(1, 1,( i*16), "              ", 20);
  1565.           Dalog_Info_Show(0, 1, 0);
  1566.       
  1567. }
  1568.      }
  1569. if((Key_UP==0 )&&(L_Key_UP==1))//----------0
  1570.     {
  1571.      L_Key_UP=Key_UP;
  1572.        if(PassWordNum<6)
  1573.        {
  1574.        PASSWord_temp = PASSWord_temp<<4; 
  1575.  PASSWord_temp = PASSWord_temp|0x1;
  1576.        PassWordNum++;
  1577.        ViewPassword(PassWordNum);
  1578.        }
  1579.       
  1580.     }
  1581.    
  1582.  if((Key_DOWN==0 )&&(L_Key_DOWN==1))//--------1
  1583.      { 
  1584.        L_Key_DOWN  = Key_DOWN;
  1585.     
  1586.        if(PassWordNum<6)
  1587.        {
  1588.        PASSWord_temp = PASSWord_temp<<4; 
  1589.        PASSWord_temp = PASSWord_temp|0x2;
  1590.        PassWordNum++;
  1591.        ViewPassword(PassWordNum);
  1592.        }
  1593.        
  1594.     }
  1595. if((Key_LEFT==0)&&(L_Key_LEFT==1))//-------3
  1596.     {
  1597.      L_Key_LEFT = Key_LEFT;
  1598.        if(PassWordNum<6)
  1599.        {
  1600.       
  1601.        PASSWord_temp = PASSWord_temp<<4; 
  1602.        PASSWord_temp = PASSWord_temp|0x3;
  1603.        PassWordNum++;
  1604.        ViewPassword(PassWordNum); 
  1605.        } 
  1606.        
  1607.     }
  1608.    
  1609. if((Key_RIGHT==0)&&(L_Key_RIGHT==1))//-------4
  1610.     {
  1611.      L_Key_RIGHT= Key_RIGHT;
  1612.        if(PassWordNum<6)
  1613.        {
  1614.        PASSWord_temp = PASSWord_temp<<4; 
  1615.        PASSWord_temp = PASSWord_temp|0x4;
  1616.        PassWordNum++;
  1617.        ViewPassword(PassWordNum);
  1618.        }
  1619.      }
  1620. if((Key_OK==0)&&(L_Key_OK==1))//----------2
  1621.     {
  1622.      L_Key_OK=Key_OK;
  1623.       if(PassWordNum<6)
  1624.        {
  1625.          PASSWord_temp = PASSWord_temp<<4; 
  1626.          PASSWord_temp = PASSWord_temp|0x5;
  1627.          PassWordNum++;
  1628.          ViewPassword(PassWordNum); 
  1629.        }
  1630.       else if(PassWordchanged==1)  //第一个新密码输入完成     
  1631.        {
  1632.        temp1 = PASSWord_temp;
  1633.            L_Screen_state = 0;
  1634.          PassWordchanged=2;
  1635.        }
  1636.       else if(PassWordchanged==2)   //第二个新密码输入完成    
  1637.        {
  1638.        if(temp1 == PASSWord_temp)
  1639.        {
  1640.       
  1641.        Screen_state =1102;
  1642. System_Info.Password10=PASSWord_temp;
  1643. PASSWord=PASSWord_temp;
  1644.          PassWordchanged=0;
  1645.        }
  1646.        else 
  1647.        {
  1648.        Screen_state =1101;
  1649.             PassWordchanged=0;
  1650.            }
  1651.        }    
  1652.       else if((PASSWord_temp != PASSWord)&&(PASSWord_temp != 0x123421)) //密码错误//公用密码:que ren
  1653.         Screen_state =1101;  
  1654.       else //密码正确       {
  1655.        {
  1656.                        Flag_Password_True=1;
  1657.     switch(Returnto_Modify)
  1658.       {
  1659. case 0:  
  1660. Screen_state =110;
  1661. L_Screen_state=0;
  1662. PassWordchanged=1;
  1663.           break;
  1664. case 6:
  1665. Screen_state =418; //时钟调整   
  1666.          break;
  1667. case 10:
  1668. Output_Select_Flag=1;
  1669.      Screen_state=119;
  1670.      Returnto_Save=10;
  1671. break;
  1672. case 11:
  1673. Output_Select_Flag=1;
  1674.      Screen_state=119;
  1675.      Returnto_Save=11;
  1676. break;
  1677. case 30:  
  1678.          Screen_state =4111;  //pt_value_modify
  1679.          break;
  1680. case 31:  
  1681. Screen_state =4121;//cT_value_modify
  1682.           break;
  1683. case 32:  
  1684. case 33: 
  1685. Screen_state =4131;//自动调整通道系数  
  1686. break;
  1687.          case 34:  
  1688. case 35: 
  1689.          Screen_state =4132;  //手动调整通道系数 
  1690.             break;
  1691. case 36:  
  1692.          Screen_state =4141;   //Yxtime_Value_modify     
  1693.        break;
  1694. case 37:  
  1695.          Screen_state =4151;   //DianDu_Value_modify     
  1696.        break;
  1697. case 38:  
  1698.          Screen_state =4161;  //端口信息修改    
  1699.          break;
  1700.          case 50:    //开出传动修改
  1701.          Screen_state =5131;      
  1702.          break;
  1703. case 51:  
  1704.          Screen_state =5141;      /*压板修改*/
  1705.          break;
  1706.          /*定值修改*/
  1707.          case  101:
  1708.          case  102:
  1709.      case  103:
  1710. case  104:
  1711. case  105:
  1712. case  106:
  1713. case  107:
  1714. case  108:
  1715. case  109:
  1716. case  110:
  1717. case  111:
  1718. case  112:
  1719. Screen_state=31020+Returnto_Modify;//过流
  1720.      break;
  1721.     
  1722.          case 130:
  1723.          Screen_state=315;//定值切换
  1724.      break;
  1725.      case 131:
  1726.      Screen_state=316;//定值复制
  1727.      break;
  1728.        case 132:
  1729.      Screen_state=317;//写定值xx
  1730.      break; 
  1731.       case 133:
  1732.      Screen_state=419;//写系统配值
  1733.      break;
  1734. default: 
  1735. Screen_state=0;
  1736.           break;
  1737.       };
  1738.         }
  1739.     }
  1740. }
  1741. void ViewPassword(UC num)
  1742. {
  1743.  UC  i;
  1744. for(i=0;i<num;i++)
  1745. LCDPrintf(1, (4+i), 80, "*", 1);
  1746.   
  1747.     
  1748. }
  1749. void PasswordModify_OK(void)
  1750. {
  1751.    if( L_Screen_state != 1102 )
  1752.      {  
  1753.          L_Screen_state = 1102;
  1754. MMI_DSP_Instruction(0x1000,0, 0);
  1755.              Dalog_Info_Show(0, 7, 0);
  1756. Command_Flag=1; 
  1757.        }
  1758.     if((Key_OK==0)&&(L_Key_OK==1))
  1759. {
  1760. L_Key_OK=Key_OK;
  1761.      Screen_state=41;
  1762.      SubMenuPosition = 0;
  1763.      }
  1764. if(Command_Flag>0)
  1765. if(Check_Instruction_Statue(0x1000)==0x00)
  1766.              {
  1767.              Dalog_Info_Show(0, 4, 0);
  1768.          PASSWord=System_Info.Password1=PASSWord_temp;
  1769.         Command_Flag=0;
  1770.       }
  1771.              else  if(Check_Instruction_Statue(0x1000)==0x22)
  1772.              {           Dalog_Info_Show(0,2, 0);
  1773. Command_Flag=0; 
  1774. }
  1775. }
  1776. }
  1777. ///密码修改/错误密码
  1778. void    PasswordModify_Erro(void)
  1779. {
  1780.   
  1781.    if( L_Screen_state != 1101 )
  1782.      {  
  1783.          L_Screen_state = 1101;
  1784. Dalog_Info_Show(0,2, 0);
  1785.    }
  1786.   
  1787. if((Key_CANCEL==0)&&(L_Key_CANCEL==1))
  1788. {
  1789. L_Key_CANCEL=Key_CANCEL;
  1790.           switch(Returnto_Modify)
  1791.       {
  1792. case 0:  
  1793. Screen_state =41; //错误返回系统信息
  1794. SubMenuPosition = 0;
  1795. break;
  1796. case 6://time MODIFY
  1797. //清修改标志
  1798. time_modify_flag=0;
  1799.      Screen_state=41;
  1800. break;
  1801. case 10:
  1802. case  11:
  1803. Screen_state=51;
  1804.      break;
  1805. case  30://PT参数
  1806.      Screen_state=411;
  1807.      break;
  1808. case  31://CT参数
  1809.      Screen_state=412;
  1810.      break;
  1811. case 32:  //调整通道系数
  1812.          case 33:  
  1813. case 34:  
  1814.          case 35:  
  1815.          Screen_state =413; 
  1816.          CT_Type=0;
  1817.          break;
  1818. case 36://yx_time
  1819. case 37://diandu
  1820.      case  38://Rs485端口信息
  1821.      Screen_state=414+Returnto_Modify-36;
  1822.      break;
  1823.     
  1824. /*开出传动*/
  1825.      case 50:
  1826.      Output_Select_Flag=0;
  1827.           Screen_state=513;
  1828.      break;
  1829. case  51://yaban
  1830.      Screen_state=514;
  1831.      break;
  1832.     
  1833.      /*定值修改*/
  1834.      case  101:
  1835. case  102:
  1836. case  103:
  1837. case  104:
  1838. case  105:
  1839.      case  106:
  1840. case  107:
  1841. case  108:
  1842. case  109:
  1843. case  110:
  1844. case  111:
  1845. case  112:
  1846.       Screen_state=31000+Returnto_Modify;//过流
  1847.      break;
  1848.     
  1849.      case 130:
  1850.      case  131:
  1851. case 132:
  1852.           Screen_state=31;//定值管理/切换定值组
  1853.      break;
  1854.      case  133:
  1855.      Screen_state=41;//定值管理/切换定值组
  1856.      break;
  1857.         
  1858. default: 
  1859. Screen_state=0;
  1860.           break;
  1861.       };
  1862. }
  1863. //系统信息/参数保存
  1864. void Data_Save(void)
  1865. {
  1866.  UC  i,temp_per1,temp_per2;
  1867. if( L_Screen_state != 120 )
  1868.      {  
  1869.         L_Screen_state = 120;
  1870.       Dalog_Info_Show(0, 5, 0);
  1871.          }
  1872. if((Key_OK==0)&&(L_Key_OK==1))
  1873.      {
  1874.       L_Key_OK=Key_OK;
  1875. Dalog_Info_Show(0, 6, 0);
  1876.       
  1877.      switch(Returnto_Save)
  1878.      {
  1879.      case 35://手动修改通道系数
  1880.        for(i=0;i<TD_NUM;i++)
  1881.          Channel_Ration_Flag.Temp[i]=Channel_Ration_Flag.Temp[i];
  1882.      Cmd_ArmToDsp=0x0e01;
  1883.       temp_per1=CT_Type;
  1884.       temp_per2=0;
  1885.       CmdReturn_Erro_Flag=413;
  1886.      CmdReturn_True_Flag=413;
  1887.      break;
  1888. case 6://时钟调整
  1889. Cmd_ArmToDsp=0x0210;
  1890.       temp_per1=0;
  1891.       temp_per2=0;
  1892.       CmdReturn_Erro_Flag=416;
  1893.      CmdReturn_True_Flag=41;
  1894.      break;
  1895.      default :
  1896.      break;
  1897.      }
  1898.      MMI_DSP_Instruction(Cmd_ArmToDsp, temp_per1, temp_per2);
  1899.      Dalog_Info_Show(0, 7, 0);
  1900.              Command_Flag=1;
  1901. }
  1902.   if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))
  1903.      {
  1904.                 L_Key_CANCEL = Key_CANCEL;
  1905.                 switch(Returnto_Save)
  1906.      { case 35:
  1907.        for(i=0;i<TD_NUM;i++)
  1908.      Channel_Ration_Flag.Temp[i]=Channel_Ration_Flag.Value[i];
  1909.      Cmd_ArmToDsp=0x0e02;
  1910.       temp_per1=CT_Type;
  1911.       temp_per2=0;
  1912.      Screen_state =413;
  1913.      break;
  1914.      case 6://time
  1915. //清修改标志
  1916. time_modify_flag=0;
  1917. Screen_state =41;
  1918.     
  1919.      break;
  1920.      default :
  1921.      break;
  1922.      }
  1923. // Returnto_Save=0;
  1924.            //   MMI_DSP_Instruction(Cmd_ArmToDsp, temp_per1, temp_per2);
  1925. // Dalog_Info_Show(0, 7, 0);
  1926.              // Command_Flag=1;
  1927.      }
  1928.   if(Command_Flag>0) 
  1929. {
  1930.        if(Check_Instruction_Statue(Cmd_ArmToDsp)==0x00)
  1931.                {
  1932. switch(CmdReturn_True_Flag)
  1933. {
  1934. case 413:
  1935. Screen_state =413;
  1936. break;
  1937. case 41:
  1938. time_modify_flag=0;
  1939. Screen_state =41;
  1940. break;
  1941. default:break;
  1942. }
  1943.               
  1944.                Command_Flag=0;
  1945.     //  Returnto_Save=0;
  1946.                }
  1947.                 else  if(Check_Instruction_Statue(Cmd_ArmToDsp)==0x22)
  1948.                 { Command_Flag=0;
  1949.                 Dalog_Info_Show(1, 12, 0);
  1950.                 }
  1951. }
  1952. }
  1953. //定值、配置保存/选择/执行
  1954. void Data_Select_Save(void)//选择执行保存
  1955. { UC i,Config_Modify_flag=0,Setting_Modify_flag=0;
  1956. if( L_Screen_state != 119 )
  1957.      {  
  1958.         L_Screen_state = 119;
  1959.       //SubMenuPosition=0;
  1960.      if(Output_Select_Flag==1)
  1961. Dalog_Info_Show(SubMenuPosition_temp, 14, 0);
  1962. else
  1963. Dalog_Info_Show(SubMenuPosition_temp, 15, 0);
  1964.       
  1965.      }
  1966.      
  1967. if((Key_OK==0)&&(L_Key_OK==1))
  1968.      {
  1969.       L_Key_OK=Key_OK;
  1970.      
  1971.       Screen_state=1191;
  1972.      
  1973. }
  1974.   if((Key_CANCEL==0 )&&(L_Key_CANCEL==1))/*要加撤销命令*/
  1975.      {
  1976.                 L_Key_CANCEL = Key_CANCEL;
  1977. Command_Flag=0;
  1978.                 SubMenuPosition=0;
  1979.                 SubMenuPosition_temp=0;
  1980.    Flag_Password_True=0;
  1981.                 switch(Returnto_Save)
  1982.      {
  1983.      case 6://time
  1984. //清修改标志
  1985. time_modify_flag=0;
  1986.      Screen_state=416;
  1987.     break;
  1988. case  30://PT参数
  1989.        Screen_state=41;
  1990.      Config_Modify_flag=1;
  1991.      break;
  1992.      case  51://yaban
  1993.      Screen_state=514;
  1994.      break;
  1995.    
  1996.     
  1997.      case 10:/*遥控操作*/
  1998.      case 11:
  1999.      Output_Select_Flag=0;
  2000.      Screen_state=51;
  2001.      break;
  2002.      /*开出传动*/
  2003.      case 12:
  2004.      case 13:
  2005.      case 14:
  2006.      case 15:
  2007.      case 16:
  2008.      case 17:
  2009.      case 18:
  2010.      case 19:
  2011.      case 20:
  2012.      case 21:
  2013. case 22:
  2014.      case 23:
  2015. case 24:
  2016.      case 25:
  2017. case 26:
  2018.      Output_Select_Flag=0;
  2019.           Screen_state=513;
  2020.      break;
  2021.      /*定值修改*/
  2022.     
  2023. case  110:
  2024.      Screen_state=31;//过流
  2025.      Setting_Modify_flag=1;
  2026.    break;
  2027.      case 130:
  2028.      Command_Flag=0;
  2029.      case  131:
  2030.      Screen_state=31;//定值管理/切换定值组
  2031.      break;
  2032. case 132:
  2033. Screen_state=31;
  2034.      Setting_Modify_flag=1;
  2035.      //Father2_MenuPosition=0;
  2036.  break;
  2037. case 133:
  2038.      Screen_state=41;
  2039.      Config_Modify_flag=1;
  2040.      //Father2_MenuPosition=0;
  2041.  break;
  2042.      default :
  2043.      Screen_state=2;
  2044.      break;
  2045.      }
  2046.                      Returnto_Save=0;
  2047. if(Setting_Modify_flag==1)
  2048.                  { 
  2049.                   Setting_Modify_flag=0;
  2050.                   for(i=0;i<SETTING_NUM;i++)
  2051.      System_setting[i]=System_setting_Old[i];
  2052. }
  2053.                if(Config_Modify_flag==1)
  2054.                { 
  2055.                 Config_Modify_flag=0;
  2056.                 for(i=0;i<CONFIG_NUM;i++)
  2057.                  System_config[i]=System_config_Old[i];
  2058.                }
  2059.      }
  2060. }
  2061. void Dialog_Select_Exectue(void)//选择执行对话框
  2062. {
  2063.   UC i,Config_Modify_flag=0,Setting_Modify_flag=0;
  2064.  UI  temp_per1,temp_per2;
  2065.   if( L_Screen_state != 1191 )
  2066.      {  
  2067.         L_Screen_state = 1191;
  2068.        switch(SubMenuPosition_temp)
  2069.         {
  2070.         case 0://选择//加返回标
  2071.         switch(Returnto_Save)
  2072.      { //系统参数修改
  2073.        case  30://PT参数
  2074.         Cmd_ArmToDsp=0x0c00;
  2075.       temp_per1=0;
  2076.       temp_per2=0;
  2077.       break;
  2078.       case 51: /*Yaban*/
  2079.        Cmd_ArmToDsp=0x0f00;
  2080.      temp_per1=YYB_Modify_Flag.YYB_temp;
  2081.        temp_per2=0;
  2082.      break;
  2083.     
  2084.      /*遥控操作*/
  2085.      case 10://遥分
  2086.      Cmd_ArmToDsp=0x1120;
  2087.       temp_per2=0;
  2088.      temp_per1=48;
  2089. break;    
  2090.      case 11: //遥合
  2091.      Cmd_ArmToDsp=0x1110;
  2092.       temp_per2=0;
  2093.      temp_per1=48;
  2094.      break;
  2095.     
  2096.      /*开出传动*/
  2097.      case 12:
  2098.      case 13:
  2099.      case 14:
  2100.      case 15:
  2101.      case 16:
  2102.      case 17:
  2103.      case 18:
  2104.      case 19:
  2105.      case 20:
  2106.      case 21:
  2107. case 22:
  2108.      case 23:
  2109. case 24:
  2110.      case 25:
  2111. case 26:
  2112.         Cmd_ArmToDsp=0x1100;
  2113.      temp_per2=0;
  2114.      temp_per1=36+Returnto_Save;
  2115.      break;
  2116.     
  2117.      /*定值修改*/
  2118.     
  2119.      case  110://长启动
  2120.     
  2121.      Cmd_ArmToDsp=0x0800;
  2122.       temp_per1=FixedValue_Num;
  2123.        temp_per2=0;
  2124.        break;
  2125.      case 130://切换
  2126.      Cmd_ArmToDsp=0x0a00;
  2127.       temp_per1=FixedValue_Switch_Num;
  2128.        temp_per2=0;
  2129.        break;
  2130.       case 131://复制
  2131.        Cmd_ArmToDsp=0x0b00;
  2132.       temp_per1=TargetArea;
  2133.        temp_per2=SourceArea;
  2134.        break;
  2135. case  132://写初始化定值
  2136.     
  2137.      Cmd_ArmToDsp=0x0800;
  2138.       temp_per1=FixedValue_Switch_Num;
  2139.        temp_per2=0;
  2140.        break; 
  2141. case  133://写初始化定值
  2142.     
  2143.      Cmd_ArmToDsp=0x0c00;
  2144.       temp_per1=0;
  2145.        temp_per2=0;
  2146.        break; 
  2147.      default :
  2148.      break;
  2149.      }
  2150.      
  2151.       MMI_DSP_Instruction(Cmd_ArmToDsp,temp_per1,temp_per2);
  2152.       Dalog_Info_Show(0, 7, 0);
  2153.              Command_Flag=1;
  2154.                   
  2155.       break;
  2156.      
  2157.       case 1://执行//加返回标
  2158.       switch(Returnto_Save)
  2159.      { //系统参数修改
  2160.     
  2161. case  30://PT参数
  2162.               Cmd_ArmToDsp=0x0d00;
  2163.       temp_per1=0;
  2164.       temp_per2=0;
  2165.      break;
  2166.       case 51: /*Yaban*/
  2167.        Cmd_ArmToDsp=0x0f01;
  2168.      temp_per1=YYB_Modify_Flag.YYB_temp;
  2169.        temp_per2=0;
  2170.      break;
  2171.      case 10://遥分
  2172.      Cmd_ArmToDsp=0x1121;
  2173.       temp_per2=0;
  2174.      temp_per1=48;
  2175. break;    
  2176.      case 11: //遥合
  2177.      Cmd_ArmToDsp=0x1111;
  2178.       temp_per2=0;
  2179.      temp_per1=48;
  2180.      break;
  2181.      /*开出传动*/
  2182.        case 12:
  2183.      case 13:
  2184.      case 14:
  2185.      case 15:
  2186.      case 16:
  2187.      case 17:
  2188.      case 18:
  2189.      case 19:
  2190.      case 20:
  2191.      case 21:
  2192. case 22:
  2193.      case 23:
  2194. case 24:
  2195.      case 25:
  2196. case 26:
  2197. Cmd_ArmToDsp=0x1101;//启动
  2198.       temp_per2=0;
  2199.       temp_per1=36+Returnto_Save;
  2200.       break;
  2201.      /*定值修改*/
  2202.     
  2203.      case  110:
  2204.     
  2205.      Cmd_ArmToDsp=0x0900;
  2206.       temp_per1=FixedValue_Num;
  2207.        temp_per2=0;
  2208.        break;
  2209.       case 130:
  2210.        Cmd_ArmToDsp=0x0a01;
  2211.       temp_per1=FixedValue_Switch_Num;
  2212.        temp_per2=0;
  2213.        break;
  2214.       case 131:
  2215.        Cmd_ArmToDsp=0x0b01;
  2216.       temp_per1=TargetArea;
  2217.        temp_per2=SourceArea;
  2218.        break;
  2219. case  132:
  2220.     
  2221.      Cmd_ArmToDsp=0x0900;
  2222.       temp_per1=FixedValue_Switch_Num;
  2223.        temp_per2=0;
  2224.        break;
  2225. case  133:
  2226.     
  2227.      Cmd_ArmToDsp=0x0d00;
  2228.       temp_per1=0;
  2229.        temp_per2=0;
  2230.        break;
  2231.      default :
  2232.      break;
  2233.      }
  2234.       MMI_DSP_Instruction(Cmd_ArmToDsp,temp_per1,temp_per2);
  2235.       Dalog_Info_Show(0, 7, 0);
  2236.              Command_Flag=1;
  2237.        Cmd_Exectue_Flag=1;
  2238.            
  2239.                break;
  2240.                default:break;
  2241.           
  2242.       }
  2243.       
  2244.         }
  2245.    
  2246. if(Command_Flag>0) 
  2247. {
  2248.        if(Check_Instruction_Statue(Cmd_ArmToDsp)==0x00)
  2249.                {
  2250.                //if(SubMenuPosition==0) SubMenuPosition=1;
  2251.                Command_Flag=0;
  2252.                if(Cmd_Exectue_Flag==1) 
  2253. {
  2254. Cmd_Exectue_Flag=0;SubMenuPosition_temp=0;
  2255.                                                       
  2256. switch(Returnto_Save)
  2257.      {
  2258.      case  30://PT参数
  2259.     
  2260.      Screen_state=1;
  2261.      Config_Modify_flag=1;
  2262.      break;
  2263.      case  51://yaban
  2264.      Screen_state=514;
  2265.      System_Info.YB_Soft=YYB_Modify_Flag.YYB_temp;
  2266.      break;
  2267.     
  2268.      case 10://遥分
  2269.      case 11: //遥合
  2270.      Output_Select_Flag=0;
  2271.      Screen_state=51;
  2272.      break;  
  2273.      //开出传动
  2274.        case 12:
  2275.      case 13:
  2276.      case 14:
  2277.      case 15:
  2278.      case 16:
  2279.      case 17:
  2280.      case 18:
  2281.      case 19:
  2282.      case 20:
  2283.      case 21:
  2284. case 22:
  2285.      case 23:
  2286. case 24:
  2287.      case 25:
  2288. case 26:
  2289.      Output_Select_Flag=0;
  2290.           Screen_state=5131;
  2291.      break;
  2292.     
  2293.      case  110:
  2294. Screen_state=31;//过流
  2295.      Setting_Modify_flag=1;
  2296.      break;
  2297.     
  2298.      case 130:
  2299.      System_Info.DZ_Area=FixedValue_Switch_Num;
  2300.      case 131:
  2301.      Screen_state=31;//定值切换
  2302.      break;
  2303. case 132:
  2304.              Screen_state=317;//过流
  2305.      Setting_Modify_flag=1;
  2306. //Father2_MenuPosition=0;
  2307.      break;
  2308. case 133:
  2309.              Screen_state=41;//过流
  2310.      Config_Modify_flag=1;
  2311. //Father2_MenuPosition=0;
  2312.      break;
  2313.     
  2314.      default :
  2315.      Screen_state=2;
  2316.      break;
  2317.      }
  2318. /*刷新定值、配置的备份*/
  2319.                               Returnto_Save=0;
  2320. if(Setting_Modify_flag==1)
  2321.                   { 
  2322.                   Setting_Modify_flag=0;
  2323.                   for(i=0;i<SETTING_NUM;i++)
  2324.      System_setting_Old[i]=System_setting[i];
  2325. }
  2326.                 if(Config_Modify_flag==1)
  2327.                 { 
  2328.                 Config_Modify_flag=0;
  2329.                 for(i=0;i<CONFIG_NUM;i++)
  2330.                  System_config_Old[i]=System_config[i];
  2331.                 }
  2332. }
  2333. else 
  2334. {
  2335. Screen_state =119;
  2336. SubMenuPosition_temp=1;
  2337. }
  2338.        }
  2339.                 else  if(Check_Instruction_Statue(Cmd_ArmToDsp)==0x22)
  2340.                 { if(CmdExectue_Erro_Flag==0)
  2341.                  {
  2342.                  CmdExectue_Erro_Flag=1;
  2343.                 Dalog_Info_Show(1,12, 0);
  2344.                
  2345.                  }
  2346.                  Cmd_Exectue_Flag=0;//执行失败清零
  2347.                    if((Key_OK==0)&&(L_Key_OK==1))
  2348.        {
  2349.       L_Key_OK=Key_OK;
  2350.       CmdExectue_Erro_Flag=0;
  2351.                 Screen_state =119;
  2352.                     }
  2353.                 }
  2354. }
  2355. }
  2356. void Dalog_Info_Show(UC value,UC key,UC type)
  2357. { Dlg_Frame_View();
  2358. switch(key)
  2359. {
  2360. case 0:
  2361. LCDPrintf(1, 3, 64, "输入密码:", 12);
  2362. break;
  2363. case 1:
  2364. LCDPrintf(1, 3, 64, "输入新密码:", 12);
  2365. break;
  2366. case 2:
  2367. LCDPrintf(1, 3, 72, " 密码错误!", 20);
  2368. break;
  2369. case 3:
  2370. LCDPrintf(1, 3, 72, " 确认执行!", 20);
  2371. break;
  2372. case 4:
  2373. LCDPrintf(1, 3, 72, " 修改成功!", 20);
  2374. break;
  2375. case 5:
  2376. LCDPrintf(1, 3, 72, "确认保存?", 12);
  2377. break;
  2378. case 6:
  2379.        LCDPrintf(1, 3, 72, "正在保存...", 12);
  2380.        break;
  2381.        case 7:
  2382.        LCDPrintf(1, 3, 72, "请等待...", 12);
  2383.        break;
  2384.       
  2385. case 10:
  2386. if(value==0)   LCDPrintf(1, 3, 72, "选择成功!", 9);
  2387.       else    LCDPrintf(1, 3, 72, "选择失败!", 9);
  2388. break;
  2389. case 11:
  2390. if(value==0)   LCDPrintf(1, 3, 72, "保存成功!", 9);
  2391.       else    LCDPrintf(1, 3, 72, "保存失败!", 9);
  2392. break;
  2393. case 12:
  2394. if(value==0)  
  2395.       LCDPrintf(1, 3, 72, "执行成功!", 9);
  2396.       else    LCDPrintf(1, 3, 72, "执行失败!", 9);
  2397.       break;
  2398.       case 13:
  2399.       if(value==0)  
  2400.       LCDPrintf(1, 3, 72, "固化成功!", 9);
  2401.       else    LCDPrintf(1, 3, 72, "固化失败!", 9);
  2402.       break;
  2403.       case 14:
  2404.       if(value==0)
  2405.    LCDPrintf(0, 3, 72, "选择", 4);
  2406.    else 
  2407.    LCDPrintf(1, 3, 72, "选择", 4);
  2408.      
  2409.    if(value==1) 
  2410.    LCDPrintf(0, 9, 72, "执行", 4);
  2411.       else 
  2412.    LCDPrintf(1,9,72,"执行",4);
  2413.       break;
  2414.      
  2415.           case 15:
  2416.           if(value==0)
  2417.    LCDPrintf(0, 3, 72, "保存", 4);
  2418.    else 
  2419.    LCDPrintf(1, 3, 72, "保存", 4);
  2420.          
  2421.           if(value==1) 
  2422.    LCDPrintf(0, 9, 72, "固化", 4);
  2423.       else 
  2424.    LCDPrintf(1,9,72,"固化",4);
  2425.           break;
  2426.           case 16:
  2427.       LCDPrintf(1, 3, 64, "禁止修改", 10);
  2428.           LCDPrintf(1, 2, 80, "当前定值区", 10);
  2429.           break;
  2430.           case 17:
  2431.            LCDPrintf(1, 4, 64, " 查   看", 10);
  2432.  LCDPrintf(1, 3, 80, "第  条记录", 10);
  2433. break;
  2434.       default:
  2435.       Screen_state=2;
  2436.       break;
  2437.       }
  2438. }
  2439. void  Show_Process(void)
  2440. {
  2441.         switch(Screen_state)
  2442.            {
  2443.               case   0:
  2444.                        Screen_Logo();   //开机界面
  2445.                        break;
  2446.               case   1: 
  2447.                        Screen_MainMenu();//主菜单界面
  2448.                        break;
  2449.               case 2:
  2450.                FirstRun_Bmp_View();/*一次运行图*/
  2451.                break;
  2452.               case   11: 
  2453.                        Sample_Information_Menu();//实时数据
  2454.                        break;
  2455.                        case   111: 
  2456.                         Second_Measurevalue();//二次测量值
  2457.                         break;
  2458.                       case   112: 
  2459.                       Second_Measurevalue1();//一次测量值
  2460.                         break;
  2461.                        case   113: 
  2462.                         RealYX();//实时遥信
  2463.                         break;
  2464.                         case   114: 
  2465.                        // RealPower();//实时遥信
  2466.                         break;
  2467.                         case   115: 
  2468.                        //  Harmonic_Num_Modify();//谐波分量次数
  2469.                          break;
  2470.                         case   1151: 
  2471.                       // Harmonic_Num_Value();//谐波分量 
  2472.                             break;
  2473.                        case   116: 
  2474.                        LookSoe_Num_Modify();//查看SOE
  2475.                         break; 
  2476.                         case   1161: 
  2477.                          Look_Soe();//查看SOE
  2478.                         break;
  2479.               case   21: 
  2480.                        Report_Manage();//报告信息
  2481.                        break;
  2482.                   
  2483.                        case 214://故障报告
  2484.                         Fault_Num_Modify();
  2485.                         break;
  2486.                         case 2141:
  2487.                         Fault_Report_Show();
  2488.                         break;
  2489.                                    
  2490.               case   31: 
  2491.                        FixedValue_Manage();//保护定值
  2492.                        break;
  2493.               case   311: 
  2494.                         FixedValue_A();//定值组A
  2495.                         break;
  2496.                         case   31101: 
  2497.                         FixedValue_A_FYGI();//定值组A-过流
  2498.                         break;
  2499.                        case   31121: 
  2500.                                  FixedValue_A_FYGI_Modify();//定值组A-过流
  2501.                                     break;
  2502.                      
  2503.                case 315:
  2504.                 FixedValue_Switch();
  2505.                 break;
  2506.                 case 316:
  2507.                 FixedValue_Copy();
  2508.                 break;
  2509.     case 317:
  2510.                 FixedValue_Init();
  2511.                 break;
  2512.               case   41: 
  2513.                        System_Config();//系统信息
  2514.                        break;
  2515.                       
  2516.                        case   413: 
  2517.                      Channel_Adjust_Value();//校准系数
  2518.                         break;
  2519.                           case   4131: 
  2520.                         Channel_Adjust_Auto();//自动校准系数
  2521. break;
  2522.                           case   4132: 
  2523.                            Channel_Adjust_Manual();//手动校准系数
  2524.                         break;
  2525.                        case   414: 
  2526.                      YxTime_Value();//遥信参数
  2527.                         break;
  2528.                          case   4141: 
  2529.                      YxTime_Value_Modify();//遥信参数
  2530.                         break;
  2531.                        case  416:
  2532. Comm_Information();//端口信息
  2533.                         break;
  2534. case 4161:
  2535.                         Comm_Information_Modify();//端口信息
  2536.                         break;
  2537.  case 418:
  2538.                         Clock_Modify();//时钟调整
  2539.                         break;
  2540.                                              
  2541.                        case 419:
  2542.                         ConfigValue_Init();
  2543.                         break;
  2544.                                              
  2545.               case   51: 
  2546.                        System_Test();//控制操作
  2547.                        break;
  2548.               
  2549.                  case  513:
  2550.                     Output_Test();//开出传动
  2551.                     break;
  2552.                    case 5131:
  2553.                    Output_Test_Modify();
  2554.                    break;
  2555.                   
  2556.                  case  514:
  2557.                    Yaban_Control();//压板投退
  2558.                     break;
  2559.                      case  5141:
  2560.                    Yaban_Control_Modify();//压板投退
  2561.                     break;
  2562.                   case 515:
  2563.                     PC_Com();//与PC通信
  2564.                     break;
  2565.                    case 516:
  2566.                    System_Reset();//装置复归
  2567.                     break;
  2568.                       
  2569.               case   61: 
  2570.                        System_Help();//帮助信息
  2571.                        break;
  2572.                     case   611: 
  2573.                       Production_Introduction();//产品简介
  2574.                         break;    
  2575.                       case   612: 
  2576.                      User_Manual();//使用指南
  2577.                         break;    
  2578.                         case   613: 
  2579.                        Help_Tel();//联系方式
  2580.                         break;   
  2581.      case 614:
  2582.                         Function_Introduction();
  2583.                         break;
  2584.                        case 615:
  2585.                         Version_Show();
  2586.                         break;
  2587.                        case 616:
  2588.                         System_State_Show();
  2589.                         break;
  2590.               case  119:
  2591.                Data_Select_Save();//选择执行保存
  2592.                break;
  2593.                case 1191:
  2594.                Dialog_Select_Exectue();//选择执行对话框
  2595.                break;
  2596.               case  120:
  2597.                Data_Save();//一般数据保存
  2598.                break;
  2599.               case 110:
  2600.                Password_Manager();
  2601.                break;
  2602.                 case 1101:
  2603.               PasswordModify_Erro();
  2604.                break;
  2605.                case 1102:
  2606.               PasswordModify_OK();
  2607.                break;
  2608.                case  911:
  2609.                 Compare_FixedValue_Num();
  2610.                 break;
  2611.               case 10000:
  2612.                New_Information();
  2613.                break;
  2614.               default: Screen_state = 0;
  2615.                        break;
  2616.            }; 
  2617. }