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

📄 timepos.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
字号:
/***************************
*     TimePos.c    ZTL     *
***************************/
#define  TIMEPOS_GLOBALS
#include "includes.h"
#include "bsp.h"
#include "Tools.h"
#include "Timetask.h"
#include "Public.h"
#include "SysTime.h"
#include "Position.h"
#include "TimePos.h"
#include "Printer.h"

#define TIMEPOS_DEBUG  0

static TMR_TSK *TCheckTmrID;

#define TCheckPeriod	SECOND,59

static SYSTIME_STRUCT SysTime;

static void TCheckTmr(void)
{
   INT8U i;
   StartTmr(TCheckTmrID,TCheckPeriod);
   #if TIMEPOS_DEBUG
   //SendFromUART_STR(1,(INT8U *)"TCheckTmr");
   //FormatPrintDataBlock(FORMAT_HEX,1,(INT8U *)&SysTime,sizeof(SysTime));
   #endif

   if(TimePosPara.Status!=OPEN) return;
   //if(!SysTimeValid()) return;
   GetSysTime(&SysTime);
   #if TIMEPOS_DEBUG
   SendFromUART_STR(1,(INT8U *)"SysTime:");
   FormatPrintDataBlock(FORMAT_HEX,1,(INT8U *)&SysTime,sizeof(SysTime));
   #endif
   for(i=0;i<MAX_TIMEPOS;i++)
     {

      if((SysTime.time.hour==TimePosPara.Hour[i])&&(SysTime.time.minute==TimePosPara.Minute[i]))
	{
	// SendPositionData(POSITION_TIME,i);
	 return;
	}
     }
}
BOOLEAN CheckTime(INT8U Node)
{
     if(!SysTimeValid()) return FALSE;
     if((SysTime.time.hour==TimePosPara.Hour[Node])&&(SysTime.time.minute==TimePosPara.Minute[Node])){
	 return TRUE;
	}
     else return FALSE;

}
void TimePosInit(void)
{
   #if TIMEPOS_DEBUG
   SendFromUART_STR(1,(INT8U *)"TimePosInit");
   #endif
   TCheckTmrID=CreateTimer(TCheckTmr,0); 
   
   if(((TimePosPara.Status!=OPEN)&&(TimePosPara.Status!=CLOSE))
      ||(!PubParaValid(TIMEPARA_)))
      TimePosParaClear();
   StartTmr(TCheckTmrID,TCheckPeriod);
}

INT8U TimePosParaSet(INT8U *ParaSetPtr)
{
   #if TIMEPOS_DEBUG
   SendFromUART_STR(1,(INT8U *)"TimePosParaSet");
   FormatPrintDataBlock(FORMAT_HEX,1,ParaSetPtr,3);
   #endif
   
   if(*ParaSetPtr>=MAX_TIMEPOS) return ERR;

   TimePosPara.Hour[*ParaSetPtr]=*(ParaSetPtr+1);
   TimePosPara.Minute[*ParaSetPtr]=*(ParaSetPtr+2);

   VirStorePubPara(TIMEPARA_);
   return 3;
}

void TimePosParaClear(void)
{
   INT8U i;
   
   #if TIMEPOS_DEBUG
   SendFromUART_STR(1,(INT8U *)"TimePosParaClear");
   #endif
   ClearPubPara(TIMEPARA_);
   for(i=0;i<MAX_TIMEPOS;i++) TimePosPara.Hour[i]=0xFF,TimePosPara.Minute[i]=0xFF;
   TimePosPara.Status=CLOSE;
   StorePubPara(TIMEPARA_);
}

void TimePosStart(void)
{
   #if TIMEPOS_DEBUG
   SendFromUART_STR(1,(INT8U *)"TimePosStart");
   #endif
   TimePosPara.Status=OPEN;
   VirStorePubPara(TIMEPARA_);
}

void TimePosStop(void)
{
   #if TIMEPOS_DEBUG
   SendFromUART_STR(1,(INT8U *)"TimePosStop");
   #endif
   TimePosPara.Status=CLOSE;
   VirStorePubPara(TIMEPARA_);
}

⌨️ 快捷键说明

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