Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизУменьшение задержки Найти похожие ветки
← →
andrew_john © (2005-06-26 22:07) [0]Добрый... Возникла заморочка: программа обслуживания измерительного прибора написана на третьей Дельфи. Необходимо посылать импульсы на внешнее устройство, а потом прорисовывать точки на графике. (синхронно) Устанавливается на Первый Пень. Импульсы надо посылать с достаточно малой периодичностью. Возникает большая задержка по времени. Как можно ее уменьшить?
Спасибо!
← →
Virgo_Style © (2005-06-26 23:07) [1]Как Вы считаете, в Вашем вопросе содержится хоть что-то, исходя из чего можно было бы дать Вам какие-то рекомендации?
Пока что можно предложить
1. Заменить компьютер;
2. Заменить прибор;
3. Переписать программу.
← →
Kerk © (2005-06-27 00:43) [2]Virgo_Style © (26.06.05 23:07) [1]
Ну ты чего тупишь, а?
Ясно же, что ошибка в 17й строке!
← →
Virgo_Style © (2005-06-27 09:04) [3]Kerk © (27.06.05 0:43) [2]
Ну ты чего тупишь, а?
Ясно же, что ошибка в 17й строке!
см. п. 3 :-)
← →
Kerk © (2005-06-27 09:09) [4]Virgo_Style © (27.06.05 9:04) [3]
см. п. 3 :-)
Там слишком глобальный пункт.
Надо было: "переписать 17ю строку" :)
← →
Thaddy (2005-06-27 14:09) [5]Your paint routines are not good enough.
1) Use clipping region, and / or
2) prepare a polyline from buffer and draw it at once, i.e. store the pulses in an array of Tpoint, and when painting is needed, call polyline, adn /or
3) Use the API function to shift an image left and draw the next point in the empty space (forgot how it was called, come back to that, It does exist)
I would do either 1) or 2), with preference for 2) for scope
← →
alpet © (2005-06-27 14:15) [6]Положительный прирост иногда дает использование [b]GdiSetBatchLimit[/b]. Для большей производительности можно отсылать импульсы пачками, ибо Real-Time синхронности с графиком добиться в любом случае не удасться.
← →
miek © (2005-06-27 20:56) [7]несколько советов.
0) выяснить, _что именно_ тормозит - процедура снятия сигналов или отрисовка
1) не отрисовывать прямо на экране, а рисовать картинку в памяти, с помощью прямого доступа к памяти. желательно в 16-битном формате.
2) убрать все операции с длинными строками (можно заменить на ansistring)
3) убрать все выделения/освобождения памяти из критичного участка. резервировать всю необходимую память заранее.
4) если ничто не помогает, повысить приоритет потока программы до High. например, так: setprocesspriority (getcurrentprocess, high_priority_class)
← →
Fay © (2005-06-27 21:26) [8]miek © (27.06.05 20:56) [7]
>> рисовать картинку в памяти, с помощью прямого доступа к памяти.
М.б. я очень тупой, но нельзя ли поподробнее про прямой доступ?
>> убрать все операции с длинными строками (можно заменить на ansistring)
Заменить длинные строки на длинные строки? Где и зачем?!
>> если ничто не помогает, повысить приоритет потока программы до High
это не решение, типа гранитного тампакса.
← →
Маг Похмеляйнен (2005-06-27 21:59) [9]А что значит "с достаточно малой периодичностью" - сколько у вас это в цифрах?
Ловите ли ответ?
← →
GrayFace © (2005-06-28 20:44) [10]Fay © (27.06.05 21:26) [8]
М.б. я очень тупой, но нельзя ли поподробнее про прямой доступ?
TBitmap.Scanline
См. статью "Поставить точку... Быстрый доступ к пикселам TBitmap"
← →
Thaddy (2005-06-29 12:12) [11]With very high periodicity from the signal, the screen has always insufficient resolution, so as I said: collect the points in a (poly)poly set of points, and only draw on certain intervals. This has the best results. I do this for waves and my in own scope control. His problem really is that he paints too much (every change)and pianting is slow (even if you use scanline or bitblt)
It is better to record every change and paint the polyline as requested by the system and on a fixed time using a timer. (And with the paint tips I mentioned)
← →
-=S.S=- © (2005-06-30 11:18) [12]Если необходимо иметь точность више чем 50 мс то под виндой не выйдет ... нужно писать под голый ДОС. Удачи
← →
GrayFace © (2005-06-30 12:10) [13]-=S.S=- © (30.06.05 11:18) [12]
Почему же?
← →
GrayFace © (2005-07-02 20:21) [14]Ой! Че это я такие глупые вопросы задаю! -=S.S=- © (30.06.05 11:18) [12] - это полная чушь! Кроме TTimer"а есть еще WaitableTimer и мультимедийный таймер (timeSetEvent).
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c