Added some more projects and libraries.
This commit is contained in:
parent
f7151392ab
commit
1e1459fa50
94 changed files with 11904 additions and 0 deletions
243
libraries/RTC_DCF/DateTime.cpp
Normal file
243
libraries/RTC_DCF/DateTime.cpp
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
#include "DateTime.h"
|
||||
|
||||
/**********************************************************
|
||||
Konstruktor
|
||||
**********************************************************/
|
||||
DateTime::DateTime()
|
||||
{}
|
||||
|
||||
|
||||
/*---------------------------------------------------------
|
||||
Name: DateTime
|
||||
|
||||
Beschreibung: Konstruktor mit Übergabe der Datum und Uhrzeit
|
||||
|
||||
Eingänge: unsigned char year
|
||||
Jahr
|
||||
|
||||
unsigned char month
|
||||
Monat
|
||||
|
||||
unsigned char day
|
||||
Tag
|
||||
|
||||
unsigned char weekday
|
||||
Wochentag (0: Sonntag, 1: Montag ...)
|
||||
|
||||
unsigned char hour
|
||||
Stunde
|
||||
|
||||
unsigned char minute
|
||||
Minute
|
||||
|
||||
unsigned char second
|
||||
Sekunde
|
||||
|
||||
Ausgang: void
|
||||
---------------------------------------------------------*/
|
||||
DateTime::DateTime( unsigned char year, unsigned char month, unsigned char day, unsigned char weekday,
|
||||
unsigned char hour, unsigned char minute, unsigned char second)
|
||||
{
|
||||
this->year = year;
|
||||
this->month = month;
|
||||
this->day = day;
|
||||
this->weekday = weekday;
|
||||
this->hour = hour;
|
||||
this->minute = minute;
|
||||
this->second = second;
|
||||
}
|
||||
|
||||
/**********************************************************
|
||||
öffentliche Methoden
|
||||
**********************************************************/
|
||||
|
||||
/*---------------------------------------------------------
|
||||
Name: addSecond
|
||||
|
||||
Beschreibung: addiert eine Sekunde auf die aktuell
|
||||
gespeicherte Zeit inkl. Auswertung aller
|
||||
Überträge
|
||||
|
||||
Eingänge: void
|
||||
|
||||
Ausgang: void
|
||||
---------------------------------------------------------*/
|
||||
void DateTime::addSecond(void)
|
||||
{
|
||||
this->second++;
|
||||
|
||||
if(this->second >= 60)
|
||||
{
|
||||
this->second = 0;
|
||||
this->minute++;
|
||||
|
||||
if(this->minute >= 60)
|
||||
{
|
||||
this->minute = 0;
|
||||
this->hour++;
|
||||
|
||||
if(this->hour >= 24)
|
||||
{
|
||||
this->hour = 0;
|
||||
this->day++;
|
||||
|
||||
this->weekday = (this->weekday + 1) % 7;
|
||||
|
||||
if(this->day >= daysInMonth(month, year))
|
||||
{
|
||||
this->day = 1;
|
||||
this->month++;
|
||||
|
||||
if(this->month > 12)
|
||||
{
|
||||
this->month = 1;
|
||||
this->year++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------
|
||||
Name: daysInMonth
|
||||
|
||||
Beschreibung: gibt die Anzahl der Tages eines Monats zurück
|
||||
|
||||
Eingänge: unsigned char month
|
||||
Monat für den die Anzahl der Tage gesucht wird
|
||||
|
||||
unsigned char year
|
||||
Jahr in dem sich der Monat befindet
|
||||
(wird bei der Entscheidung benötigt, ob
|
||||
der Februar 28 oder 29 Tage hat)
|
||||
|
||||
Ausgang: unsigned char
|
||||
Anzahl der Monatstage
|
||||
---------------------------------------------------------*/
|
||||
unsigned char DateTime::daysInMonth(unsigned char month, unsigned char year)
|
||||
{
|
||||
unsigned char days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||
unsigned char daysInMonth = days[month];
|
||||
|
||||
if(month == 2 && isLeapyear(year))
|
||||
{
|
||||
daysInMonth = 29;
|
||||
}
|
||||
|
||||
return daysInMonth;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------
|
||||
Name: isLeapyear
|
||||
|
||||
Beschreibung: gibt zurück ob das übergebene Jahr ein Schaltjahr ist
|
||||
|
||||
Hinweis:
|
||||
Bei der Auswertung wird nur kontrolliert, ob das Jahr
|
||||
durch 4 teilbar ist.
|
||||
|
||||
Eingänge: unsigned char year
|
||||
Jahr, das auf Schaltjahr geprüft werden soll
|
||||
(Angabe als 2stelliger Wert)
|
||||
|
||||
Ausgang: unsigned char
|
||||
Jahr ist ein Schaltjahr?
|
||||
|
||||
0: kein Schaltjahr
|
||||
1: Schaltjahr
|
||||
---------------------------------------------------------*/
|
||||
unsigned char DateTime::isLeapyear(unsigned char year)
|
||||
{
|
||||
unsigned char leapyear = 0;
|
||||
|
||||
if(year & 0x03 == 0)
|
||||
{
|
||||
leapyear = 1;
|
||||
}
|
||||
|
||||
return leapyear;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------
|
||||
Name: getDateTimeString
|
||||
|
||||
Beschreibung: gibt die gespeicherte Zeit als Zeichenkette
|
||||
zurück
|
||||
|
||||
Eingänge: char* dateTimeString
|
||||
enthält am Ende der Funktion die gespeicherte
|
||||
Zeit (Datum und Uhrzeit)
|
||||
|
||||
Mindestgröße: 18 Byte
|
||||
|
||||
Ausgabeformat: dd.MM.yy-hh:mm:ss
|
||||
|
||||
Ausgang: void
|
||||
---------------------------------------------------------*/
|
||||
void DateTime::getDateTimeString(char* dateTimeString)
|
||||
{
|
||||
getDateString(dateTimeString);
|
||||
|
||||
dateTimeString[8] = '-';
|
||||
|
||||
getTimeString(dateTimeString + 9);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------
|
||||
Name: getDateString
|
||||
|
||||
Beschreibung: gibt das gespeicherte Datum als Zeichenkette
|
||||
zurück
|
||||
|
||||
Eingänge: char* dateString
|
||||
enthält am Ende der Funktion das gespeicherte
|
||||
Datum
|
||||
|
||||
Mindestgröße: 9 Byte
|
||||
|
||||
Ausgabeformat: dd.MM.yy
|
||||
|
||||
Ausgang: void
|
||||
---------------------------------------------------------*/
|
||||
void DateTime::getDateString(char* dateString)
|
||||
{
|
||||
dateString[0] = (this->day / 10) + '0';
|
||||
dateString[1] = (this->day % 10) + '0';
|
||||
dateString[2] = '.';
|
||||
dateString[3] = (this->month / 10) + '0';
|
||||
dateString[4] = (this->month % 10) + '0';
|
||||
dateString[5] = '.';
|
||||
dateString[6] = (this->year / 10) + '0';
|
||||
dateString[7] = (this->year % 10) + '0';
|
||||
dateString[8] = '\n';
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------
|
||||
Name: getTimeString
|
||||
|
||||
Beschreibung: gibt die gespeicherte Uhrzeit als Zeichenkette
|
||||
zurück
|
||||
|
||||
Eingänge: char* timeString
|
||||
enthält am Ende der Funktion die gespeicherte
|
||||
Uhrzeit
|
||||
|
||||
Mindestgröße: 9 Byte
|
||||
|
||||
Ausgabeformat: hh:mm:ss
|
||||
|
||||
Ausgang: void
|
||||
---------------------------------------------------------*/
|
||||
void DateTime::getTimeString(char* timeString)
|
||||
{
|
||||
timeString[0] = (this->hour / 10) + '0';
|
||||
timeString[1] = (this->hour % 10) + '0';
|
||||
timeString[2] = ':';
|
||||
timeString[3] = (this->minute / 10) + '0';
|
||||
timeString[4] = (this->minute % 10) + '0';
|
||||
timeString[5] = ':';
|
||||
timeString[6] = (this->second / 10) + '0';
|
||||
timeString[7] = (this->second % 10) + '0';
|
||||
timeString[8] = '\n';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue