안녕하세요. 남병철.레조입니다.
ms 단위 이하로 내려간걸 예전에 보았던 기억이 나서 다시 찾아보니 클래스까지 만들어 놓았네요. ㅎㅎ
또한 인공지능? 관련 책에도 다룬걸 본 적이 있습니다.
QueryPerformanceFrequency를 사용하는데... 테스트 하진 않았습니다. (언젠가 본거 같기도 하고 -,-)
좀 써보고나서 괜찮으면 인터페이스 정리해서 팁 같은데 올려주세요. ㅎㅎ
(시간을 알면 딜레이 주는것도 가능하겠죠?? 흠..)
class HRTimer {
public:
HRTimer(void)
double getFrequency(void);
void startTimer(void) ;
double stopTimer(void);
private:
LARGE_INTEGER start;
LARGE_INTEGER stop;
double frequency;
//..
}
HRTimer::HRTimer(void) : frequency(1.0 / this->getFrequency()) { }
double HRTimer::GetFrequency(void)
{
LARGE_INTEGER proc_freq;
if (!::QueryPerformanceFrequency(&proc_freq)) throw Exception(TEXT("QueryPerformanceFrequency() failed"));
return proc_freq.QuadPart;
}
void HRTimer::StartTimer(void)
{
DWORD_PTR oldmask = ::SetThreadAffinityMask(::GetCurrentThread(), 0);
::QueryPerformanceCounter(&start);
::SetThreadAffinityMask(::GetCurrentThread(), oldmask);
}
double HRTimer::StopTimer(void)
{
DWORD_PTR oldmask = ::SetThreadAffinityMask(::GetCurrentThread(), 0);
::QueryPerformanceCounter(&stop);
::SetThreadAffinityMask(::GetCurrentThread(), oldmask);
return ((stop.QuadPart - start.QuadPart) * frequency);
}
[출처]
http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx
김정민 님이 쓰신 글 :
: 센서를 구동할려고 하는데 us(microsecond)단위로 Control해야 된다고 합니다.
:
: 일반적인 PC에 WindowsXP를 OS로 사용하는 PC에서 구동되는 us(microsecond) delay함수를 만들어 주세요.
:
: 부탁드립니다.
|