Вниз
Скачать: CL | DM;

Элемент Timer   Найти похожие ветки 

 
Петр   (2004-09-04 10:09) [0]

Hi
Ув. господа надо вызывать одну функцию каждую секунду, но событие onTimer происходит не через Timer.interval=1000, а через 1050-1200 мс. в результате чего некоторые секунды пропускаются. Если поставить интервал меньше, то функция иногда вызывается 2 раза в секунду и некоторые секунды пропускаются все равно.
С нетерпением жду ваших мнений.


 
KilkennyCat ©   (2004-09-04 10:31) [1]

Что стандартный таймер неточный - это не новость.
Используйте другой, или пишите свой.


 
Yr2   (2004-09-04 11:09) [2]

Если я правильно понял, то тебе нужно не точное попадание в секунду системного времени, а нужно зафиксировать факт изменения КАЖДОЙ секунды.В таком случае заведи глобальную перемнную OldTime; сделай интервал таймера меньше 1-й секунды (а по теореме Котельникова/Найквиста о частоте дискретизации сигналов лучше всего половину секунды, т.е. 500). При срабатывании таймера Получай значение системного времени в NewTime и сравнивай с OldTime. Если NewTime=OldTime, то ничего не делаем, иначе
begin
OldTime:=NewTime;
MyFunction;
end;


 
atruhin ©   (2004-09-04 14:52) [3]

>а по теореме Котельникова/Найквиста о частоте дискретизации >сигналов лучше всего половину секунды, т.е. 500
Может меня не правильно учили, но там говориться что частота должна быть не ниже , да и к данному случаю это не совсем имеет отношение.
поправка:
OldTime - не системное время а текущий счетчик секунд. иначе будет накопление ошибки.


 
Yr2   (2004-09-04 16:00) [4]

To atruhin
Уважаемый atruhin, будьте внимательны.
1. Свойство таймера задает ПЕРИОД (1с = 1000мс)! По теореме Котельникова ЧАСТОТА дискретизации должна быть действительно не ниже, частоты сигнала, а быть в два и более раза выше (то есть больше), чем частота дискретезуемого сигнала. Это означает, что ПЕРИОД будет в два раза меньше, т.е. 500 мс для нашего случая.
2. К данному случаю теорема Котельникова имеет отношение, т.к. мы рассматриваем сигнал в виде единичных отсчетов с односекундным интервалом. И наша задача - не пропустить ни одного отсчета. Как это сделать - чит. теорему.
3. Если Вы из OldTime сделаете "текущий счетчик секунд", то это как раз ничего не даст. Мало того, когда нибудь он у Вас переполнится...
В моем варианте OldTime - это всего лишь переменная для хранения значения предыдущего отсчета времени для того, чтобы сравнивать его с текущим, т.е. с NewTime.


 
Петр   (2004-09-05 09:16) [5]

Большое спасибо, получилось



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
4-1091704068
Santana
2004-08-05 15:07
2004.09.19
Определить дескриптор Grid-a


14-1093517819
lipskiy
2004-08-26 14:56
2004.09.19
Подскажите где найти коллекцию avi-анимашек


6-1089720525
ctranik
2004-07-13 16:08
2004.09.19
Как заставить IdHTTP запускатся автоматически


3-1093032170
Piter
2004-08-21 00:02
2004.09.19
Вложенные запросы


4-1090301441
makarov
2004-07-20 09:30
2004.09.19
Драйвер для Cd-rom




   Наверх