Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Precisión del control Timer

Estas en el tema de Precisión del control Timer en el foro de Visual Basic clásico en Foros del Web. Buenas, como ya he puesto en otro hilo estoy haciendo un programa que cuente tiempos entre clicks, para el cual estoy utilizando un control Timer, ...
  #1 (permalink)  
Antiguo 22/11/2009, 11:15
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Precisión del control Timer

Buenas,


como ya he puesto en otro hilo estoy haciendo un programa que cuente tiempos entre clicks, para el cual estoy utilizando un control Timer, quería precisión de centésima de segundo pero me dan medidas muy imprecisos (cuento con mi reloj que pasen 10 segundos entre clicks y el programa me dice que han pasado 6,2 y cosas así, notándose más el efecto "retardo" cuanto más tiempo dejo pasar entre clicks).

Si cambio el intervalo del Timer para que capte solo precisión de décima de segundo (pongo Timer1.Interval a 100) es bastante menos impreciso, pero sigue siéndolo y en tiempos grandes se nota. ¿A qué se debe esto? ¿Puedo solucionarlo de alguna manera?

El código en cuestión es el siguiente (en este caso tengo Timer1.Interval a 10 para captar precisión de centésima de segundo):

Código :
Ver original
  1. Dim Tiempo As Integer
  2. Dim Indice As Integer
  3. Dim Fichero As String
  4.  
  5. Private Sub Command2_Click()
  6. Tiempo = 0
  7. End Sub
  8.  
  9.  
  10. Private Sub Form_Load()
  11. Tiempo = 0
  12. Indice = 1
  13. Fichero = InputBox("Introduzca el nombre del archivo en el que quieres guardar los tiempos", "CuentaTiempos versión 0.01 por Antonio Álvarez")
  14. Open App.Path & "\" & Fichero & ".txt" For Append As #1
  15. End Sub
  16.  
  17. Private Sub Command1_Click()
  18. List1.AddItem "Tiempo de oscilación " & Indice & ": " & Tiempo / 100 & " segundos"
  19. Print #1, "Tiempo de oscilación " & Indice & ": " & Tiempo / 100 & " segundos"
  20. Tiempo = 0
  21. Indice = Indice + 1
  22. End Sub
  23.  
  24. Private Sub Timer1_Timer()
  25. Tiempo = Tiempo + 1
  26. End Sub

Última edición por Antonio92; 22/11/2009 a las 11:57
  #2 (permalink)  
Antiguo 22/11/2009, 11:49
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Precisión del control Timer

Hola:

Según dices, estas midiendo tiempos entre Clicks, ¿ Significa esto que el tiempo empieza a contar cuando haces un Click en un Boton y termina cuando lo haces en otro ?

Si es así, pienso que no necesitas realmente el control timer puesto que es mucho mas sencillo utilizar la variable Timer

Si tienes una variable comun definida

Dim Inicio as Single

en Command1 Inicio = Timer

en Command2 Transcurrido = Timer - Inicio

He sido breve en la explicación pero si necesitas mas aclaración coméntalo.

Saludos
  #3 (permalink)  
Antiguo 22/11/2009, 12:03
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Respuesta: Precisión del control Timer

Cita:
Iniciado por erbuson Ver Mensaje
Hola:

Según dices, estas midiendo tiempos entre Clicks, ¿ Significa esto que el tiempo empieza a contar cuando haces un Click en un Boton y termina cuando lo haces en otro ?

Si es así, pienso que no necesitas realmente el control timer puesto que es mucho mas sencillo utilizar la variable Timer

Si tienes una variable comun definida

Dim Inicio as Single

en Command1 Inicio = Timer

en Command2 Transcurrido = Timer - Inicio

He sido breve en la explicación pero si necesitas mas aclaración coméntalo.

Saludos
Gracias por la respuesta, sin embargo no entiendo muy bien a qué te refieres.
Lo que quiero es que al hacer click en un botón (Command1) se resetee el "cronómetro" y se imprima a la listbox (y al fichero) el tiempo actual, y así con cada click. El botón Command2 está hecho sólo para usarse la primera vez, sería para empezar el experimento (lo hice así porque es para unas prácticas de Física y necesito un botón solamente para empezar tal como tengo montado el sistema). No sé si me explico.
Saludos
  #4 (permalink)  
Antiguo 22/11/2009, 12:47
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Precisión del control Timer

Hola:

Copia este código y podrás probarlo a ver si te sirve, necesitas command1, command2 y list1 no necesitas el timer

En principio es para que entiendas la idea, despues si es necesario comentamos las dudas.

Código:
Option Explicit

Dim Tiempo As Single
Dim Indice As Integer
Dim Fichero As String
 
Private Sub Command2_Click()
Tiempo = Timer
End Sub
 
Private Sub Form_Load()
Command2.Caption = "Reiniciar"
Command1.Caption = "Guardar"
Fichero = InputBox("Introduzca el nombre del archivo en el que quieres guardar los tiempos", "CuentaTiempos versión 0.01 por Antonio Álvarez")
Open App.Path & "\" & Fichero & ".txt" For Append As #1
End Sub
 
Private Sub Command1_Click()
Tiempo = Timer - Tiempo
List1.AddItem "Tiempo de oscilación " & Indice & ": " & Tiempo & " segundos"
Print #1, "Tiempo de oscilación " & Indice & ": " & Tiempo / 100 & " segundos"
Tiempo = Timer
Indice = Indice + 1
End Sub
Saludos
  #5 (permalink)  
Antiguo 22/11/2009, 13:54
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Respuesta: Precisión del control Timer

No lo he copiado tal cual pues quería entenderlo, no copiarlo pero ya he captado la idea, el caso era que no conocía la variable Timer, ahora ya sé usarla y ya la he aprovechado para mi programa. Muchas gracias ;)
  #6 (permalink)  
Antiguo 22/11/2009, 14:03
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Precisión del control Timer

Saludos y cualquier duda ya sabes donde preguntar.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:04.