Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Как добиться отклика в 1 МИКРОсекунду? Добавлено: 02.04.08 18:15  

Автор вопроса:  sergeisin | ICQ: 465419785 
Читал про QueryPerformanceFrequency, QueryPerformanceCounter, но ничего полезного из этого не вышло.

Код моего таймера для данного простоя таков, что эти самые микросекунды нормально отсчитываются в огромных кол-вах... вот, собственно, и код:

public class PerfCounter
{
Int64 freq = 0;
Int64 _start = 0;
Int64 finish = 0;

public PerfCounter()
{
Clear();
}

void Clear()
{
QueryPerformanceFrequency(ref freq);
freq = (long)(freq/(1000000));
}


public void wait(int mks)
{
Clear();
freq = freq*mks;
QueryPerformanceCounter(ref _start);
while ((finish-_start)< freq) QueryPerformanceCounter(ref finish);
// for (int i=0; i< mks; i++) LPTWorker.LPTIn(888);
}

[DllImport("Kernel32.dll")]
static extern bool QueryPerformanceCounter(ref Int64 performanceCount);

[DllImport("Kernel32.dll")]
static extern bool QueryPerformanceFrequency(ref Int64 frequency);
}
}


P.S. не советуйте, пожалуйста QNX и т.п., мне нужно считывать данные с LPT с минимальным простоем между запросами 4 мкс (Win9x/NT), переключение между процессами блокирую так:
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime

Один не очень авторитетный программист сказал, что запрос на чтение данных с LPT занимает 1 мкс, во что я не очень верю. Пробовал
Thread.Sleep(new TimeSpan(1000))
, но в MSDN прочел, что малые простои игнорируются, и это будет как
Sleep(0)
, но и это лишь гарантия минимального простоя, максимальный при этом неизвестен, к тому же таймер посылает сообщения лишь каждые 55 мс(насколько помню)... внешние устройства пожалуйста тоже не советуйте, только программно. СПАСИБО.

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 03.04.08 03:19
Windows это не ось реального времени. Для железок заводят отдельный бездисковый комп, ставят на него QNX (лучше) или Linux в однопользовательском режиме (хуже), ставят программе максимальный приоритет, а время отмеряют просто тактами процессора, в цикле.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам