Посчитать время

Hello All!

Вопрос чисто софтварный. Есть 100 датчиков. Исходное состояние - пассивное. Как только датчик переходит в активное состояние нужно начать отсчет времени активности. Максимальное количество дней активности скажем 255. Точность измерения - 1сек. Думаю так:

  1. Есть глобальный таймер который считает с инкрементом 1сек при включении девайса.
  2. Для каждого датчика выделяю переменную в которую при срабатывании датчика просто переписываю текущее время из глоб. таймера.
  3. Когда нужно узнать время активности - от текущего времени отнимаю то что в переменной для каждого датчика.

Вопрос: какой использовать формат для хранения времени и собственно процедуру вычисления разности.

Тупо в лоб по байту на dd.hh:mm:ss как-то криво в части вычислений.

Roman

Reply to
Roman Gorbunov
Loading thread data ...

Hallo Roman!

RG> Вопрос: какой использовать формат для хранения времени и собственно RG> процедуру вычисления разности. RG> Тупо в лоб по байту на dd.hh:mm:ss как-то криво в части вычислений. unixtime Исходников в инете навалом.

WBR Yaroslav A. Komarov

Reply to
Yaroslav Komarov

Sat Feb 24 2007 21:18, Roman Gorbunov wrote to All:

RG> Hello All!

RG> Вопрос чисто софтварный. RG> Есть 100 датчиков. Исходное состояние - пассивное. Как только датчик RG> переходит в активное состояние нужно начать отсчет времени активности. RG> Максимальное количество дней активности скажем 255. Точность измерения - RG> 1сек. RG> Думаю так: RG> 1. Есть глобальный таймер который считает с инкрементом 1сек при RG> включении девайса. RG> 2. Для каждого датчика выделяю переменную в которую при срабатывании RG> датчика просто переписываю текущее время из глоб. таймера. RG> 3. Когда нужно узнать время активности - от текущего времени отнимаю то RG> что в переменной для каждого датчика.

RG> Вопрос: какой использовать формат для хранения времени и собственно RG> процедуру вычисления разности.

RG> Тупо в лоб по байту на dd.hh:mm:ss как-то криво в части вычислений.

man rtfm time(), difftime();

SY, EK

Reply to
Evgeny Kotsuba

Привет Roman!

24 Feb 07 21:18, Roman Gorbunov писал All:

RG> 1. Есть глобальный таймер который считает с инкрементом 1сек при RG> включении девайса.

RG> Вопрос: какой использовать формат для хранения времени

Hе формат, а тип. time_t. А формат тебя, по идее, волновать не должен.

RG> и собственно процедуру вычисления разности.

time_t delta = current - start;

RG> Тупо в лоб по байту на dd.hh:mm:ss как-то криво в части вычислений.

Противоречит п. 1, где мы договорились иметь счетчик _секунд_ и ничего больше.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... G8: иногда лучше дирижировать, чем говорить.

Reply to
Alex Mogilnikov

Hello, Alex! You wrote to Roman Gorbunov on Sun, 25 Feb 2007 04:33:12 +0300:

RG>> Вопрос: какой использовать формат для хранения времени

AM> Hе формат, а тип. time_t. А формат тебя, по идее, волновать не AM> должен.

RG>> и собственно процедуру вычисления разности. AM> time_t delta = current - start;

Не учи людей плохому. Если уж используется time_t, то лучше пользоваться difftime() для вычисления разности.

WBR, AVB

Reply to
Alexey V Bugrov

Hello Roman!

24 Feb 07 21:18, you wrote to All:

RG> Вопрос: какой использовать формат для хранения времени и собственно RG> процедуру вычисления разности. Юниксоиды давно решили этот вопрос в пользу целого к-ва секунд от эпохи. Число дней вычисляется как остаток от деления на 86400.

RG> Тупо в лоб по байту на dd.hh:mm:ss как-то криво в части вычислений.

Четыре деления с остатком не затруднят даже раз в секунду.

Anatoly

Reply to
Anatoly Mashanov

Привет Alexey!

25 Feb 07 11:00, Alexey V Bugrov писал Alex Mogilnikov:

RG>>> и собственно процедуру вычисления разности. AM>> time_t delta = current - start;

AB> Hе учи людей плохому. Если уж используется time_t, то лучше AB> пользоваться difftime() для вычисления разности.

Hе понимаю, чем плохо вычисление разности как целого без преобразования его в формат плавающей точки. При том, что не любое целое вообще представимо типом double. При том, что ни ctime(), ни gmtime(), которые могут понадобиться для вывода результата в человеко-понятном виде, принимают именно time_t, а не double. Что потом с этим double делать, кроме последующего обратного преобразования в time_t? Я вижу в использовании difftime() только потерю точности при округлении...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Владею дыроколом на уровне пользователя.

Reply to
Alex Mogilnikov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.