Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Задержка (<1мс) в WinXP на VisualC++

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
220v_Progressor



Зарегистрирован: 08.04.2004
Сообщения: 2
Откуда: Барнаул

СообщениеДобавлено: Вт Апр 13 2004 12:39    Заголовок сообщения: Задержка (<1мс) в WinXP на VisualC++ Ответить с цитатой

Проблема в том, что в LPT-порт (драйвер для порта я уже достал) нужно подать сигнал длительностью в несколько микросекунд. Возможно ли такое осуществить под Windows Xp и как это реализовать на Visual C++.
_________________
Don't worry, be happy !
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Пт Апр 16 2004 19:40    Заголовок сообщения: Ответить с цитатой

Если не ошибаюсь, минимальная задержка через системный таймер = 56 миллисекунд. Уменьшить, я думаю можно, эмулировав таймер, какими-либо вычислениями, скорость котрых известна (Посчитать количество операций в секунду и поделить на 1000. Потом производить сколько надо операций для задержки).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AlexNor
Гость





СообщениеДобавлено: Сб Апр 17 2004 23:57    Заголовок сообщения: Ответить с цитатой

Windows не является системой реального времени... со всеми вытекающими. Можно конечно попробовать (как писал GREA) и возможно на быстрых компах будет работать. Но если каой-нить системный процесс начнёт нистого ни с сего жрать кучу процессорного времени то прога корректно работать перестанет Sad Скорее всего тебе стоит написать свой драйвер - станеш системным процессом Smile...
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Вс Апр 18 2004 19:49    Заголовок сообщения: Ответить с цитатой

Тогда можно адаптивно попробовать.
То есть, вычислять задержки через некоторые промежутки, или вообще параллельно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вт Апр 20 2004 08:47    Заголовок сообщения: Ответить с цитатой

Цитата:
Уменьшить, я думаю можно, эмулировав таймер, какими-либо вычислениями

Если я правильно понял, то нужно реализовать цикл, состоящий простых команд (что-нибудь типа инкремента). Но как узнать сколько тактов выполняется такая команда ?
Цитата:
Скорее всего тебе стоит написать свой драйвер

А вот этого я не умею. Даже не знаю с какого конца взяться Crying or Very sad

Цитата:
Тогда можно адаптивно попробовать.
То есть, вычислять задержки через некоторые промежутки, или вообще параллельно.

Не совсем понял. Если можно, напишите, пожалуйста подробнее. Question
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Вт Апр 20 2004 20:05    Заголовок сообщения: Ответить с цитатой

Ну так ты сам предлжил инкремент.
Допустим, после одной секунды у тебя в счетчике получилось 2000 (утрирую). Тогда в миллисекунду будет 2 инкремента.
В десяти мс будет уже 20. Ну, идею понял, надеюсь.
Адаптивно - значит, через некоторые промежутки времени, пересчитывать значения счетчика (не обязательно ждать секунду. Можно посчитать, сколько инкрементов за 56 миллисекунд (аппаратный минимум таймера) Будет незаметно).
Кстати, когда будешь циклить инкремент, учитывай еще операции сравнения цикла. Они тоже съедают время.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
220v_Progressor



Зарегистрирован: 08.04.2004
Сообщения: 2
Откуда: Барнаул

СообщениеДобавлено: Ср Апр 21 2004 08:32    Заголовок сообщения: Ответить с цитатой

Понял! Спасибо за совет. Very Happy
_________________
Don't worry, be happy !
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Antonet
Гость





СообщениеДобавлено: Ср Апр 21 2004 20:14    Заголовок сообщения: Ответить с цитатой

Есть такая WinAPI-шная функция QueryPerformanceCounter . Можно сделать задержку, ориентируясь на этот счетчик. Информацию по этой функции смотри в MS SDK.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...