• Егорка (26.12.09 13:56) [0]
    обычный использую с задержкой 20мс для вывода "бегущего" графика,но вывод происходит с небольшими рывками видимо изза неравномерных интервалов времени.
    вопрос, как сделать "четкий" таймер,без лишней загрузки проца ?
  • Сергей М. © (26.12.09 19:41) [1]

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


    Это который TTimer что ли ?
    Так он  в принципе не может обеспечить такое временное разрешение - минимум 50 мс
  • DVM © (26.12.09 19:43) [2]
  • Anatoly Podgoretsky © (26.12.09 19:57) [3]
    > Сергей М.  (26.12.2009 19:41:01)  [1]

    Минимум 10 мс и везение.
  • Anatoly Podgoretsky © (26.12.09 20:00) [4]
    > Anatoly Podgoretsky  (26.12.2009 19:57:03)  [3]

    Это при условии не изменения кванта, и есть такая легальная возможность уменьшить квант до 1 мс
  • Сергей М. © (26.12.09 20:03) [5]

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


    Да,  это как повезет.
    Больше всего не повезет в Win98/Me - там 55 мс и более
  • DVM © (26.12.09 20:08) [6]

    > Anatoly Podgoretsky ©

    Меняй не меняй, а сообщения таймера как имеющие низкий приоритет могут быть просто отброшены если у окна которому они назначаются есть дела поважнее и в нужное время таймер может просто не тикнуть.
  • Anatoly Podgoretsky © (26.12.09 20:08) [7]
    > Сергей М.  (26.12.2009 20:03:05)  [5]

    Не стоит о грустном, кроме того Win9х не поддерживаемая система.
  • Anatoly Podgoretsky © (26.12.09 20:38) [8]
    > DVM  (26.12.2009 20:08:06)  [6]

    Я не возражаю
  • 0x00FF00 (26.12.09 20:39) [9]
    > вопрос, как сделать "четкий" таймер,без лишней загрузки
    > проца ?

    Использовать таймер с вытесняющей многопоточностью.
    Создаётся функцией timeSetEvent из библиотеки winmm, и поддерживает теоретически любой квант времени с шагом в одну миллисекунду.
    Для удаления таймера пользуй timeKillEvent оттуда же.
  • Егорка (27.12.09 12:47) [10]

    > timeSetEvent

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

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

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

    что то мне кажется, что причины подергивания совсем иные.
  • Anatoly Podgoretsky © (27.12.09 21:04) [12]
    Возможно, но человеческий глаз отлично замечает нестабильность и выглядит именно как подергивание.
  • KilkennyCat © (27.12.09 21:54) [13]

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


    тебе не кажется, и дело даже не в таймере, учитывая 9 верхних
  • DVM © (27.12.09 22:48) [14]

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

    Мне непонятно одно - для кого и для чего предназначен такой бегущий график, что обновления скажем раз в секунду недостаточно? Зачем его обновлять с частотой 30-50 FPS ? Только процессор грузить.
  • Германн © (28.12.09 01:45) [15]

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

    А при чём тут FPS?
  • KilkennyCat © (28.12.09 02:18) [16]

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

    А что еще может грузить? Громадный астрономический просчет полученной данной?
    Как показывает практика, просчет графики и вывод графики по ресурсоемкости 1:9 соответственно.
    Ну, это конечно, исходя от нормального программирования.
  • DVM © (28.12.09 08:33) [17]

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


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

    FPS = Frames per second потому что вероятно. У него таймер на 20 мс - это значит что таймер отрабатывает 50 раз в секунду если повезет и следовательно 50 раз в секунду он обновит картинку.
  • oldman © (28.12.09 09:23) [18]

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


    А глаз-то различает 24
    :)))
  • KilkennyCat © (28.12.09 09:34) [19]

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

    это один глаз. Обычно, у людей два глаза. значит, 48.
  • KilkennyCat © (28.12.09 09:35) [20]
    у японцев - 4 глаза. Поэтому они первые начали выпускать телевизоры 100гц.
  • Anatoly Podgoretsky © (28.12.09 11:26) [21]
    > oldman  (28.12.2009 09:23:18)  [18]

    > глаз не различает 24 и даже 12
  • Anatoly Podgoretsky © (28.12.09 11:27) [22]
    > KilkennyCat  (28.12.2009 09:35:20)  [20]

    У них глаза особые.
  • clickmaker © (28.12.09 11:45) [23]
    > У них глаза особые.

    чем уже глаз, тем больше его разрешающая способность?
  • Anatoly Podgoretsky © (28.12.09 12:04) [24]
    > clickmaker  (28.12.2009 11:45:23)  [23]

    Только 100 герцами можно пробить.
    Вообще то не шучу, тонер для цветных принтеров делают с пометко для Азии, для Европы.
  • KilkennyCat © (28.12.09 12:04) [25]

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

    ты плохо учил физику. где вода быстрее движется, в толстой части трубы или в тонкой?
  • Anatoly Podgoretsky © (28.12.09 12:06) [26]

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

    Кстати из-за узких глаз именно.
  • Егорка (28.12.09 19:48) [27]

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

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

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

    я тоже думаю об этом , и почему именно в Вин7, а в старых нет
    таймер то дергается видимо изза неравномерности тиков,а поток почему?
    и даже не дергается а какбы тормозит\подвисает
    рисуется на битмапе  в памяти, выводится через Synchronize и Btblt
  • sniknik © (28.12.09 23:10) [28]
    > чем уже глаз, тем больше его разрешающая способность?
    тогда уж, замечающая способность.

    > таймер то дергается видимо изза неравномерности тиков,а поток почему?
    знаешь, если и были какие то сомнения до этого, то этой фразой ты все их развеял... делаю ставку на твой код, как на основную причину.
  • Игорь Шевченко © (29.12.09 02:03) [29]
    Битва экстрасенсов. Литвин нервно курит, ожидая очередного поражения
  • 2expres (29.12.09 12:12) [30]
    Сталкивался с подобной проблемой решил довольно просто:
    1. Создаю поток в котором просто считываю системное время с помощью функции TimeGetTime и проверяю время вышло или нет.
Есть новые Нет новых   [134432   +19][b:0][p:0.001]