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

📄 rtc.c

📁 RTC实时时钟例程,可值参考移值使用.好就顶下.
💻 C
📖 第 1 页 / 共 2 页
字号:
			}
			Idu_OsdDrawLine(g_psUserWinOSD, swHourX, swHourY, swMinuteX, swMinuteY, 3, 4);			
#elif defined(YINKE_7A)||defined(YINKE_8D)
			Idu_OsdDrawLine(g_psUserWinOSD, swHourX, swHourY, swMinuteX, swMinuteY, 3, 4);	
#else
			Idu_OsdDrawLine(g_psUserWinOSD, swHourX, swHourY, swMinuteX, swMinuteY, 3, 15);
#endif
			swHourX = CLOCK_M_X + sinx[angle/6]* CLOCK_R3-4;
			if (TEST_480X240p == 1)
				swHourY = CLOCK_M_Y - cosx[angle/6]* CLOCK_R3*7/8-8;
			else
			{
#if defined(SJD_7A_16M)
				swHourY = CLOCK_M_Y - cosx[angle/6]* CLOCK_R3*5/4-8;
#else
				swHourY = CLOCK_M_Y - cosx[angle/6]* CLOCK_R3-8;
#endif
			}
			if (angle == 0 || angle > 270 )
				swHourX -= 8;
#if defined(SJD_7A)||defined(SJD_7A_16M)
			if (swHourY%2 == 0)
			Idu_OsdPutStr(g_psUserWinOSD, bHourStr[angle/30], swHourX, swHourY, 4);
			else
			Idu_OsdPutStr(g_psUserWinOSD, bHourStr[angle/30], swHourX, swHourY+1, 4);	
#else
			Idu_OsdPutStr(g_psUserWinOSD, bHourStr[angle/30], swHourX, swHourY, 15);
#endif
		}
		else
		{
#if !defined(SJD_7A)&&!defined(SJD_7A_16M)
			Idu_OsdDrawLine(g_psUserWinOSD, swHourX, swHourY, swMinuteX, swMinuteY, 2, 1);
#endif
		}
	}

	swHourX	= CLOCK_M_X + sinx[g_pstClock->bHour%12*5+g_pstClock->bMinute/12]* CLOCK_HOUR_R;
	if (TEST_480X240p == 1)
		swHourY	= CLOCK_M_Y - cosx[g_pstClock->bHour%12*5+g_pstClock->bMinute/12]* CLOCK_HOUR_R*7/8;
	else
	{
#if defined(SJD_7A_16M)
		swHourY	= CLOCK_M_Y - cosx[g_pstClock->bHour%12*5+g_pstClock->bMinute/12]* CLOCK_HOUR_R*5/4;
#else
		swHourY	= CLOCK_M_Y - cosx[g_pstClock->bHour%12*5+g_pstClock->bMinute/12]* CLOCK_HOUR_R;
#endif
	}
	swMinuteX = CLOCK_M_X + sinx[g_pstClock->bMinute]* CLOCK_MIN_R;
	if (TEST_480X240p == 1)
		swMinuteY = CLOCK_M_Y - cosx[g_pstClock->bMinute]* CLOCK_MIN_R*7/8;
	else
	{
#if defined(SJD_7A_16M)	
		swMinuteY = CLOCK_M_Y - cosx[g_pstClock->bMinute]* CLOCK_MIN_R*5/4;
#else
		swMinuteY = CLOCK_M_Y - cosx[g_pstClock->bMinute]* CLOCK_MIN_R;
#endif
	}

	swSecondX = CLOCK_M_X + sinx[g_pstClock->bSecond]* CLOCK_SEC_R;
	if (TEST_480X240p == 1)
		swSecondY = CLOCK_M_Y - cosx[g_pstClock->bSecond]* CLOCK_SEC_R*7/8;
	else
	{
#if defined(SJD_7A_16M)	
		swSecondY = CLOCK_M_Y - cosx[g_pstClock->bSecond]* CLOCK_SEC_R*5/4;
#else
		swSecondY = CLOCK_M_Y - cosx[g_pstClock->bSecond]* CLOCK_SEC_R;
#endif
	}
#if defined(SJD_7A)||defined(SJD_7A_16M)
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swHourX, swHourY, 7, 4);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swMinuteX, swMinuteY, 5, 4);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swSecondX, swSecondY, 3, 4);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, CLOCK_M_X+3, CLOCK_M_Y+3, 7, 15);		
#elif defined(YINKE_7A)||defined(YINKE_8D)
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swHourX, swHourY, 7, 14);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swMinuteX, swMinuteY, 5, 14);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swSecondX, swSecondY, 3, 14);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, CLOCK_M_X+2, CLOCK_M_Y+2, 7, 15);		
#else	
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swHourX, swHourY, 7, 15);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swMinuteX, swMinuteY, 5, 1);
	Idu_OsdDrawLine(g_psUserWinOSD, CLOCK_M_X, CLOCK_M_Y, swSecondX, swSecondY, 3, 9);
#endif
	UserWinOSD_Copy(Idu_GetOsdWin(),g_psUserWinOSD,CLOCK_M_X-CLOCK_R, CLOCK_M_Y-CLOCK_R, 
		CLOCK_R*2, CLOCK_R*2, CLOCK_M_X-CLOCK_R, CLOCK_M_Y-CLOCK_R);

	//Show_Value1(GetCurMs2()- dwStartTime);
}

void Show_CurrentTime()
{
	static BOOL boShowFlag = 0;
	ST_OSDWIN *psWin = Idu_GetOsdWin();
	
	BYTE bPrintBuf[22];

	if (TEST_480X240p == 1 )
	{
		CLOCK_X	= (g_wScreenDefaultWidth-120);
		CLOCK_Y	= 6;
	}
	else
	{
		CLOCK_X	= (g_wScreenDefaultWidth-220);
		CLOCK_Y	= 14;
	}

	if ( g_sSetupMenu.bClockMode == 0 )
	{
		if ( boShowFlag )
		{
			boShowFlag = 0;
			Clear_TimeBar();
		}
		return;
	}

	boShowFlag = 1;

	if (g_pstClock->bMonth > 12 || g_pstClock->bMonth == 0)
		g_pstClock->bMonth = 1;
	
	if ( g_sSetupMenu.bClockMode == 1 )
		mp_sprintf(bPrintBuf,"%02d %s  %02d",g_pstClock->bDate,MonthStr[g_pstClock->bMonth-1],g_pstClock->wYear);
	else
		mp_sprintf(bPrintBuf,"%d:%02d  %02d %s",g_pstClock->bHour,g_pstClock->bMinute,g_pstClock->bDate,MonthStr[g_pstClock->bMonth-1]);

	Idu_OsdPaintArea(g_psUserWinOSD, CLOCK_X, CLOCK_Y, g_wScreenDefaultWidth-CLOCK_X-10, 20, 0);

	//Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, 2, 2,15);
#if defined(ZCD_7A)||defined(ZCD_8D)||defined(HS_8D)	
	Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, CLOCK_X, CLOCK_Y,15);
#else
	Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, CLOCK_X, CLOCK_Y,14);
#endif
	UserWinOSD_Copy(psWin,g_psUserWinOSD,CLOCK_X,CLOCK_Y,
					g_wScreenDefaultWidth-CLOCK_X-10,20,CLOCK_X,CLOCK_Y);

}


BYTE	Get_MonthDays(BYTE year, BYTE month)
{
	if (leap_year(year) && month == 2)
		return 29;
	else
		return bDays[month-1];
}

BYTE leap_year(WORD i)	// Duo
{
	if ((i % 400) == 0)
		return 1;
 	else if (((i % 4) == 0) && ((i % 100) != 0))
		return 1;
	else
		return 0;
}

BYTE calendar_genaration(WORD bYear, BYTE bMonth, BYTE bDate) //Duo
{
	WORD	i, weekday;
	BYTE	leap_day;

	if (bYear >= 2000)
		bYear = bYear - 2000;

	weekday = 6;	
	for (i = 0; i < bYear; i++)
	{
		if (leap_year(i))
			weekday = weekday + 2;
		else
			weekday = weekday + 1;
	}
	
	if (leap_year(bYear))
		leap_day = 1;
	else
		leap_day = 0;

	for (i = 1; i < bMonth; i++)
	{
		weekday = weekday + bDays[i-1];
	}

	if (bMonth > 2)		
		weekday = weekday + leap_day;

	weekday = (weekday + bDate - 1) % 7;

	return(weekday);
}	


#if DISP_TYPE == DISP_TYPE_DVI
BYTE *week[7] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
#else
BYTE *week[7] = { "SU", "MO", "TU", "WE", "TH", "FR", "SA" };
#endif


void Show_Calendar(WORD wYear, BYTE bMonth, BYTE bDate)	// Duo // Liuxu Modified
{

	WORD CALENDAR_X ;
	WORD CALENDAR_Y ;


	WORD	X,Y;

	DWORD	dwStartTime = GetCurMs2();

	ST_OSDWIN *psWin;
	psWin = Idu_GetOsdWin();

	BYTE bPrintBuf[10];
	BYTE monthday_num,weekday,i;
	BYTE ColorIndex = 3;
#if defined(SJD_7A_16M)
	WORD Width=360,Interval=48,Offset=20,Text=32,Title_Offset=94;
#else
	WORD Width=320,Interval=44,Offset=20,Text=32,Title_Offset=94;
#endif	
	weekday = 5;
	bCalendarOnFlag = 1;

	if (TEST_480X240p == 1)
	{
#if defined(SJD_7A)
		Width = 232;
		Interval = 32;
		Offset = 14;
		Text = 25;
		Title_Offset=52;
#else
		Width = 192;
		Interval = 26;
		Offset = 12;
		Text = 20;
		Title_Offset=42;
#endif
	}
#if defined(ZCD_800x600)	
	CALENDAR_X = (g_wScreenDefaultWidth-Width-20);
	CALENDAR_Y = (g_wScreenDefaultHeight-SETUP_MIDDLE_HEIGHT*8-SETUP_TOP_HEIGHT*2-30);
#elif defined(ZCD_8D)||defined(HS_8D)
	CALENDAR_X = (g_wScreenDefaultWidth-Width-20+18);
	CALENDAR_Y = (g_wScreenDefaultHeight-SETUP_MIDDLE_HEIGHT*8-SETUP_TOP_HEIGHT*2-30);
#elif defined(SJD_7A)
	CALENDAR_X = (g_wScreenDefaultWidth-Width-20+2);
	CALENDAR_Y = (g_wScreenDefaultHeight-SETUP_MIDDLE_HEIGHT*8-SETUP_TOP_HEIGHT*2-42);
#elif defined(SJD_7A_16M)
	CALENDAR_X = (g_wScreenDefaultWidth-Width-20+6);
	CALENDAR_Y = (g_wScreenDefaultHeight-SETUP_MIDDLE_HEIGHT*8-SETUP_TOP_HEIGHT*2-30);
#else
	CALENDAR_X = (g_wScreenDefaultWidth-Width-20);
	CALENDAR_Y = (g_wScreenDefaultHeight-SETUP_MIDDLE_HEIGHT*8-SETUP_TOP_HEIGHT*2-30);
#endif

	Idu_OSD_DrawSetupTop(g_psUserWinOSD, CALENDAR_X, CALENDAR_Y, Width, SETUP_TOP_HEIGHT-4,0);
	Y = CALENDAR_Y+SETUP_TOP_HEIGHT-4;
	Idu_OSD_DrawSetupSelected(g_psUserWinOSD, CALENDAR_X, Y, Width,SETUP_MIDDLE_HEIGHT,0);
	Y+= SETUP_MIDDLE_HEIGHT;
	Idu_OSD_DrawSetupMiddle(g_psUserWinOSD, CALENDAR_X, Y, Width,SETUP_MIDDLE_HEIGHT*7,0);
	Y+= SETUP_MIDDLE_HEIGHT*7;
	Idu_OSD_DrawSetupBottom(g_psUserWinOSD, CALENDAR_X, Y, Width, SETUP_TOP_HEIGHT-4,0);

	X = CALENDAR_X+Title_Offset;
	Y = CALENDAR_Y+SETUP_TOP_HEIGHT;
	if (TEST_480X240p == 1)
		Y -= 1;
	
	mp_sprintf(bPrintBuf,"%02d / %s  %02d",bDate,MonthStr[bMonth-1],wYear);
	Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, X, Y,2);

	X = CALENDAR_X + 10;
	Y = CALENDAR_Y + SETUP_TOP_HEIGHT + SETUP_MIDDLE_HEIGHT;
	if (TEST_480X240p == 1)
		Y -= 1;
#if defined(SJD_7A_16M)	
	Idu_OsdPutStr(g_psUserWinOSD, week[0], X, Y, 15);
#else
	Idu_OsdPutStr(g_psUserWinOSD, week[0], X, Y, 9);
#endif
	X+=Interval;
	Idu_OsdPutStr(g_psUserWinOSD, week[1], X, Y,5);

	X+=Interval;
	Idu_OsdPutStr(g_psUserWinOSD, week[2], X, Y,5);

	X+=Interval;
	Idu_OsdPutStr(g_psUserWinOSD, week[3], X, Y,5);

	X+=Interval;
	Idu_OsdPutStr(g_psUserWinOSD, week[4], X, Y,5);

	X+=Interval;
	Idu_OsdPutStr(g_psUserWinOSD, week[5], X, Y,5);

	X+=Interval;
#if defined(SJD_7A_16M)
	Idu_OsdPutStr(g_psUserWinOSD, week[6], X, Y,15);
#elif defined(SJD_7A)
	Idu_OsdPutStr(g_psUserWinOSD, week[6], X, Y,9);
#elif defined(HS_8D)
	Idu_OsdPutStr(g_psUserWinOSD, week[6], X, Y,14);
#else
	Idu_OsdPutStr(g_psUserWinOSD, week[6], X, Y,7);
#endif
	X = CALENDAR_X+6;
	Y = CALENDAR_Y+SETUP_TOP_HEIGHT-4+SETUP_MIDDLE_HEIGHT*2;

#if defined(SJD_7A_16M)	
	Idu_OsdDrawLine(g_psUserWinOSD, X, Y-4, X+Width-12,Y-4, 1, 6);	
	Idu_OsdDrawLine(g_psUserWinOSD, X, Y-3, X+Width-12,Y-3, 1, 6);
#else
	Idu_OsdDrawLine(g_psUserWinOSD, X, Y, X+Width-12,Y, 1, 6);
#endif
	//Idu_OsdDrawLine(g_psUserWinOSD, X, Y+1, X+308,Y+1, 1, 6);
	
	monthday_num = 	bDays[bMonth-1];
	if ((bMonth == 2) && (leap_year(wYear)))
		monthday_num = monthday_num + 1;	
	weekday = calendar_genaration(wYear, bMonth, 1);
	
	X = CALENDAR_X + Offset + weekday * Interval;
	Y = CALENDAR_Y+SETUP_TOP_HEIGHT+SETUP_MIDDLE_HEIGHT *2;

	for (i = 0; i < monthday_num; i++)
	{
		if (weekday == 0) 
		{
#if defined(SJD_7A_16M)
			ColorIndex = 15;
#else
			ColorIndex = 9;
#endif
		}
		else if (weekday == 6)
#if defined(SJD_7A_16M)
			ColorIndex = 15;
#elif defined(SJD_7A)
			ColorIndex = 9;
#elif defined(HS_8D)
			ColorIndex = 14;	
#else
			ColorIndex = 7;	
#endif
		else
			ColorIndex = 5;
	
		mp_sprintf(bPrintBuf,"%s",Data_TimeStr[i]);

		if (i == bDate - 1)	
		{
			Idu_OSD_DrawButton(g_psUserWinOSD, X-Text/5, Y-2, Text, SETUP_MIDDLE_HEIGHT-4);
			if (TEST_480X240p == 1)
				Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, X, Y-1,2);
			else
				Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, X, Y,2);
		}
		else
			if (TEST_480X240p == 1)
				Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, X, Y-1,ColorIndex);
			else
				Idu_OsdPutStr(g_psUserWinOSD, bPrintBuf, X, Y,ColorIndex);
				

		weekday = weekday + 1;
		
		if (weekday == 7)
		{
			weekday = 0;
			X = CALENDAR_X + Offset;
			Y += SETUP_MIDDLE_HEIGHT;
		}
		else
			X += Interval;	
	}
	UserWinOSD_Copy(Idu_GetOsdWin(),g_psUserWinOSD,CALENDAR_X,CALENDAR_Y,Width,SETUP_MIDDLE_HEIGHT*8+SETUP_TOP_HEIGHT*2-8,CALENDAR_X,CALENDAR_Y);

	//Show_Value1(GetCurMs2()- dwStartTime);
}

#endif



⌨️ 快捷键说明

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