Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Вниз

Таймер   Найти похожие ветки 

 
Егорка   (2009-12-26 13:56) [0]

обычный использую с задержкой 20мс для вывода "бегущего" графика,но вывод происходит с небольшими рывками видимо изза неравномерных интервалов времени.
вопрос, как сделать "четкий" таймер,без лишней загрузки проца ?


 
Сергей М. ©   (2009-12-26 19:41) [1]


> Таймер [D7]
> обычный использую


Это который TTimer что ли ?
Так он  в принципе не может обеспечить такое временное разрешение - минимум 50 мс


 
DVM ©   (2009-12-26 19:43) [2]

http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=434


 
Anatoly Podgoretsky ©   (2009-12-26 19:57) [3]

> Сергей М.  (26.12.2009 19:41:01)  [1]

Минимум 10 мс и везение.


 
Anatoly Podgoretsky ©   (2009-12-26 20:00) [4]

> Anatoly Podgoretsky  (26.12.2009 19:57:03)  [3]

Это при условии не изменения кванта, и есть такая легальная возможность уменьшить квант до 1 мс


 
Сергей М. ©   (2009-12-26 20:03) [5]


> Anatoly Podgoretsky ©   (26.12.09 19:57) [3]


Да,  это как повезет.
Больше всего не повезет в Win98/Me - там 55 мс и более


 
DVM ©   (2009-12-26 20:08) [6]


> Anatoly Podgoretsky ©

Меняй не меняй, а сообщения таймера как имеющие низкий приоритет могут быть просто отброшены если у окна которому они назначаются есть дела поважнее и в нужное время таймер может просто не тикнуть.


 
Anatoly Podgoretsky ©   (2009-12-26 20:08) [7]

> Сергей М.  (26.12.2009 20:03:05)  [5]

Не стоит о грустном, кроме того Win9х не поддерживаемая система.


 
Anatoly Podgoretsky ©   (2009-12-26 20:38) [8]

> DVM  (26.12.2009 20:08:06)  [6]

Я не возражаю


 
0x00FF00   (2009-12-26 20:39) [9]

> вопрос, как сделать "четкий" таймер,без лишней загрузки
> проца ?

Использовать таймер с вытесняющей многопоточностью.
Создаётся функцией timeSetEvent из библиотеки winmm, и поддерживает теоретически любой квант времени с шагом в одну миллисекунду.
Для удаления таймера пользуй timeKillEvent оттуда же.


 
Егорка   (2009-12-27 12:47) [10]


> timeSetEvent

ясно попробуем

еще уточнение
другой график использует поток со Sleep(20), при этом в Вин7 он также подергивается но в "низших" виндах все гладко
вопрос в Вин7 какието проблемы\изменения с выводом через GDI ?


 
DVM ©   (2009-12-27 20:51) [11]


> Егорка   (27.12.09 12:47) [10]

что то мне кажется, что причины подергивания совсем иные.


 
Anatoly Podgoretsky ©   (2009-12-27 21:04) [12]

Возможно, но человеческий глаз отлично замечает нестабильность и выглядит именно как подергивание.


 
KilkennyCat ©   (2009-12-27 21:54) [13]


> DVM ©   (27.12.09 20:51) [11]


тебе не кажется, и дело даже не в таймере, учитывая 9 верхних


 
DVM ©   (2009-12-27 22:48) [14]


> Егорка   (26.12.09 13:56) 

Мне непонятно одно - для кого и для чего предназначен такой бегущий график, что обновления скажем раз в секунду недостаточно? Зачем его обновлять с частотой 30-50 FPS ? Только процессор грузить.


 
Германн ©   (2009-12-28 01:45) [15]


> DVM ©   (27.12.09 22:48) [14]
>
>
> > Егорка   (26.12.09 13:56)
>
> Мне непонятно одно - для кого и для чего предназначен такой
> бегущий график, что обновления скажем раз в секунду недостаточно?
>  Зачем его обновлять с частотой 30-50 FPS ?

А при чём тут FPS?


 
KilkennyCat ©   (2009-12-28 02:18) [16]


> А при чём тут FPS?

А что еще может грузить? Громадный астрономический просчет полученной данной?
Как показывает практика, просчет графики и вывод графики по ресурсоемкости 1:9 соответственно.
Ну, это конечно, исходя от нормального программирования.


 
DVM ©   (2009-12-28 08:33) [17]


> Германн ©   (28.12.09 01:45) [15]


> А при чём тут FPS?

FPS = Frames per second потому что вероятно. У него таймер на 20 мс - это значит что таймер отрабатывает 50 раз в секунду если повезет и следовательно 50 раз в секунду он обновит картинку.


 
oldman ©   (2009-12-28 09:23) [18]


> DVM ©   (28.12.09 08:33) [17]


А глаз-то различает 24
:)))


 
KilkennyCat ©   (2009-12-28 09:34) [19]


> oldman ©   (28.12.09 09:23) [18]

это один глаз. Обычно, у людей два глаза. значит, 48.


 
KilkennyCat ©   (2009-12-28 09:35) [20]

у японцев - 4 глаза. Поэтому они первые начали выпускать телевизоры 100гц.


 
Anatoly Podgoretsky ©   (2009-12-28 11:26) [21]

> oldman  (28.12.2009 09:23:18)  [18]

> глаз не различает 24 и даже 12


 
Anatoly Podgoretsky ©   (2009-12-28 11:27) [22]

> KilkennyCat  (28.12.2009 09:35:20)  [20]

У них глаза особые.


 
clickmaker ©   (2009-12-28 11:45) [23]

> У них глаза особые.

чем уже глаз, тем больше его разрешающая способность?


 
Anatoly Podgoretsky ©   (2009-12-28 12:04) [24]

> clickmaker  (28.12.2009 11:45:23)  [23]

Только 100 герцами можно пробить.
Вообще то не шучу, тонер для цветных принтеров делают с пометко для Азии, для Европы.


 
KilkennyCat ©   (2009-12-28 12:04) [25]


> clickmaker ©   (28.12.09 11:45) [23]

ты плохо учил физику. где вода быстрее движется, в толстой части трубы или в тонкой?


 
Anatoly Podgoretsky ©   (2009-12-28 12:06) [26]


> Anatoly Podgoretsky ©   (28.12.09 12:04) [24]

Кстати из-за узких глаз именно.


 
Егорка   (2009-12-28 19:48) [27]


> Зачем его обновлять с частотой 30-50 FPS ? Только процессор
> грузить.

не грузица вообще ,т.е. 0% по диспечеру, даже на олдовом компе

> что то мне кажется, что причины подергивания совсем иные.

я тоже думаю об этом , и почему именно в Вин7, а в старых нет
таймер то дергается видимо изза неравномерности тиков,а поток почему?
и даже не дергается а какбы тормозит\подвисает
рисуется на битмапе  в памяти, выводится через Synchronize и Btblt


 
sniknik ©   (2009-12-28 23:10) [28]

> чем уже глаз, тем больше его разрешающая способность?
тогда уж, замечающая способность.

> таймер то дергается видимо изза неравномерности тиков,а поток почему?
знаешь, если и были какие то сомнения до этого, то этой фразой ты все их развеял... делаю ставку на твой код, как на основную причину.


 
Игорь Шевченко ©   (2009-12-29 02:03) [29]

Битва экстрасенсов. Литвин нервно курит, ожидая очередного поражения


 
2expres   (2009-12-29 12:12) [30]

Сталкивался с подобной проблемой решил довольно просто:
1. Создаю поток в котором просто считываю системное время с помощью функции TimeGetTime и проверяю время вышло или нет.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.007 c
3-1235913922
sco
2009-03-01 16:25
2010.03.07
ошибка в SQL коде


15-1261322445
oxffff
2009-12-20 18:20
2010.03.07
Сломать палец на ноге на ровном месте не проблема.


2-1261733510
2expres
2009-12-25 12:31
2010.03.07
Mediaplayer


15-1260399563
wl
2009-12-10 01:59
2010.03.07
Линукс - зачем?


2-1261998166
citizen
2009-12-28 14:02
2010.03.07
Дескрипторы дочерних окон





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский