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

Вниз

QueryPerformanceFrequency задать временной интервал   Найти похожие ветки 

 
Evgengold   (2009-01-22 18:07) [0]

Добрый вечер. У меня такой вопрос  нужно задать время на выполнение определенной опреции с точностью до микрсек. Для этого использую функцию  QueryPerformanceFrequency и QueryPerformanceCounter. Не нашел нормального описания ип риходится эксперементировать.
Написал код программы но она не выподлняет задержки. В чем может быть ошибка и как использовать эти функции. Большое спасибо
For i7:=1 to 10000 do
begin
 QueryPerformanceFrequency(tFreq);
 QueryPerformanceCounter(tBegin);

 EscapeCommFunction(hPort, SETDTR); // выполнение первой команды
 While  (tEnd - tBegin) / tFreq <0.000026 do QueryPerformanceCounter(tEnd);

 EscapeCommFunction(hPort, CLRDTR);// выполнение второй команды
 QueryPerformanceFrequency(tFreq);
 QueryPerformanceCounter(tBegin);
 While  (tEnd - tBegin) / tFreq <0.000026 do  
   QueryPerformanceCounter(tEnd);
 end;


 
Jeer ©   (2009-01-22 18:13) [1]

Если Вы о настольных версиях Windows, то эта ОС не является системой реального времени.


 
evgengold   (2009-01-22 20:00) [2]

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


 
Сергей М. ©   (2009-01-22 20:27) [3]


> evgengold   (22.01.09 20:00) [2]


Вот ты ж фома неверующий)
Ну не получишь ты требуемой тебе прецизионности !
Это в который уже раз тебе сказано - вне ОСРВ или хотя бы без привелегий реального времени в мультизадачной ОС все попытки получить временные выдержки такой точности заведомо обречены на провал.


 
Германн ©   (2009-01-23 00:48) [4]


> Это в который уже раз тебе сказано - вне ОСРВ или хотя бы
> без привелегий реального времени в мультизадачной ОС все
> попытки получить временные выдержки такой точности заведомо
> обречены на провал.

Вроде как у некоторых получается. Ибо нужны короткие пакеты импульсов. Но эти "некоторые" довольно опытные люди (как в знании железа и ОС, так и в программировании). А автор и СОМ-порт ещё только начал осваивать. И разбираться в тех примерах кода, которые есть в И-нете, сам не хочет. :(
Кто-то ему сказал, что такое легко сделать "с наскока".


 
Evgengold   (2009-01-23 10:55) [5]

Зря вы меня раскритиковали! Задержка работает на микросекундах нормально даже при изменении загрузки процессора. конечно есть небольшие отклонения но меня устраивает а ошибка у меня была простая.
Вот нормальный код
tEnd:=0;
For i7:=1 to 1000000 do
begin
 QueryPerformanceFrequency(tFreq);
 QueryPerformanceCounter(tBegin);
 EscapeCommFunction(hPort, SETDTR);
 While  (tEnd - tBegin) / tFreq <0.000011 do  // Задержка 11 микросек
 begin
   QueryPerformanceCounter(tEnd);
 end;
 QueryPerformanceFrequency(tFreq);
 QueryPerformanceCounter(tBegin);
 EscapeCommFunction(hPort, CLRDTR);
 While  (tEnd - tBegin) / tFreq <0.000011 do  // Задержка 11 микросек
 begin
   QueryPerformanceCounter(tEnd);
 end;

 end;


 
Сергей М. ©   (2009-01-23 11:11) [6]

Сегодня работает, а завтра перестанет.
Ибо в системе может быть активным процесс, который имея соответствующие привелегии и приоритет возжелает получить (и получит !) непрерывный квант времени в десятки или сотни микросекунд, что неминуемо приведет к фиаско твою "фомологику" и, как результат, к неработоспособности твоего алгоритма)


 
Jeer ©   (2009-01-23 11:28) [7]


> Evgengold   (23.01.09 10:55) [5]
>
> Зря вы меня раскритиковали!


Тебе не критиковали, для этого ты еще не дорос :)
Просто указали на ограниченность платформы для работы в реал-тайм.



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

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

Наверх





Память: 0.46 MB
Время: 0.044 c
3-1215428978
nemirof
2008-07-07 15:09
2009.03.15
Переделка проекта с Paradox в Interbase/Firebird


2-1230972021
Pavelkq
2009-01-03 11:40
2009.03.15
OnClick по картинке в RichEdit.


2-1232518754
charoey_mag
2009-01-21 09:19
2009.03.15
Потоки и Indy


15-1231317258
Фант
2009-01-07 11:34
2009.03.15
Как сохранить картинку в gif?


15-1231427254
loki_6681
2009-01-08 18:07
2009.03.15
Экспорт данных из Foxpro





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