monorepo
This commit is contained in:
66
P2/smt4497-P2/Crono.cpp
Normal file
66
P2/smt4497-P2/Crono.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
#include "Crono.h"
|
||||
|
||||
// agrupación de clases, funciones y variables globales
|
||||
namespace ss {
|
||||
|
||||
Crono::Crono() // constructor
|
||||
{
|
||||
// Paso 1: Obtiene la frecuencia del timer del PC en tics/segundo usando QueryPerformanceFrequency
|
||||
if (_ticsPorSegundoDelTimerDelPC < 0) {
|
||||
// No se ha calculado la frecuencia aún. Se calcula ahora
|
||||
LARGE_INTEGER frecuencia;
|
||||
char _cadDbg[TAM_CADENA_DEBUG]; // snprintf almacena en una matriz intermedia y al pasar
|
||||
// _cadDbg es un puntero a _cadDbg[0]
|
||||
|
||||
if (QueryPerformanceFrequency(&frecuencia)) {
|
||||
_ticsPorSegundoDelTimerDelPC = frecuencia.QuadPart;
|
||||
|
||||
snprintf(_cadDbg, sizeof(_cadDbg), "La frecuencia del contador del PC es %d Hz\n",
|
||||
_ticsPorSegundoDelTimerDelPC);
|
||||
OutputDebugStringA(_cadDbg);
|
||||
}
|
||||
else {
|
||||
OutputDebugStringA("Error al ejecutar QueryPerformanceFrequency en " __FUNCTION__);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Crono::~Crono() // destructor
|
||||
{
|
||||
}
|
||||
|
||||
bool Crono::Inicio()
|
||||
{
|
||||
bool res = false;
|
||||
|
||||
if (_ticsPorSegundoDelTimerDelPC > 0) {
|
||||
// Paso 2: guarda el valor actual del timer del PC en tics usando QueryPerformanceCounter
|
||||
LARGE_INTEGER ticks;
|
||||
if (QueryPerformanceCounter(&ticks)) {
|
||||
_ticsAntes = ticks.QuadPart;
|
||||
res = true;
|
||||
}
|
||||
else {
|
||||
OutputDebugStringA("Error al ejecutar QueryPerformanceCounter en " __FUNCTION__);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
double Crono::Lee()
|
||||
{
|
||||
double segundos = -1.0;
|
||||
|
||||
// Paso 3: Obtiene el valor actual del timer del PC en tics usando QueryPerformanceCounter
|
||||
LARGE_INTEGER ticks;
|
||||
if (QueryPerformanceCounter(&ticks)) {
|
||||
int64_t ahora = ticks.QuadPart;
|
||||
segundos = (double)(ahora - _ticsAntes) / _ticsPorSegundoDelTimerDelPC;
|
||||
}
|
||||
else {
|
||||
printf("Error al ejecutar QueryPerformanceCounter en " __FUNCTION__);
|
||||
}
|
||||
return segundos;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user