Contador de tiempo

Con la ayuda de este foro hice este contador que cada 10 minutos envíe un mensaje por winsock a una ip, sacando la diferencia entre la hora actual y la hora de conexión de mi aplicación, anda impecable.
Lo único que no se porque cuando llega a 10 minutos en vez de enviar una vez el dato y recibir la respuesta envía varias veces y se tara un poco hasta que entra otro dato y se acomoda. Les paso el código aver si logran darme una manito, les comento que el timer la propiedad interval la tengo seteado en 0 y cuando inicia la aplicación en 1, no se en que le estoy errando o me faltara para que no envíe muchas veces sino que una ves sola.
Gracias.
Private Sub timerconectado_Timer()
    Dim Diferencia As Long
    Dim timea As String
    Dim datos As String
    Dim inileido2 As String
    timea = Time
'ACA SACO LA DIFERENCIA ENTRE LA HORA DE CONEXION Y LA HORA ACTUAL
    Diferencia = DateDiff("n", HoraO, timea)
'si la diferencia es 10 envie el mensaje.
    If Diferencia = 10 Then
            inileido2 = ReadINI("USUREMOTO", "usuario", App.Path & "\Config\Setup.ini")
            datos = ">" & "TIT" & inileido2 & "<"
            Winsock1.RemoteHost = "100.10.10.18"
            Winsock1.SendData datos
   End If
End Sub
2

2 respuestas

Respuesta
1
Su error está acá "les comento que el timer la propiedad interval la tengo seteado en 0 y cuando inicia la aplicación en 1" al setearlo en 1 le indicas que el evento se debe ejecutar mil veces por segundo (recuerda que el interval es en milisegundos), por tanto, el evento se está repitiendo cerca de 60.000 veces por minuto, por tanto, cuando la diferencia es 10, durante un minuto estás enviando el mensaje. No sería problema setear el timer en 1 siempre y cuando actualizaras HoraO dentro del if, pudiendo quedar de la siguiente forma
If Diferencia = 10 Then
       HoraO = timea    'Actualizar HoraO
       .... Resto del código
End If
Respuesta
1
Diría que el timer está enviando más de una instrucción por que en la conversión a Long de Diferencia los decimales se están redondeando y cuando pasa a 11 deja ya de enviar.
Haz un debug para ver los valores de Diferencia y si es eso controla el valor que no pueda saltar mientras se está enviando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas