Barst  2.0
A server that controls lab hardware.
misc tools.cpp
1 #include "stdafx.h"
2 #include "misc tools.h"
3 #include <limits.h>
4 #include <MMSystem.h>
5 
7 CTimer g_cTimer;
8 
9 
10 const char *ToBinary(unsigned char ucVal, char csBuff[9])
11 {
12  for (int j = 7; j >= 0; --j)
13  csBuff[7 - j] = ((0x01 << j) & ucVal) ? '1' : '0';
14  csBuff[8] = '\0';
15  return csBuff;
16 }
17 
18 
19 BOOL GetProcAddresses(HINSTANCE *hLibrary, LPCTSTR lpszLibrary, INT nCount, ... )
20 {
21  va_list va;
22  va_start( va, nCount );
23 
24  if ( ( *hLibrary = LoadLibrary( lpszLibrary ) ) != NULL )
25  {
26  FARPROC * lpfProcFunction = NULL;
27  LPSTR lpszFuncName = NULL;
28  INT nIdxCount = 0;
29  while ( nIdxCount < nCount )
30  {
31  lpfProcFunction = va_arg( va, FARPROC* );
32  lpszFuncName = va_arg( va, LPSTR );
33  if ( ( *lpfProcFunction =
34  GetProcAddress( *hLibrary,
35  lpszFuncName ) ) == NULL )
36  {
37  lpfProcFunction = NULL;
38  return FALSE;
39  }
40  nIdxCount++;
41  }
42  }
43  else
44  {
45  va_end( va );
46  return FALSE;
47  }
48  va_end( va );
49  return TRUE;
50 }
51 
52 
53 
55 {
56  ResetTimer();
57 }
58 
59 CTimer::~CTimer()
60 {
61 }
62 
63 double CTimer::Seconds() const
64 {
65  LARGE_INTEGER llTime;
66  QueryPerformanceCounter(&llTime); // get current time
67 
68  // Calc elapsed ticks since reset.
69  if (llTime.QuadPart < m_llStart.QuadPart) // It overflowed
70  llTime.QuadPart = (llTime.QuadPart + (LLONG_MAX - m_llStart.QuadPart));
71  else
72  llTime.QuadPart = (llTime.QuadPart - m_llStart.QuadPart);
73  return llTime.QuadPart * (1.0 / m_llFrequency.QuadPart); // Convert to secs
74 }
75 
76 double CTimer::Seconds(LARGE_INTEGER llStart) const
77 {
78  LARGE_INTEGER llTime;
79  QueryPerformanceCounter(&llTime); // get current time
80 
81  // Calc elapsed ticks since reset.
82  if (llTime.QuadPart < llStart.QuadPart) // It overflowed
83  llTime.QuadPart = (llTime.QuadPart + (LLONG_MAX - llStart.QuadPart));
84  else
85  llTime.QuadPart = (llTime.QuadPart - llStart.QuadPart);
86  return llTime.QuadPart * (1.0 / m_llFrequency.QuadPart); // Convert to secs
87 }
88 
89 double CTimer::TimeOf(LARGE_INTEGER llTime) const
90 {
91  // Calc elapsed ticks since reset.
92  if (llTime.QuadPart < m_llStart.QuadPart) // It overflowed
93  llTime.QuadPart = (llTime.QuadPart + (LLONG_MAX - m_llStart.QuadPart));
94  else
95  llTime.QuadPart = (llTime.QuadPart - m_llStart.QuadPart);
96  return llTime.QuadPart * (1.0 / m_llFrequency.QuadPart); // Convert to secs
97 }
98 
100 { // Get most current frequency in case power states were switched etc.
101  QueryPerformanceFrequency(&m_llFrequency);
102  QueryPerformanceCounter(&m_llStart); // get current/start time
103 }
double TimeOf(LARGE_INTEGER llTime) const
Definition: misc tools.cpp:89
void ResetTimer()
Definition: misc tools.cpp:99
double Seconds() const
Definition: misc tools.cpp:63