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

📄 predictor.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
📖 第 1 页 / 共 3 页
字号:
       
       InstallPermnentPort(LEDPARA_WORK);
       Status &= ~IS_MACHINE_CLOSE;
       return 1;
   }
}

void GetStationName(INT8U *name)
{
    /*INT8U len;
    
    len = len;
    
    if(IsWorkAuto())
    {
        len = GetStrlen(StaNames[StaPosiNum_Get.curnum],15);
    
        if(len >=12)
        {
          len = 12;
        }
    
    
        memcpy(name,&StaNames[StaPosiNum_Get.curnum],len);
    }*/ 
}



BOOLEAN IsManualDeclare(void)
{
    if (!(Status & IS_SETDREC_UP) && !(Status & IS_SETDREC_DOWN))
    {
         return TRUE;
    }
    else
    {
         return FALSE;
    }
}

//*******************************NEW********************************
INT8U GetStationVoiceID(void)
{
     return 1;
}
// 设置为上行
void SetUpLine(void)
{
#if DEBUG_UARTNo_BUSSTATION  <=1 
     PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n设置为上行");
#endif     
     if(IsWorkAuto())
     {
        return;
     }
     
     LineDirection = UPSTREAM;
     
     if(StationID_Cur == -1)
     {
        StationID_Cur = 0;
        StationID_Next = 1;
        StationID_Last = 0;
     }
     else
     {
        StationID_Cur  +=1;
        StationID_Next +=1;
        StationID_Last +=1;
     }
     
}
// 设置为下行
void SetDownLine(void)
{
#if DEBUG_UARTNo_BUSSTATION  <=1 
     PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n设置为下行");
#endif      
     if(IsWorkAuto())
     {
        return;
     }
     
     LineDirection = DOWMSTREAM;
     
     if(StationID_Cur == -1)
     {
        StationID_Cur = Curstation_Tbl.nums_up;
        StationID_Next = Curstation_Tbl.nums_up+1;
        StationID_Last = Curstation_Tbl.nums_up;
     }
     else
     {
        StationID_Cur  +=1;
        StationID_Next +=1;
        StationID_Last +=1;
     }
}

// 快进
void HdlSkipUpforStation(void)
{
    
    INT16U index;
    
#if DEBUG_UARTNo_BUSSTATION  <=1 
     PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n快进");
#endif       
   if(IsWorkAuto())
   {
       return;
   }
   
   if(AutoValid)
   {
      AutoValid = FALSE;
   }
   
  
     
   StationID_Cur+=2;
      
   if(LineDirection == UPSTREAM)
   {
          
      if(StationID_Cur %2)
      {
          StationID_Cur = 0;
      }
      else
      {
          if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
          {
              if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
              {
                  StationID_Cur = 0;
              }
          }
          else
          {
               if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
               {
                  StationID_Cur = 0;
               }
          }
      }
      
        
   }
   else if (LineDirection == DOWMSTREAM)
   {
      if((StationID_Cur %2)==0)
      {
          StationID_Cur = 1;
      }
      else
      {
           if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
           {
              if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
              {
                  StationID_Cur = 1;
              }
           }
           else
           {
               if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
               {
                  StationID_Cur = 1;
               }
           }
      }
   }
   else                                       //没有指定上行或下行,则不处理
   {
       return;
   }
   
   StationID_Next = StationID_Cur ;
   
   if(StationID_Cur%2)
   {
      index = StationID_Cur/2 + Curstation_Tbl.nums_up;
   }
   else
   {
      index  = StationID_Cur/2;
   }
   OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_ID, index ,0);
   
   OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_SKIPUP ,0);  
#if DEBUG_UARTNo_BUSSTATION  >0
  
   OSQPost(SysTaskMsgQue, MSG_DEBUG_NAMEPRINT, GetCurPot(CurLine.cell,StationID_Cur) ,0); 
#endif
   
}
// 快退
void HdlSkipDownforStation(void)
{
   INT16U index;
   
#if DEBUG_UARTNo_BUSSTATION  <=1 
   PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n快退");
#endif 
   
   if(IsWorkAuto())
   {
       return;
   }
   
   if(AutoValid)
   {
       AutoValid = FALSE;
       
   }
  
   StationID_Cur-=2;
        
   if(LineDirection == UPSTREAM)
   {
     
      if(StationID_Cur % 2)
      {
          if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
          {
              StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
          }
          else
          {
              StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
          } 
      }
      else
      {
          if(StationID_Cur < 0)
          {
             if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
             {
                 StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
             }
             else
             {
                 StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
             } 
          }
      } 
      
   }
   else if (LineDirection == DOWMSTREAM)
   {
       if((StationID_Cur % 2)==0)
       {
          if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
          {
              StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
          }
          else
          {
              StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
          } 
      }
      else
      {
          if(StationID_Cur < 0)
          {
             if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
             {
                 StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
             }
             else
             {
                 StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
             } 
          }
      } 
   }
   else                                       //没有指定上行或下行,则不处理
   {
       return;
   }
   
   StationID_Next   = StationID_Cur;
  
   if(StationID_Cur%2)
   {
      index = StationID_Cur/2 + Curstation_Tbl.nums_up;
   }
   else
   {
      index  = StationID_Cur/2;
   }
   OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_ID, index ,0);
   
   OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_SKIPDOWN ,0);     
#if DEBUG_UARTNo_BUSSTATION  <=1
   OSQPost(SysTaskMsgQue, MSG_DEBUG_NAMEPRINT, GetCurPot(CurLine.cell,StationID_Cur) ,0); 
#endif  
   
}

//手动进站    
void HdlPullInStation(void)
{
    INT16U   curpot;
    INT16U   nextpot;
    INT16U   curindex;
#if DEBUG_UARTNo_BUSSTATION  <=1 
    PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n手动进站");
#endif   
    
    if(IsWorkAuto())
    {
       return;
    }
    
    if(LineDirection == -1)
    {
       return;
    }
    
    curpot   = GetCurPot(CurLine.cell,StationID_Next);
    nextpot  = GetNextPot(CurLine.cell,StationID_Next);
    
    if(StationID_Cur % 2)
    {
        curindex = StationID_Cur /2 + Curstation_Tbl.nums_up;
    }
    else
    {
        curindex = StationID_Cur /2;
    }
     
    
    if( curpot != 0xffff)
    {
        if((curpot != SpecailStation.start_sta1)&&(curpot != SpecailStation.start_sta2))
        {
            OSQPost(AlmTaskMsgQue, MSG_BUSSTATION_STATIONARIVED, curpot, nextpot);
            OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_ID,curindex,0);
            OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_PULLIN ,0);
        }
    }
    
    StationID_Cur = StationID_Next;
    StationID_Next += 2;
    
    if(LineDirection == UPSTREAM)
    {
       if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
       {
            if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
            {
                StationID_Next = 3;
                LineDirection = DOWMSTREAM;
            }
       }
       else
       {
            if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
            {
                StationID_Next = 3;
                LineDirection = DOWMSTREAM;
            }
       }
    }
    else if (LineDirection == DOWMSTREAM)
    {
       if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
       {
          if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
          {
               StationID_Next = 2;
               LineDirection = UPSTREAM;
          }
       }
       else
       {
          if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
          {
               StationID_Next = 2;
               LineDirection = UPSTREAM;
          }
       }
   }
     
}

//手动出站
void HdlPullOutStation(void)
{
     INT16U  nextpot;
     INT16U  endpot;

#if DEBUG_UARTNo_BUSSTATION  <=1 
     PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n手动出站");
#endif     
     if(IsWorkAuto())
     {
        return;
     }
    
     if(LineDirection == -1)
     {
        return;
     }
     
     nextpot = GetNextPot(CurLine.cell,StationID_Cur);
     
     if(LineDirection == DOWMSTREAM)
     {
         endpot = SpecailStation.end_sta2;
     }
     else if( LineDirection == UPSTREAM)
     {
         endpot = SpecailStation.end_sta1; 
     }
     
     if(nextpot != 0xffff)
     {
         OSQPost(AlmTaskMsgQue, MSG_BUSSTATION_STATIONSTART, nextpot ,endpot);
         OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_PULLOUT ,0); 
     }
     
     StationID_Next = StationID_Cur +2;
     StationID_Cur += 2;
    
     if(LineDirection == UPSTREAM)
     {
       if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
       {
            if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
            {
                StationID_Cur = 3;
                LineDirection = DOWMSTREAM;
            }
       }
       else
       {
            if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
            {
                StationID_Cur = 3;
                LineDirection = DOWMSTREAM;
            }
       }
    }
    else if (LineDirection == DOWMSTREAM)
    {
       if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
       {
          if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
          {
               StationID_Cur = 2;
               LineDirection = UPSTREAM;
          }
       }
       else
       {
          if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
          {
               StationID_Cur = 2;
               LineDirection = UPSTREAM;
          }
       }
   }
     
}


⌨️ 快捷键说明

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