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

📄 startuppage.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
字号:
/****************************************************************
**                                                              *
**  FILE         : StartupPage.c                                *
**                                                              *
**  By : Cyb 2007.07.01                                         *
****************************************************************/

#define  STARTUPPAGE_GLOBALS

#include "includes.h"
#include "timetask.h"
#include "systask.h"
#include "message.h"
#include "errcode.h"
#include "errtask.h"
#include "uart_drv.h"
#include "hardware.h"
#include "LedDrv.h"
#include "DisplayTask.h"
#include "alarmer.h"
#include "watchdog.h"
#include "Predictor.h"
#include "PredicTools.h"
#include "StartupPage.h"
#include "GpsRecer.h"
#include "audio.h"
#include "voice.h"
#include "FormPage.h"
#include "WinStack.h"
#include "_keyboard.h"
#include "VolumeControlPage.h"
#include "DriverLogPage.h"
#include "LineChangePage.h"

#define MAX_STATION   50    // 一条线路不超过30个站点
#define STARTUPPAGE_DEBUG      1

static TMR_TSK  *UpdateStartupFormTmr,*StartupTmr;
static INT8U    Gpsvalidcnt,Gpsinvalidcnt;
static FORMPAGE  *StartupPage;
static INT8U    Status;
static INT8U    i_Load;

static INT8U    ICON_GPSVALID[2]   ={0x40,0x40}; 
static INT8U    ICON_GPSINVALID[2] ={0x80,0x80};    
static INT8U    ICON_SKIPUP[2]     ={0x0e,0x0e};   
static INT8U    ICON_SKIPDOWN[2]   ={0x38,0x38};  
static INT8U    ICON_PULLIN[2]     ={0x40,0x0f};    
static INT8U    ICON_PULLOUT[2]    ={0x39,0x40};   
static INT8U    ICON_DOWNLOAD      =0x52;    
static INT8U    STATION_ID[][2] = {0x00,0x3f,
                                   0x00,0x06,
                                   0x00,0x5b,
                                   0x00,0x4f,
                                   0x00,0x66,
                                   0x00,0x6d,
                                   0x00,0x7d,
                                   0x00,0x07,
                                   0x00,0xff,
                                   0x00,0x6f,
                                   0x06,0x3f,
                                   0x06,0x06,
                                   0x06,0x5b,
                                   0x06,0x4f,
                                   0x06,0x66,
                                   0x06,0x6d,
                                   0x06,0x7d,
                                   0x06,0x07,
                                   0x06,0xff,
                                   0x06,0x6f,
                                   0x5b,0x3f,
                                   0x5b,0x06,
                                   0x5b,0x5b,
                                   0x5b,0x4f,
                                   0x5b,0x66,
                                   0x5b,0x6d,
                                   0x5b,0x7d,
                                   0x5b,0x07,
                                   0x5b,0xff,
                                   0x5b,0x6f,
                                   0x4f,0x3f,
                                   0x4f,0x06,
                                   0x4f,0x5b,
                                   0x4f,0x4f,
                                   0x4f,0x66,
                                   0x4f,0x6d,
                                   0x4f,0x7d,
                                   0x4f,0x07,
                                   0x4f,0xff,
                                   0x4f,0x6f,
                                   0x66,0x3f,
                                   0x66,0x06,
                                   0x66,0x5b,
                                   0x66,0x4f,
                                   0x66,0x66,
                                   0x66,0x6d,
                                   0x66,0x7d,
                                   0x66,0x07,
                                   0x66,0xff,
                                   0x66,0x6f
                                   
                                  };

static void  UpdateStartupFormFunc(void)
{
     INT8U index;
     INT8U i;
     
     if(GetFormPageDepth() != 0)
     {
         i_Load = 0;
         return; 
     }
     
     if(IsWorkAuto())
     {
         Status = STS_WORKAUTO;

         index = GetStationPotID();
         
         if(index >=MAX_STATION)
         {
             return;
         }
          
         SendLedDisplay(ICON_GPSVALID,2,0,1);
         SendLedDisplay(STATION_ID[index],2,2,3); 
     }
     else
     {
                  
         Status = GetWorkStauts();
         
         switch(Status)
         {
           case STS_SKIPUP:
           SendLedDisplay(ICON_SKIPUP,2,0,1);
           break;
           case STS_SKIPDOWN:
           SendLedDisplay(ICON_SKIPDOWN,2,0,1);
           break;
           case STS_PULLIN:
           SendLedDisplay(ICON_PULLIN,2,0,1);
           break;
           case STS_PULLOUT:
           SendLedDisplay(ICON_PULLOUT,2,0,1);
           break;
           default:
           SendLedDisplay(ICON_GPSINVALID,2,0,1);
           break;
         }
         
         if(Status == STS_DOWNLOAD)
         {
             i = i_Load++ % 4;
             SendLedDisplay(&ICON_DOWNLOAD,1,i,i); // 跑马灯式显示
    
         }
         else
         {
             index = GetStationPotID();
         
             if(index >=MAX_STATION)
             {
                return;
             } 
             
             SendLedDisplay(STATION_ID[index],2,2,3);
         }
     }
     

}

static void  StartupPageInitFunc(void)
{
     
     i_Load = 0;
     UpdateStartupFormFunc();
     UpdateStartupFormTmr = CreateTimer(UpdateStartupFormFunc,0);
     StartTmr(UpdateStartupFormTmr,MILTICK,15);
     
      
}

static void StartupPageCreateFunc(void)
{
     UpdateStartupFormFunc();
}

static void StartupPageHdlKeyFunc(void)
{
     INT8U key;
     
     key = GetCurKey();
     
     switch(key)
     {
       case KEY_1:                       //礼貌用语1
       HdlManualRongji();
       break;
       case KEY_2:                       //礼貌用语2
       HdlManualRangzuo();
       break;
       case KEY_3:                       //礼貌用语3
#if STARTUPPAGE_DEBUG >0
       PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n礼貌用语3");
#endif
       HdlPlayerAscend();
       break;
       case KEY_4:                       //礼貌用语4
#if STARTUPPAGE_DEBUG >0
       PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n礼貌用语4");
#endif      
       break;
       case KEY_5:                       //增大音量
       CreateVolumeControlPage();
       break;
       case KEY_6:                       //减小音量
       CreateVolumeControlPage();
       break;
       case KEY_8:                       //上行
       SetUpLine();
       break;
       case KEY_9:
       SetDownLine();
       break;
       case KEY_OK:                      //快进
       HdlSkipUpforStation();
       break;
       case KEY_0:                       //快退
       HdlSkipDownforStation();
       break;
       case KEY_IN:                      //进站
       HdlPullInStation();
       break;
       case KEY_OUT:                     //出站
       HdlPullOutStation();
       break;
       case KEY_REPEAT:                  //重拨
       HdlManualRepeat();
       break;
       case KEY_SHIFT:                   //进入身份录入页面
       CreateDriverLogPage();
       break;
       case KEY_SOUND:                   //开或关按键音
       if(IsKeySound_ON())
       {
#if STARTUPPAGE_DEBUG >0
          PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n按键音关");
#endif          
          SwitchKeySound_OFF();
       }
       else
       {
#if STARTUPPAGE_DEBUG >0
          PrintFromUART( DEBUG_UARTNo_DISPLAYTASK, "\n按键音开");
#endif        
          SwitchKeySound_ON();
       }
       break;
       case KEY_LINE:                    //线路切换页面
       CreateLineChangePage();       
       break;
       default:
       break;

     }
}

static void StartupPageResumeFunc(void)
{
      UpdateStartupFormFunc();
}

static void  CreateStartupPageForm(void)
{
      StartupPage = AllocateFormPage();
      StartupPage->initfunc    = StartupPageInitFunc;
      StartupPage->createfunc  = StartupPageCreateFunc;
      StartupPage->hdlkeyfunc  = StartupPageHdlKeyFunc;
      StartupPage->resumefunc  = StartupPageResumeFunc;
      CreateFormPage();   
}

static void StartupFunc(void)
{
     
     INT8U station_id;
     
     if(IsWorkAuto())
     {
         if(Gpsvalidcnt++ >= 15)
         {
            Gpsvalidcnt = 0;
            StopTmr(StartupTmr); 
            RemoveTmr(StartupTmr);
            station_id = GetStationVoiceID();
            SendLedDisplay(ICON_GPSVALID,2,0,1);
            PlaySingleAudio(FALSE,TRUE,AD_yidingwei);
            PlaySingleAudio(FALSE,TRUE,AD_city);
            PlaySingleAudio(FALSE,TRUE,station_id);
         }
      }
      else
      {
                        
            if((Gpsinvalidcnt++%10)==0)
            {
                // PlaySingleAudio(FALSE,TRUE,AD_weidingwei);
            }
      }
        
}

void  ActivateStartupPage(void)
{
     InitLed();
     InitAudio();
     InitKeyBoard();
     Gpsvalidcnt   = 0;
     Gpsinvalidcnt = 0; 
     StartupTmr = CreateTimer(StartupFunc,0);
     StartTmr(StartupTmr,SECOND,1);
     
     CreateStartupPageForm();
     
}

⌨️ 快捷键说明

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