Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как сделать задержку меньше 1 мс ?


Автор: ferio 10.12.2008, 09:10
Здравствуйте!
Необходимо выдавать на LPT сигнал с задержкой 0,33 мс (330мкс).
Подскажите как организовать такую маленькую задержку? 

Какая OC больше подойдет для этого: WinXP, либо Win98 либо MS-DOS ?

Автор: mrbrooks 10.12.2008, 10:30
Цитата(ferio @  10.12.2008,  09:10 Найти цитируемый пост)
Необходимо выдавать на LPT сигнал с задержкой 0,33 мс (330мкс).

Для маздая я думаю это не реально.

Автор: Alek86 10.12.2008, 11:08
mrbrooks, а для тру хацкера (каким ты, несомненно, являешься) на винде реально?
перепишешь планировщик задач винды?

ferio, лучше всего подойдет дос. и, скорее всего, вопрос по асму

Автор: mrbrooks 10.12.2008, 11:24
Alek86, слышь чувак - не понял что за наезд.

Добавлено через 1 минуту и 39 секунд
или по русски плохо читаешь?

Автор: MTWizard 10.12.2008, 14:23
Цитата(mrbrooks @  10.12.2008,  10:30 Найти цитируемый пост)
Для маздая

маздай == Windows, Alek86, а не то, что ты подумал

Автор: Alek86 10.12.2008, 14:29
гы
mrbrooks, сори

по русски-то читаю нормально, а этой штуки не знал

Автор: mrbrooks 10.12.2008, 15:05
Цитата(Alek86 @  10.12.2008,  14:29 Найти цитируемый пост)
по русски-то читаю нормально, а этой штуки не знал 

 понятненько smile 


Автор: Kallikanzarid 10.12.2008, 18:47
Цитата

Необходимо выдавать на LPT сигнал с задержкой 0,33 мс (330мкс).

Вряд ли это возможно. Лучшее, на что ты можешь надееться - это гонять пустой цикл, переодически засекая такты. Но под Windows это невозможно, потому что рано или поздно квант времени кончится, и ОС передаст управление другому процессу.

Автор: ferio 11.12.2008, 08:54
Попробовал через QueryPerformanceCounter как описано здесь - http://iproc.ru/programming/windows-timers/

но при подлючении SAnTimer.h выдает ошибку:
C:\1\port\port.cpp(9) : fatal error C1083: Cannot open include file: 'SAnTimer.h': No such file or directory


Автор: DareDevil225 11.12.2008, 09:22
Почитайте вот http://forum.sources.ru/index.php?showtopic=166364, может поможет smile

Добавлено через 2 минуты
и http://forum.sources.ru/index.php?showtopic=163012

Автор: ferio 11.12.2008, 17:52
Сделал таймер следующим образом. Единственное, почему то округляет выставленное значение в большую сторону, и не принимает значение меньше нуля. Где я ошибся?

Автор: jonie 11.12.2008, 20:23
это у вас деление потому-что int-овое, а приведение типа к double уже резальтата (полученного как int). приведите, например, числитель к double.

PS: поставьте-ка своему потоку высочайший приоритет выполнения... это, конечно, не драйвер PCI, но все же...

Автор: ferio 12.12.2008, 09:54
2jonie
Большое спасибо за подсказку. Все получилось - работает.

Автор: MAKCim 12.12.2008, 10:05
ferio
это не всегда будет работать

Автор: xvr 12.12.2008, 16:04
Цитата(ferio @ 12.12.2008,  09:54)
2jonie
Большое спасибо за подсказку. Все получилось - работает.

Теперь посмотрите осцилографом, что получилось на ноге порта - вас ждет большой сюрприз  smile 

Автор: ferio 13.12.2008, 10:05
Цитата(xvr @ 12.12.2008,  16:04)
Цитата(ferio @ 12.12.2008,  09:54)
2jonie
Большое спасибо за подсказку. Все получилось - работает.

Теперь посмотрите осцилографом, что получилось на ноге порта - вас ждет большой сюрприз  smile

Подключил. И получил то что хотел. те самые 330мкс.+/- 20мкс. но меня такая точность устаивает. 

Автор: xvr 13.12.2008, 19:33
Цитата(ferio @ 13.12.2008,  10:05)
Цитата(xvr @ 12.12.2008,  16:04)
Цитата(ferio @ 12.12.2008,  09:54)
2jonie
Большое спасибо за подсказку. Все получилось - работает.

Теперь посмотрите осцилографом, что получилось на ноге порта - вас ждет большой сюрприз  smile

Подключил. И получил то что хотел. те самые 330мкс.+/- 20мкс. но меня такая точность устаивает.

Теперь запустите что нибудь в параллель (например запись на CD) и посмотрите снова, и желательно не один импульс, а много - могут быть отдельные выбросы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)