Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: 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 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
14-1093564599
vidiv
2004-08-27 03:56
2004.09.19
Как читается слово "Ouija" ?


1-1094113953
Zhekson
2004-09-02 12:32
2004.09.19
MessgeDlg


1-1094267367
Aono4ever
2004-09-04 07:09
2004.09.19
Переход к фиксированному значению через текущее


11-1080588102
GuAV
2004-03-29 23:21
2004.09.19
KOL + MCK + Frame = ?


4-1090776214
Skyhawk
2004-07-25 21:23
2004.09.19
Как программно нажать Alt-Ctrl-Del