![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Benassi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
Читал про QueryPerformanceFrequency, QueryPerformanceCounter, но ничего полезного из этого не вышло.
Код моего таймера для данного простоя таков, что эти самые микросекунды нормально отсчитываются в огромных кол-вах... вот, собственно, и код:
P.S. не советуйте, пожалуйста QNX и т.п., мне нужно считывать данные с LPT с минимальным простоем между запросами 4 мкс (Win9x/NT под .net), переключение между процессами блокирую так: Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;Один не очень авторитетный программист сказал, что запрос на чтение данных с LPT занимает 1 мкс, во что я не очень верю. Пробовал Thread.Sleep(new TimeSpan(1000)), но в MSDN прочел, что малые простои игнорируются, и это будет как Sleep(0), но и это лишь гарантия минимального простоя, максимальный при этом неизвестен, к тому же таймер посылает сообщения лишь каждые 55 мс(насколько помню)... внешние устройства пожалуйста тоже не советуйте, только программно. СПАСИБО. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
DateTime.Ticks отсчитывается в 100-наносекундных интервалах, поэтому ожидание в 1мкс можно сделать так:
-------------------- ![]() |
|||
|
||||
Benassi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
господин DUDA, если бы всё было бы тривиально, я бы поместил этот вопрос в раздел "для новичков".
Перед тем, как выкладывать ответ, почитайте MSDN, откомпильте. Если бы Вы проверили правильность выполнения Вашего решения, то увидели, что код :
и вывелось бы при элементарном простое в 1000мсек (1сек), и в 2сек тот же результат ( я уж не говорю о простое в 1,2 милисекунды )... не нужно читать между строк, просто прочтите пожалуйста внимательно то, что я написал. Спасибо за внимание, но оно не нужно, если нет решения. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Ok, лажанулся, DateTime юзает GetSystemTimeAsFileTime который читает системное время, а оно обновляется периодически.
![]() Да, кстати при задержке выше 16,25мс выдаёт-таки верный результат. З.Ы. посмотрел в сырцы одного проекта, там юзается тот же QueryPerformanceFrequency/QueryPerformanceCounter. Судя по первому посту, не подходит. Есть ещё мультимедийный таймер, но его разрешение 1мс. -------------------- ![]() |
|||
|
||||
altarvic |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 2.3.2007 Репутация: 1 Всего: 1 |
||||
|
||||
Benassi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
Сорри altarvic, я забыл написать, что использоваться должна платформа .NET FrameWork 1.1.
Я с этим незнаком,но там этого SpinWait нету :( Но возможно это единственный выход из положения. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |