Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.043 c
3-1093068104
ZSerg
2004-08-21 10:01
2004.09.19
Слишком мало параметров. Требуется 1.


1-1093842109
Stype
2004-08-30 09:01
2004.09.19
Сложные формы


1-1094547953
Иван_1
2004-09-07 13:05
2004.09.19
Чтение Word овского файла (версии Word от 97 и выше)


14-1091091921
Красная Майка
2004-07-29 13:05
2004.09.19
Очередной MMP


6-1089375941
ilop
2004-07-09 16:25
2004.09.19
Как узнать имена всех компов в сети.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский