Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
ВнизЭлемент 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c