Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 76
1

добавление временного интервала в RTC

15.12.2020, 12:04. Показов 661. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Такой вопрос. Необходимо к текущему времени в RTC добавить интервал времени. При этом произвести учет даты с учетом количества дней в месяце и высокосного года.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2020, 12:04
Ответы с готовыми решениями:

Задан момент начала временного интервала и его продолжительность. Определить момент окончания интервала
задан момент начала временного интервалаи его продолжительность (в часах, минутах и секундах)....

Отсчет временного интервала
На прокатном стане объект попадает под первый фотодатчик и начинается отсчет времени, а когда он...

Расчет временного интервала
Есть две ячейки A1 и A2 в которых задано время в формате xx:xx:xx. В третей ячейки подсчитано...

Программирование временного интервала
Привет Всем! Подскажите. Как можно реализовать в аccess , что бы при выборе в комбобоксе например...

7
Эксперт .NET
11200 / 7127 / 1588
Регистрация: 25.05.2015
Сообщений: 21,585
Записей в блоге: 14
15.12.2020, 15:27 2
Получить время в формате Unix. Прибавить нужное число секунд. Перевести обратно в человеческий вид. Примеры перевода на форуме были.
0
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 76
15.12.2020, 15:41  [ТС] 3
Этот подход я сейчас и реализую. Если секунд == 60 то надо к минутам прибавить += 1 а секунды сбрасываем в ноль. И далее учитывать часы, дни, месяцы, год. Количество дней в месяце и высокосный год.
Думал может сообщество предложит более оригинальное решение.
Уточню такой момент - софт пишется для микроконтроллера stm32l4xx, компилятор gcc.
0
Эксперт .NET
11200 / 7127 / 1588
Регистрация: 25.05.2015
Сообщений: 21,585
Записей в блоге: 14
15.12.2020, 15:47 4
Какой такой "этот"? Я об одном говорю, вы - о другом.
0
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 76
15.12.2020, 16:08  [ТС] 5
Вполне возможно я не совсем понял. Тогда к текущему времени прибавим интервал в секундах и результат опять занесем в RTC. RTC самостоятельно исправит дату/время. Но мне не понятно. Переменная секунд uint8_t тоесть максимум 256 значение может содержать. А если мне надо прибавить интервал в несколько часов, то уже начнутся грабли... Могли бы вы более детально раскрыть ваш ответ.
0
Эксперт .NET
11200 / 7127 / 1588
Регистрация: 25.05.2015
Сообщений: 21,585
Записей в блоге: 14
15.12.2020, 16:18 6
Да куда уж детальнее-то?
Из часов считываем время и переводим в формат Unix.
Храним в переменной типа uint64_t или time_t (в некоторой версии gcc его тип сменили с uint32_t на uint64_t).
Прибавляем количество секунд. Никуда не заносим и не исправляем (это вообще чего?).

Високосные, месяцы и т.п. получаются уже при переводе из unix time в обычный вид. RTC тут ни при чём.

Кто владеет пошаговым алгоритмом преобразования UNIX->YYMMDD. и обратно? Поделитесь пожалуйста!
Из секунд в дату
0
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 76
15.12.2020, 17:38  [ТС] 7
Спасибо
0
Эксперт .NET
11200 / 7127 / 1588
Регистрация: 25.05.2015
Сообщений: 21,585
Записей в блоге: 14
16.12.2020, 20:10 8
Перевод из unixtime в понятное для вас:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
DateTime::DateTime(time_t unixTime)
{
  struct tm t;
  localtime_r(&unixTime, &t);
 
  this->mTime.hours = static_cast<uint8_t>(t.tm_hour);
  this->mTime.minutes = static_cast<uint8_t>(t.tm_min);
  this->mTime.seconds = static_cast<uint8_t>(t.tm_sec);
  this->mDate.weekDay = static_cast<uint8_t>(t.tm_wday);
  this->mDate.monthDay = static_cast<uint8_t>(t.tm_mday);
  this->mDate.month = static_cast<uint8_t>(t.tm_mon) + 1;
  this->mDate.year = static_cast<uint8_t>(t.tm_year) + 1900;
}
и обратно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
time_t DateTime::unixTime() const
{
  tm time;
 
  time.tm_hour = this->mTime.hours;
  time.tm_min = this->mTime.minutes;
  time.tm_sec = this->mTime.seconds;
  time.tm_mday = this->mDate.monthDay;
  time.tm_mon = this->mDate.month - 1;
  time.tm_wday = this->mDate.weekDay;
  time.tm_year  = this->mDate.year - 1900;
 
  time.tm_isdst = 0;
 
  time_t t = mktime(&time);
  return t;
}
В time_t получаются секунды. Добавили, например, 3600, получили +1 час.
Т.н. учёт, о котором вы говорили, должен автоматом получаться из-за библиотечных функций mktime, localtime_r.
Их описание:
https://en.cppreference.com/w/c/chrono/localtime
https://en.cppreference.com/w/c/chrono/mktime
0
16.12.2020, 20:10
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2020, 20:10
Помогаю со студенческими работами здесь

SCHED_RR изменение временного интервала
Подскажите пожалуйста. Только начал изучать планирование процессов и sched_setscheduler. Сейчас...

слайдер для временного интервала
Доброго времени суток, товарищи, подскажите пожалуйста, как можно реализовать слайдер для...

Вывод записей из временного интервала
Нужно вывести записи которые заданны в этом временном интервале.Помогите плез)Время я ввожу в...

Отсеять из временного интервала время
Добрый день, есть столбец с данными о дате и времени, когда пользователь заходит в систему, из...

Таймер с дополнительным отслеживанием временного интервала
Всем здравствуйте. Решается следующая задача: В программе выполняется ряд циклических процедур....

Сравнение временного интервала(дат) с заданной
Приветствую всех, уважаемые форумчане! Заранее прошу простить, если это где-то уже решено(сам не...

InfluxDB оценка временного интервала записей
Всем привет! В influxdb.conf параметр max-series-per-database установлен 1млн. Лимит исчерпан и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетных компьютеров началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru