Вычисление времени
- Войдите на сайт для отправки комментариев
Втр, 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; // Возвращаем разность }
Надеюсь кому-нибудь пригодится.
Сейчас начнётся :)))