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

📄 timemng.c

📁 好记星的控件,包括button,list,对文件操作
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************/
/*                                                                          */
/*              Copyright (C) 2005 SHENZHEN MEIJIN CO.LTD                   */
/*                                                                          */
/* FILE NAME:   TimeMng.h                                                   */
/* MODULE NAME: 时钟管理模块                                                */
/* DESCRIPTION: 本程序的主要功能是管理时钟和闹铃模块                        */
/*                                                                          */
/* FUNCTIONS:                                                               */
/*              TimMngInitial     时钟管理模块初始化	                    */
/*              TimSetTime		  设置时间		                            */
/*              TimSetDate		  设置日期		                            */
/*              TimGetTime        获取时间			                        */
/*              TimGetDate		  获取日期		                            */
/*              TimGetAlarm       获取当前闹铃信息			                */
/*              TimSetAlarm		  设置闹铃				                    */
/*              TimGetAlarmTime   获取闹铃时间	                            */
/*              TimGetAlarmDate   获取闹铃日期	                            */
/*              TimGetAlarmNumber 获取相同时间的闹铃个数                    */
/*              GetAlarmMsgBuffer 获取闹铃提示信息buffer                    */
/*              TimUpdateAlarm    更新闹铃					                */
/*                                                                          */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   gaolinhui     2006-01-22          创建                                 */
/****************************************************************************/
#include "kernel.h"

#define ALARM_MSGLEN            17
#define ALARM_SAMENUMBER        4       // 相同时间点的Alarm最多数量

UINT8   g_byAlarmMinute;
UINT8   g_byAlarmHour;
UINT8   g_byAlarmDay;
UINT8   g_byAlarmMonth;
UINT16  g_wAlarmYear;

UINT8   g_byAlarmNumber;                    // 记录相同时间点内Alarm的数量
UINT8   g_aAlarmBuffer[ALARM_SAMENUMBER*ALARM_MSGLEN];



/****************************************************************************/
/* FUNCTION:   TimMngInitial                                               */
/* DESCRIPTION:时钟模块初始化                                              */
/* INPUTS:                                                                 */
/* OUTPUTS:    NONE				                                        */
/* RETURN:     NONE                                                        */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/* gaolinhui   2006-2-22			  CREATE								*/
/****************************************************************************/
BOOL	TimMngInitial(void)
{
	//设置初始时间为2006-1-1 00:00:00
	DateType date;
	TimeType time;

	TimGetTime(&time);
	TimGetDate(&date);
	//判断当前时间的有效性,如果时间有效,不需要重新设置时间
	if	( date.wYear < TIM_YEARMIN || date.wYear > TIM_YEARMAX
		  || date.byMonth > 12
		  || date.byDay > 31
		  || time.byHour > 23
		  || time.byMinute > 59
		  || time.bySecond > 59 )
	{
		date.wYear = 2006;
		date.byMonth = 1;
		date.byDay = 1;
		time.byHour = 0;
		time.byMinute = 0;
		time.bySecond = 0;
		TimSetDate(&date);
		TimSetTime(&time);
	}
	//更新闹铃
	TimUpdateAlarm();
	return TRUE;

}

/****************************************************************************/
/* FUNCTION:   TimGetDate                                                  */
/* DESCRIPTION:得到当前日期                                                */
/* INPUTS:                                                                 */
/* OUTPUTS:    pDate  -  当前日期                                          */
/* RETURN:     NONE                                                        */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  谢永良     2002-09-26      创建                                         */
/* gaolinhui   2006-1-23       修改了返回类型为BOOL							*/
/****************************************************************************/
BOOL TimGetDate(DateType *pDate)
{
    NU_DRIVER          *pDtTmDriver;
    NU_DRIVER_REQUEST   ndrTemp;
    SYSTEM_DATETIME     dtDate;
	BOOL	bRet = TRUE;

    memset(pDate, 0, sizeof(DateType));
    if ((pDtTmDriver = GetIODriverFromName((UINT8*)DRV_NAME_DATETIME)) == NULL)
    {
        bRet = FALSE;
	}
	else
	{
		ndrTemp.nu_function     = NU_INPUT;
		ndrTemp.nu_timeout      = NU_NO_SUSPEND;
		ndrTemp.nu_supplemental = DTTM_IO_DATE;
		ndrTemp.nu_request_info.nu_input.nu_buffer_ptr = &dtDate;
		NU_Request_Driver(pDtTmDriver, &ndrTemp);
		if (ndrTemp.nu_status != NU_SUCCESS)
		{
			bRet = FALSE;
		}
		else
		{ 
			pDate->wYear     = dtDate.wYear;
			pDate->byMonth    = (UINT8)dtDate.wMonth;
			pDate->byDay      = (UINT8)dtDate.wDay;
		}
	}
	return bRet;
}


/****************************************************************************/
/* FUNCTION:   TimSetDate                                                  */
/* DESCRIPTION:设置当前日期                                                */
/* INPUTS:                                                                 */
/* OUTPUTS:    pDate  -  当前日期                                          */
/* RETURN:     NONE                                                        */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  谢永良     2002-09-26      创建                                         */
/****************************************************************************/
BOOL	TimSetDate(DateType* pDate)
{
    NU_DRIVER          *pDtTmDriver;
    NU_DRIVER_REQUEST   ndrTemp;
    SYSTEM_DATETIME     dtDate;
	BOOL	bRet = TRUE;
    if ((pDtTmDriver = GetIODriverFromName((UINT8*)DRV_NAME_DATETIME)) == NULL)
    {
        bRet = FALSE;
	}
	else
	{
		dtDate.wYear    = pDate->wYear;
		dtDate.wMonth   = pDate->byMonth;
		dtDate.wDay     = pDate->byDay;

		ndrTemp.nu_function     = NU_OUTPUT;
		ndrTemp.nu_timeout      = NU_NO_SUSPEND;
		ndrTemp.nu_supplemental = DTTM_IO_DATE;
		ndrTemp.nu_request_info.nu_output.nu_buffer_ptr = &dtDate;
		NU_Request_Driver(pDtTmDriver, &ndrTemp);
		if(ndrTemp.nu_status != NU_SUCCESS)
		{
			bRet = FALSE;
		}
	}
	return bRet;
}
/****************************************************************************/
/* FUNCTION:   TimGetTime                                                  */
/* DESCRIPTION:得到当前时间                                                */
/* INPUTS:                                                                 */
/* OUTPUTS:    pTime  -  当前时间                                          */
/* RETURN:     返回取时间是否成功                                          */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  谢永良     2002-09-26      创建                                         */
/* gaolinhui   2006-1-23                                                    */
/****************************************************************************/
BOOL TimGetTime(TimeType *pTime)
{
    NU_DRIVER          *pDtTmDriver;
    NU_DRIVER_REQUEST   ndrTemp;
    SYSTEM_DATETIME     dtTime;
	BOOL				bRet = TRUE;

    memset(pTime, 0, sizeof(TimeType));
    if ((pDtTmDriver = GetIODriverFromName((UINT8*)DRV_NAME_DATETIME)) == NULL)
    {
        bRet = FALSE;
	}
	else
	{
		ndrTemp.nu_function     = NU_INPUT;
		ndrTemp.nu_timeout      = NU_NO_SUSPEND;
		ndrTemp.nu_supplemental = DTTM_IO_TIME;
		ndrTemp.nu_request_info.nu_input.nu_buffer_ptr = &dtTime;
		NU_Request_Driver(pDtTmDriver, &ndrTemp);
		if (ndrTemp.nu_status != NU_SUCCESS)
		{
			bRet = FALSE;
		}
		else
		{
			pTime->bySecond  = (UINT8)dtTime.wSecond;
			pTime->byMinute  = (UINT8)dtTime.wMinute;
			pTime->byHour    = (UINT8)dtTime.wHour;
		}
	}
	return bRet;
}



/****************************************************************************/
/* FUNCTION:   TimSetTime                                                  */
/* DESCRIPTION:设置当前时间                                                */
/* INPUTS:                                                                 */
/* OUTPUTS:    pTime  -  当前时间                                          */
/* RETURN:     TRUE - 设置时间成功,否则返回FALSE                           */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  谢永良     2002-09-26      创建                                         */
/*	高林辉	   2006-01-23													*/
/****************************************************************************/
BOOL	TimSetTime(TimeType* pTime)
{
    NU_DRIVER          *pDtTmDriver;
    NU_DRIVER_REQUEST   ndrTemp;
    SYSTEM_DATETIME     dtTime;
	BOOL				bRet = TRUE;
    if ((pDtTmDriver = GetIODriverFromName((UINT8*)DRV_NAME_DATETIME)) == NULL)
    {
        bRet = FALSE;
	}
	else
	{
		dtTime.wHour    = pTime->byHour;
		dtTime.wMinute  = pTime->byMinute;
		dtTime.wSecond  = pTime->bySecond;

		ndrTemp.nu_function     = NU_OUTPUT;
		ndrTemp.nu_timeout      = NU_NO_SUSPEND;
		ndrTemp.nu_supplemental = DTTM_IO_TIME;
		ndrTemp.nu_request_info.nu_input.nu_buffer_ptr = &dtTime;
		if(NU_Request_Driver(pDtTmDriver, &ndrTemp) != NU_SUCCESS)
		{
			bRet = FALSE;
		}
	}
	return bRet;
}



/****************************************************************************/
/* FUNCTION:   IsAlarmArrive                                                */
/* DESCRIPTION:当前系统时钟时间是否为闹铃时间.                             */
/* INPUTS:                                                                 */
/* OUTPUTS:																*/
/* RETURN:     TRUE/FALSE                                                  */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/* GAOLINHUI   2006-3-22			创建									*/
/****************************************************************************/
//
BOOL	IsAlarmArrive(VOID)
{
	DateType date,AlaDate;
	TimeType time,AlaTime;
	//取系统时间和日期
	TimGetDate(&date);
	TimGetTime(&time);
	//取闹铃日期时间
	TimGetAlarmDate(&AlaDate);
	TimGetAlarmTime(&AlaTime);
	//比较时间日期
	if(TimDateTimeCompare(&date,&time,&AlaDate,&AlaTime) == 0)
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}

}



/****************************************************************************/
/* FUNCTION:   TimGetAlarm                                                 */
/* DESCRIPTION:得到当前Alarm                                               */
/* INPUTS:                                                                 */
/* OUTPUTS:    pTime  -  时间                                              */
/*              pDate  -  日期                                              */
/* RETURN:     NONE                                                        */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  谢永良     2002-09-26      创建                                         */
/* GAOLINHUI   2006-1-23      修改接口返回为BOOL							*/
/****************************************************************************/
BOOL	TimGetAlarm(DateType* pDate,TimeType* pTime)
{
    NU_DRIVER          *pDtTmDriver;
    NU_DRIVER_REQUEST   ndrTemp;
    SYSTEM_DATETIME     dtDateTime;
	BOOL	bRet = TRUE;

    memset(pTime, 0, sizeof(TimeType));
    memset(pDate, 0, sizeof(DateType));
    
    if ((pDtTmDriver = GetIODriverFromName((UINT8*)DRV_NAME_ALARM)) == NULL)
    {
        bRet = FALSE;
	}
	else
	{
		ndrTemp.nu_function = NU_INPUT;
		ndrTemp.nu_timeout  = NU_NO_SUSPEND;
		ndrTemp.nu_request_info.nu_input.nu_buffer_ptr = &dtDateTime;
		NU_Request_Driver(pDtTmDriver, &ndrTemp);
		if (ndrTemp.nu_status != NU_SUCCESS)
		{
			bRet = FALSE;
		}
		else
		{
			pDate->wYear     = (UINT16)dtDateTime.wYear;
			pDate->byMonth    = (UINT8)dtDateTime.wMonth;
			pDate->byDay      = (UINT8)dtDateTime.wDay;
			pTime->byHour        = (UINT8)dtDateTime.wHour;
			pTime->byMinute      = (UINT8)dtDateTime.wMinute;
		}
	}
	return bRet;
}

/****************************************************************************/
/* FUNCTION:   TimSetAlarm                                                 */
/* DESCRIPTION:设置当前Alarm                                               */
/* INPUTS:                                                                 */
/* OUTPUTS:    pTime  -  时间                                              */
/*              pDate  -  日期                                              */
/* RETURN:     NONE                                                        */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  谢永良     2002-09-26      创建                                         */
/* GAOLINHUI   2006-1-23      修改接口返回为BOOL							*/
/****************************************************************************/
BOOL	TimSetAlarm(DateType* pDate,TimeType* pTime)
{
    NU_DRIVER          *pDtTmDriver;
    NU_DRIVER_REQUEST   ndrTemp;
    SYSTEM_DATETIME     dtDateTime;
	BOOL bRet = TRUE;

    if ((pDtTmDriver = GetIODriverFromName((UINT8*)DRV_NAME_ALARM)) == NULL)
    {
        bRet = FALSE;
	}
	else
	{
		dtDateTime.wYear    = pDate->wYear;
		dtDateTime.wMonth   = pDate->byMonth;
		dtDateTime.wDay     = pDate->byDay;
		dtDateTime.wHour    = pTime->byHour;
		dtDateTime.wMinute  = pTime->byMinute;

		ndrTemp.nu_function = NU_OUTPUT;
		ndrTemp.nu_timeout  = NU_NO_SUSPEND;
		ndrTemp.nu_request_info.nu_output.nu_buffer_ptr = &dtDateTime;

⌨️ 快捷键说明

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