Главная страница
    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.065 c
8-1192181973
deswan
2007-10-12 13:39
2009.03.15
gif анимация


15-1231929479
boriskb
2009-01-14 13:37
2009.03.15
Подскажите выбор


2-1213617871
Layner
2008-06-16 16:04
2009.03.15
Как по "правильному" распарсить стр. дату "22/06/2008 08:54:04"


2-1232510423
Тимоха
2009-01-21 07:00
2009.03.15
об использовании плагинов


15-1231169901
@!!ex
2009-01-05 18:38
2009.03.15
Посоветуйте: какой винт покупать?





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