Вычисление времени
- Войдите на сайт для отправки комментариев
Втр, 03/01/2017 - 19:06
Добрый день.
Помогал знакомому сделать GSM-управление. Блок должен был работать круглосуточно, а в программе для вычисления интервалов времени использовалась функция millis(). Чтобы избежать ошибки в связи с переполнением счётчика написал функцию корректного вычисления разности двух показаний millis().
// Функция определения корректной разности времени
// Разность должна быть меньше 24 суток!
unsigned long MillisDifference(unsigned long StartTime, unsigned long EndTime)
{
unsigned long CorrectionMillis = 0; // Поправка
// Если было переполнение millis() - ввести поправку
if (StartTime > EndTime) CorrectionMillis = 2147483648;
// Корректируем время
EndTime = EndTime + CorrectionMillis;
StartTime = StartTime - CorrectionMillis;
CorrectionMillis = EndTime - StartTime; // Вычисляем разность
return CorrectionMillis; // Возвращаем разность
}
Надеюсь кому-нибудь пригодится.
Сейчас начнётся :)))