Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

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

 
Егорка   (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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.015 c
10-1164879867
salexn
2006-11-30 12:44
2010.03.07
Регистрация сервера


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


10-1163588110
312kbps
2006-11-15 13:55
2010.03.07
Получить конект через IDispatch !


2-1262773465
NewZ
2010-01-06 13:24
2010.03.07
Рабочий стол Windows.


9-1183152132
ElectriC
2007-06-30 01:22
2010.03.07
Мобильные игры