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

📄 powerup.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
字号:
/*
******************************************************************
*                  XIAMEN YAXON NETWORK CO.LTD.  
*                   XINXI BUILDING,HULI,XIAMEN
*      (c) Copyright 2002,XIAMEN YAXON NETWORK CO.LTD. ,XIAMEN
*                     All Rights Reserved
*
* FileName     :  PowerUp.C
* Programmer(s):  cyb
* Description  :  
******************************************************************
*/
#define  POWERUP_GLOBALS
#include "includes.h"
#include "TimeTask.h"
#include "Lcd.h"
#include "Tools.h"
#include "ErrTask.h"
#include "_Keyboard.h"
#include "systime.h"
#include "uart_drv.h"
#include "Hardware.h"
#include "public.h"
#include "structs.H"
#include "PowerUp.h"
#include "Predictor.h"
#include "ConfigPage.h"

static FORMPAGE  *mainformpage;
static TMR_TSK   *RefreshMainFormTmr;
static GPOUT     WorkIconOut  = { 2,3,16,16,1,1,2,2,BORDER_NONE,SCROLLBAR_NONE};
static PHOTOBOX  WorkIconPhoto;

static INT8U     TimeText[15];
static INT8U     StationName[12];
static INT8U     StepUp[]    = { 0x01,0x01,0x03,0x03,0x07,0x07,0x0F,0x0F,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,
                                 0xFF,0xFF,0x7F,0x7F,0x3F,0x3F,0x1F,0x1F,0x0F,0x0F,0x07,0x07,0x03,0x03,0x01,0x01 };
static INT8U     StepDown[]  = { 0x80,0x80,0xC0,0xC0,0xE0,0xE0,0xF0,0xF0,0xF8,0xF8,0xFC,0xFC,0xFE,0xFE,0xFF,0xFF,
                                 0xFF,0xFF,0xFE,0xFE,0xFC,0xFC,0xF8,0xF8,0xF0,0xF0,0xE0,0xE0,0xC0,0xC0,0x80,0x80 };
static INT8U     Auto[]      = { 0x80,0x00,0xC0,0x01,0xFF,0xFF,0xC0,0x01,0xA0,0x02,0x90,0x04,0x88,0x08,0x84,0x10,
                                 0x84,0x10,0x88,0x08,0x90,0x04,0xA0,0x02,0xC0,0x01,0xFF,0xFF,0xFF,0xFF,0x00,0x00 };
static INT8U     Manual[]    = { 0x40,0x00,0x40,0x00,0x50,0x01,0x50,0x01,0x54,0x01,0x54,0x19,0x54,0x19,0x54,0x19,
                                 0x54,0x19,0x54,0x19,0xFC,0x1F,0xFC,0x1F,0xFC,0x1F,0xFC,0x1F,0xF0,0x07,0xE0,0x03 };
static INT8U     Steps[]     = { 0x01,0x80,0x03,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0xFF,0xFF,
                                 0xFF,0xFF,0x7F,0xFE,0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x07,0xE0,0x03,0xC0,0x01,0x80 };
                                
                               
static void  DplySysTime(void)
{
      ASCII_DATE AsciiSysDate;
      ASCII_TIME AsciiSysTime;
      
      GetAsciiDate(&AsciiSysDate); 
      GetAsciiTime(&AsciiSysTime);
      
      memset(TimeText,' ',sizeof(TimeText));
      memcpy(&TimeText[0],AsciiSysDate.ac_year,2);
      TimeText[2] = '/';
      memcpy(&TimeText[3],AsciiSysDate.ac_month,2);
      TimeText[5] = '/';
      memcpy(&TimeText[6],AsciiSysDate.ac_day,2);
      memcpy(&TimeText[10],AsciiSysTime.ac_hour,2);
      TimeText[12] = ':';
      memcpy(&TimeText[13],AsciiSysTime.ac_minute,2);
     
}

static void DplyStationName(void)
{
      memset(StationName,0,sizeof(StationName));
      GetStationName(StationName); 
}

static void  RefreshMainFormFunc(void)
{
      DplySysTime();
      DplyStationName();
      
      if (GetFormPageDepth() == 0)
      {
          Print_LCD(2,0,TimeText,sizeof(TimeText));
          Print_LCD(1,1,StationName,sizeof(StationName));
          ShowWorkIcon(); 
      }
      
}
static void  MainFormInitFunc(void)
{
      WorkIconPhoto.gpout = &WorkIconOut;
      DplySysTime();
      DplyStationName();
      RefreshMainFormTmr = CreateTimer(RefreshMainFormFunc,0);
      StartTmr(RefreshMainFormTmr,SECOND,1);

}

void ShowWorkIcon(void)
{
     if (GetFormPageDepth() == 0)
     {
         if(IsWorkAuto())
         {
             WorkIconPhoto.gpdata = Auto;
             RefreshPhotoBox(&WorkIconPhoto);
         }
         else
         {
            if(IsManualDeclare())
            {
                 WorkIconPhoto.gpdata = Manual;
                 RefreshPhotoBox(&WorkIconPhoto);
            }
           
         }
     } 
}

void DplyWorkIcon(INT8U worksta)
{
     switch(worksta)
     {
         case SKIM:
         WorkIconPhoto.gpdata = Steps;
         break;
         case DECLARE:
         WorkIconPhoto.gpdata = Manual;
         break; 
         case STEP_UP:
         WorkIconPhoto.gpdata = StepUp;
         break;
         case STEP_DOWN:
         WorkIconPhoto.gpdata = StepDown;
         break;
     }
     
     RefreshPhotoBox(&WorkIconPhoto);
     
}
static void MainFormHdlKeyFunc(void)
{
     INT8U key;
     
     key = GetCurLcdKey();
     
     switch(key)
     {
         case KEY_UP:
         HdlManualPullOut();
         break;
         case KEY_NCK:
         SetDownStream();
         break;
         case KEY_DOWN:
         HdlManualPullIn();
         break;
         case KEY_ACK:
         SetUpStream();
         break;
         case KEY_rangzuo:
         HdlManualRangzuo();
         break;
         case KEY_chongbo:
         HdlManualRepeat();
         break;
         case KEY_yongji:
         HdlManualRongji();
         break;
         case KEY_ENTER:
         CreateConfigPage();
         break;
         default:
         break;
         
     }
}

static void MainFormCreateFunc(void)
{
     if (GetFormPageDepth() == 0)
      {
          Print_LCD(2,0,TimeText,sizeof(TimeText));
          Print_LCD(1,1,StationName,sizeof(StationName));
          ShowWorkIcon(); 
      } 
}

static void MainFormSusPendFunc(void)
{
     StopTmr(RefreshMainFormTmr);
}

static void MainFormResumeFunc(void)
{
     StartTmr(RefreshMainFormTmr,SECOND,1);
     RefreshMainFormFunc();
}


void CreateMainForm(void)
{
     mainformpage = AllocateFormPage();
     
     mainformpage->initfunc    = MainFormInitFunc;
     mainformpage->createfunc  = MainFormCreateFunc;
     mainformpage->hdlkeyfunc  = MainFormHdlKeyFunc;
     mainformpage->resumefunc  = MainFormResumeFunc;
     mainformpage->suspendfunc = MainFormSusPendFunc;
     CreateFormPage();
     
     InitKeyBoard();

}

void ActivatePowerUpPage(void)
{
       InitLcd();
       
       CreateMainForm(); 
}

⌨️ 快捷键说明

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