|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.01.2008, 21:42 | #1 |
Пользователь Подтвердите свой е-майл
Регистрация: 21.05.2007
Сообщений: 88
|
Выполнение действия через промежуток времени
Привет Всем! Необходимо через определенный промежуток времени выполнять некоторые процедуры и результат выполнения отображать на экране. Подскажите пожалуйсто как это лучше сделать?
Уже Чему-то научился Но этого мало
|
04.01.2008, 21:56 | #2 |
Новичок
Джуниор
Регистрация: 22.12.2007
Сообщений: 204
|
лутше поставить тайиер)
|
04.01.2008, 22:38 | #3 |
Пользователь Подтвердите свой е-майл
Регистрация: 21.05.2007
Сообщений: 88
|
Я так и предполагал что первый ответ будет именно про таймер. В том то вся проблема что таймер меня не устраивает. Мне надо выполнить процедуру 10000 раз за секунду, или хотя бы на крайний случай 1000 раз в секунду а таймер уже при значении Timer.interval = 100 отстает от реального времени, я уж не говорю про Timer.interval = 1, разницы почти никакой.
Уже Чему-то научился Но этого мало
Последний раз редактировалось chingiz; 04.01.2008 в 22:46. |
04.01.2008, 23:44 | #4 |
Участник клуба Подтвердите свой е-майл
Регистрация: 14.12.2007
Сообщений: 1,434
|
Ну я думаю нужно организовать цикл.Только тогда все будет наверно зависить от железа и как вы оптимизируете ваши процедуры.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
|
05.01.2008, 00:07 | #5 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Лучше просто организовать поток и уже в нем, в цикле, постоянно выполнять определенные действия.
Есть еще функция QueryPerformanceCounter, с её помощью можно отсчитывать точные промежутки, вот только как это связать с секундами (и их долями) я не знаю. |
05.01.2008, 10:08 | #6 |
Пользователь Подтвердите свой е-майл
Регистрация: 21.05.2007
Сообщений: 88
|
Цикл не пойдет. Мне надо выполнить процедуру и ее результат отправить на внешнее устройство через порт, причем данную операцию нужно производить именно в заданный интервал времени, определяемый юзером. Т.е сейчас он захочет послать сигнал раз в секунду, а потом 10000 раз в секунду. Конкретно мне надо управлять шаговым двигателем, и из программы я должен управлять скоростью вращения двигателя, с паралельным показом на экране количества шагов сделанных двигателем.
Уже Чему-то научился Но этого мало
|
05.01.2008, 10:15 | #7 | |
Пользователь Подтвердите свой е-майл
Регистрация: 21.05.2007
Сообщений: 88
|
Цитата:
Насчет потока не знаю - надо подумать.
Уже Чему-то научился Но этого мало
|
|
05.01.2008, 12:18 | #8 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Искать её стоит в модуле Windows, а точнее в системной библиотеке kernel32.dll
Насколько я понимаю, она возвращает количество "тиков" процессора. За каждый такт микропроцессора увеличивается на единицу специальный регистр-счетчик. Вот функция и возвращает значение этого счетчика. В принципе, зная тактовую частоту процессора и вызывая эту функцию, можно рассчитать и интервал времени, но невозможно гарантировать постоянство этого интервала, особенно при очень малых значениях. Поток желателен в том смысле, чтобы основное окно при таких вычислительных нагрузках "не умирало". Последний раз редактировалось Jeni; 05.01.2008 в 12:29. |
05.01.2008, 12:20 | #9 |
Форумчанин
Регистрация: 29.12.2007
Сообщений: 137
|
chingiz - Windows не является системой реального времени и точную выдержку малых интервалов не гарантирует. Гарантировано на XP примерно 10 мс при малой нагрузке на процессор, ну 1 мс можно выжать с помощью мультимедийных таймеров и функции timeBeginPeriod, но не более, и то с погрешностью, которая зависит от загрузки процессора другими задачами. Точности менее 1 мс (1000 раз в секунду) вы не добьетесь НИКАК!
|
05.01.2008, 12:37 | #10 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
Посмотрите здесь:
http://www.softhelp.ru/delphi/class/...?c=exact_timer http://www.softhelp.ru/delphi/class/...reate_mm_timer но насчет интервалов Ins прав |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выполнение функции | nikleb | JavaScript, Ajax | 7 | 10.08.2008 01:49 |
указатель мыши автоматически должен совершать клик по заданному месту на экране, через промежуток времени | Deefrost | Qt и кроссплатформенное программирование С/С++ | 5 | 16.05.2008 20:25 |
Как зделать авто выполнение | Editor | Общие вопросы Delphi | 5 | 27.04.2008 21:01 |
Выполнение действия с компонентами в цикле | Ermiss | Общие вопросы Delphi | 4 | 01.11.2007 23:54 |
Выполнение действия в заданное время | WOWan234 | Помощь студентам | 6 | 02.05.2007 01:52 |