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

📄 realtimeclock.h

📁 很好c语言编写的pid算法,具有很好的参考价值
💻 H
字号:
////////////////////////////////////////////////////////
//	僼傽僀儖偺愢柧丗儕傾儖僞僀儉僋儘僢僋惂屼僪儊僀儞僿僢僟
////////////////////////////////////////////////////////
#ifndef __REAL_TIME_CLOCK_H
#define __REAL_TIME_CLOCK_H

#include <stdio.h>
#include "Typedef.h"

////////////////////////////////////////////////////////
//	僪儊僀儞    丗儕傾儖僞僀儉僋儘僢僋惂屼
//	僋儔僗偺愢柧丗擔晅僋儔僗
////////////////////////////////////////////////////////
class ClockDate
{
public:
	UCHAR	year;										//擭
	UCHAR	month;										//寧
	UCHAR	day;										//擔
};

////////////////////////////////////////////////////////
//	僪儊僀儞    丗儕傾儖僞僀儉僋儘僢僋惂屼
//	僋儔僗偺愢柧丗帪崗僋儔僗
////////////////////////////////////////////////////////
class ClockTime
{
///////////////////////////////////////////////////
// 儊儞僶曄悢
///////////////////////////////////////////////////
public:
	UCHAR	hour;										//帪
	UCHAR	minute;										//暘
	UCHAR	second;										//昩

///////////////////////////////////////////////////
// 儊僜僢僪
///////////////////////////////////////////////////
public:
	// 僐儞僗僩儔僋僞
	ClockTime( CHAR *defaultTime)
	{
		int hourWk, minuteWk, secondWk;
		sscanf( defaultTime, "%2d:%2d:%2d", &hourWk, &minuteWk, &secondWk );
		this->hour = hourWk;
		this->minute = minuteWk;
		this->second = secondWk;
	};
	ClockTime( )
	{
		this->hour = 0;									//帪
		this->minute = 0;								//暘
		this->second = 0;								//昩
	};

	// 帪崗偺堷偒嶼丗answer = timeOrg - timeSub
	ClockTime operator-( ClockTime & timeSub )
	{
		ClockTime ret = *this;

		UCHAR carryMin = 0;
		if( ret.second < timeSub.second )
		{
			ret.second += 60;
			carryMin = 1;
		}
		ret.second -= timeSub.second;

		UCHAR carryHou = 0;
		if( ret.minute < ( timeSub.minute + carryMin ) )
		{
			ret.minute += 60;
			carryHou = 1;
		}
		ret.minute -= ( timeSub.minute + carryMin );

		if( ret.hour < ( timeSub.hour + carryHou ) ) ret.hour += 24;
		ret.hour -= ( timeSub.hour + carryHou );
		ret.hour %= 24;

		return ret;
	};

	// 帪崗偺堷偒嶼丗timeOrg -= timeSub
	ClockTime operator-=( ClockTime & timeSub )
	{
		*this = *this - timeSub;
		return *this;
	};

	// 帪崗偺懌偟嶼丗answer = timeOrg + timeAdd
	ClockTime operator+( ClockTime & timeAdd )
	{
		ClockTime ret = *this;
		ret.second += timeAdd.second;
		if( ret.second >= 60 )
		{
			++(ret.minute);
			ret.second -= 60;
		}

		ret.minute += timeAdd.minute;
		if( ret.minute >= 60 )
		{
			++(ret.hour);
			ret.minute -= 60;
		}

		ret.hour += timeAdd.hour;
		ret.hour %= 24;

		return ret;
	};

	// 帪崗偺懌偟嶼丗timeOrg += timeAdd
	ClockTime operator+=( ClockTime & timeAdd )
	{
		*this = *this + timeAdd;
		return *this;
	};

	// 帪崗偺斾妑丗timeOrg < timeCmp
	BOOL operator<( ClockTime & timeCmp )
	{
		BOOL ret = FALSE;

		if( this->hour < timeCmp.hour )
		{
			ret = TRUE;
		}
		else if(( this->hour == timeCmp.hour ) &&
				( this->minute < timeCmp.minute ))
		{
			ret = TRUE;
		}
		else if(( this->hour == timeCmp.hour ) &&
				( this->minute == timeCmp.minute ) &&
				( this->second < timeCmp.second ) )
		{
			ret = TRUE;
		}

		return ret;
	};

	// 帪崗偺斾妑丗timeOrg > timeCmp
	BOOL operator>( ClockTime & timeCmp )
	{
		BOOL ret = FALSE;

		if( this->hour > timeCmp.hour )
		{
			ret = TRUE;
		}
		else if(( this->hour == timeCmp.hour ) &&
				( this->minute > timeCmp.minute ))
		{
			ret = TRUE;
		}
		else if(( this->hour == timeCmp.hour ) &&
				( this->minute == timeCmp.minute ) &&
				( this->second > timeCmp.second ) )
		{
			ret = TRUE;
		}

		return ret;
	};

	// 帪崗偺斾妑丗timeOrg == timeCmp
	BOOL operator==( ClockTime & timeCmp )
	{
		BOOL ret = FALSE;

		if(	( this->hour == timeCmp.hour ) &&
			( this->minute == timeCmp.minute ) &&
			( this->second == timeCmp.second ) )
		{
			ret = TRUE;
		}

		return ret;
	};
	// 帪崗偺庢傝弌偟
	BOOL getTimeStr( CHAR * time )
	{
		sprintf(time, "%02d:%02d:%02d", this->hour,
										this->minute,
										this->second );
		return TRUE;
	};
};


// 僴乕僪僂僃傾偺帪崗
extern	ClockDate __nowDate;							// 擔晅
extern	ClockTime __nowTime;							// 帪崗

////////////////////////////////////////////////////////
//	僪儊僀儞    丗儕傾儖僞僀儉僋儘僢僋惂屼
//	僋儔僗偺愢柧丗帪崗娗棟僋儔僗
////////////////////////////////////////////////////////
class RealTimeClock
{
///////////////////////////////////////////////////////
//	僨乕僞儊儞僶乕
///////////////////////////////////////////////////////
protected:

///////////////////////////////////////////////////////
//	儊僜僢僪
///////////////////////////////////////////////////////
public:
	//僐儞僗僩儔僋僞丄帪崗偺弶婜壔
	RealTimeClock()
	{
		__nowDate.year = 3;
		__nowDate.month = 10;
		__nowDate.day = 25;

		__nowTime.hour = 17;
		__nowTime.minute = 0;
		__nowTime.second = 0;
	};

	// 尰嵼帪崗傪庢摼偡傞
	VOID getNowTime( ClockTime * time )
	{
		*time = __nowTime;
	};

	// 尰嵼擔晅傪庢摼偡傞
	VOID getNowDate( ClockDate * date )
	{
		*date = __nowDate;
	};


protected:

};

#endif //__REAL_TIME_CLOCK_H

⌨️ 快捷键说明

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