Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер 
V
    Опции темы
Garoh
Дата 22.1.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 29.8.2006
Где: Москва

Репутация: нет
Всего: нет



Доброго всем времени суток!
Мне один человек сказал, что есть таймер, который (поправьте, если пургу несу) связан с тактовой частотой компьютера и, соответственно, более точный, чем, к примеру, таймер класса TTimer. Помогите, отпишитесь, как использовать этот таймер, т.е. как его запускать и как вообще он называется. Если такового нет, расскажите, какие есть кроме обычного TTimer, потому как я уже убедился, что последний очень неточен, на его работу влияют посторонние процессы, и поэтому порой он вообще работает через пятую точку.
Заранее спасибо!
PM MAIL   Вверх
VectorMan
Дата 22.1.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antihero
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 9.4.2006

Репутация: нет
Всего: 4



Можно использовать мультимедийные таймеры с помощью функций timeSetEvent, timeKillEvent

PM   Вверх
segmentation_fault
Дата 23.1.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.2.2005
Где: в интернете

Репутация: нет
Всего: 1



или GetTickCount(), QueryPerformanceCounter(), clock() в ctime.h, много разных. 
Все три связаны с тактовой частотой, хотя насчет GetTickCount() 100% не уверен. 

Это сообщение отредактировал(а) segmentation_fault - 23.1.2007, 09:53
PM MAIL   Вверх
Anikmar
Дата 23.1.2007, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Все таймеры так или иначе связаны с тактовой частотой.
И на все таймеры влияют посторонние процессы. 
Чтобы не влияли - немного поможет приоритет процесса RealTime 
Либо перехват прерывания таймера (под ДОСом много раз делал, под виндами даже не пытался ни разу, не знаю возможно ли это вообще)

PM MAIL ICQ   Вверх
Bima
Дата 23.1.2007, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Вот пример.
Там использовано 4 таймера (API): 100, 200, 300 и 500 мс
и в цикле опроса вычисляется разница по времени между таймерами 200, 300, 500  и таймером в 100 мс.

Пример очень легкий, разберешься.

Добавлено @ 10:46 
smile

Это сообщение отредактировал(а) Bima - 23.1.2007, 10:46

Присоединённый файл ( Кол-во скачиваний: 37 )
Присоединённый файл  Timer.rar 3,02 Kb


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
ame49
Дата 24.1.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.1.2007

Репутация: нет
Всего: нет



Есть такая книга Borland C++ Builder, автом Шамис В.А., техника визуального программирования, в ней есть пример создания компонента точного таймера. Суть его работы заключается в том , что создается поток и запускается на выполнение с более высоким приоритетом, чем у основного процесса. Я сравнивал работу двух таймеров , мною созданного и стандартного, она ощутима.
PM MAIL   Вверх
Garoh
Дата 24.1.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 29.8.2006
Где: Москва

Репутация: нет
Всего: нет



Спасибо всем за помощь, буду разбираться =)
З.Ы: 2 дня инета не было, так что ответил только сейчас
PM MAIL   Вверх
Alexeis
Дата 24.1.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Цитата(ame49 @  24.1.2007,  16:21 Найти цитируемый пост)
в ней есть пример создания компонента точного таймера. Суть его работы заключается в том , что создается поток и запускается на выполнение с более высоким приоритетом, чем у основного процесса. Я сравнивал работу двух таймеров , мною созданного и стандартного, она ощутима. 


  Это называется мультимедийным таймером. Его точность обычно 1мс. И создается он при помощи.
Цитата(VectorMan @  22.1.2007,  20:39 Найти цитируемый пост)
мультимедийные таймеры с помощью функций timeSetEvent, timeKillEvent


Именно так он и работает, потому нет смысла изобретать велосипед.

Цитата(segmentation_fault @  23.1.2007,  09:50 Найти цитируемый пост)
QueryPerformanceCounter()

Дает самые точные тики, которые только возможно получить на писюке. У меня получалось до 0,1мкс, но точность зависит от частоты процессора.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0813 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.