[Źródło: https://icons.com/icon/40670/c-programming]
Program:
Główne zadanie tej funkcji polega na sprawdzeniu czy zadany odcinek czasu został już przekroczony czy jeszcze nie. Można ją zastosować w celu określenia czy dane zdarzenie wystąpiło po zadanym okresie czasu.
Jest to chyba najprostszy sposób sprawdzenia tej wartości gdy pobrany czas jest dostępny jako osobne zmienne.
Funkcja jest dosyć prosta więc nie ma sensu się tutaj specjalnie rozpisywać. Jako parametry przekazywane jest ilość sekund do odczekania, godzina wystąpienia danego zdarzenia oraz aktualny czas. W funkcji obliczana jest ilość sekund jakie upłynęły od pojawienia się zdarzenia do czasu pobrania aktualnych danych z zegara. Następnie sprawdzamy czy odczekaliśmy wystarczającą ilość czasu i na tej podstawie zwracamy podaną wartość.
Jest to chyba najprostszy sposób sprawdzenia tej wartości gdy pobrany czas jest dostępny jako osobne zmienne.
- static uint8_t checkTimeInBuffer(uint32_t secondsToWait,
- uint8_t hourRTCStart, uint8_t minutesRTCStart, uint8_t secondsRTCStart,
- uint8_t hourRTCActual, uint8_t minutesRTCActual, uint8_t secondsRTCActual)
- {
- uint32_t testValue = calculateSeconds(hourRTCActual, minutesRTCActual, secondsRTCActual) - calculateSeconds(hourRTCActual, minutesRTCActual, secondsRTCActual);
- if(testValue < secondsToWait)
- {
- return 1; //Nie przekroczono czasu
- }
- return 0; //Czas zostal przekroczony
- }
- uint32_t calculateSeconds(uint8_t hour, uint8_t minutes, uint8_t seconds)
- {
- return (hour* 3600) + (minutes * 60) + seconds;
- }
Funkcja jest dosyć prosta więc nie ma sensu się tutaj specjalnie rozpisywać. Jako parametry przekazywane jest ilość sekund do odczekania, godzina wystąpienia danego zdarzenia oraz aktualny czas. W funkcji obliczana jest ilość sekund jakie upłynęły od pojawienia się zdarzenia do czasu pobrania aktualnych danych z zegara. Następnie sprawdzamy czy odczekaliśmy wystarczającą ilość czasu i na tej podstawie zwracamy podaną wartość.