Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 |
Для маздая я думаю это не реально. |
Автор: Alek86 10.12.2008, 11:08 |
mrbrooks, а для тру хацкера (каким ты, несомненно, являешься) на винде реально? перепишешь планировщик задач винды? ferio, лучше всего подойдет дос. и, скорее всего, вопрос по асму |
Автор: mrbrooks 10.12.2008, 11:24 |
Alek86, слышь чувак - не понял что за наезд. Добавлено через 1 минуту и 39 секунд или по русски плохо читаешь? |
Автор: MTWizard 10.12.2008, 14:23 |
маздай == Windows, Alek86, а не то, что ты подумал |
Автор: Alek86 10.12.2008, 14:29 |
гы mrbrooks, сори по русски-то читаю нормально, а этой штуки не знал |
Автор: mrbrooks 10.12.2008, 15:05 |
понятненько ![]() |
Автор: Kallikanzarid 10.12.2008, 18:47 | ||
Вряд ли это возможно. Лучшее, на что ты можешь надееться - это гонять пустой цикл, переодически засекая такты. Но под 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, может поможет ![]() Добавлено через 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 13.12.2008, 10:05 | ||||
Подключил. И получил то что хотел. те самые 330мкс.+/- 20мкс. но меня такая точность устаивает. |
Автор: xvr 13.12.2008, 19:33 | ||||||
Теперь запустите что нибудь в параллель (например запись на CD) и посмотрите снова, и желательно не один импульс, а много - могут быть отдельные выбросы. |