Visual Basic - Necesito construir timer q cuente milisegundos

Life is soft - evento anual de software empresarial
 
Vista:

Necesito construir timer q cuente milisegundos

Publicado por Roberto (13 intervenciones) el 31/03/2004 00:00:15
Por favor coleguis,necesito q alguien me diga como programar temporizaciones q sean de milisegundos fiables al cien por cien,ya q el timer de visual no me lo hace muy bien o eso creo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Necesito construir timer q cuente milisegundos

Publicado por Stump Kops (41 intervenciones) el 10/04/2004 00:11:15
Eso es tecnicamente IMPOSIBLE. No se puede crear un timer que sea preciso al 100% porque la presición depende del hardware, más precisamente del procesador.
Eso significa que quizás sea preciso en tu máquina pero en otra no. Si confiás en un timer para realizar tareas de precisión NUNCA vas a conseguir los resultados esperados.
¡¡Bueno man!! ¡¡Si tanto necesitas un timer más preciso que el de VB usá uno del sistema!!

Para saber la presición que puede llegar a tener un timer de alta-resolución deberías usar la función QueryPerformanceFrequency de la API de Win32. Esta función devuelve la frecuencia (en cuentas por segundo) del contador de alta-resolución del sistema, si existe. Por ejemplo:

Function GetPerformanceFreq() As Double
Dim r&, cFreq As Currency

'Obtiene el valor requerido.

r = QueryPerformanceFrequency(cFreq)

If r = 0 Then
MsgBox "El hardware instalado no soporta contadores de alta resolución", vbCritical
Else
GetPerformanceFreq = 1 / (cFreq * 10000)
End If

End Function

De esta forma conocés si tu sistema soporta contadores de alta resolución y la precisión de la frecuencia. Si el sistema lo soporta entonces ahora podrías usar la función GetTickCount() para crear un pseudo-timer y un evento para notificar cada lapso de tiempo. También existe la función timeGetTime que igual que GetTickCount, pero yo hize varias pruebas y es más precisa GetTickCount. También podría usarse una variable global para terminar el timer cuando s quiera. Por ejemplo:

Event Timer()%0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar