elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 01:01  


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  ¿Cómo reiniciar un timer en visual basic 6?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo reiniciar un timer en visual basic 6?  (Leído 2,622 veces)
Tokes

Desconectado Desconectado

Mensajes: 137


Ver Perfil
¿Cómo reiniciar un timer en visual basic 6?
« en: 25 Diciembre 2010, 02:47 »

Hola a todos:

Escribo para plantear una pequeña duda que me tiene preocupado: ¿Hay forma de reiniciar un timer en vb6?

Estoy tratando de recibir datos por el puerto COM en formato RS232. La PC debe recibir un bloque de 30 caracteres para procesarlo, pero tengo la propiedad rthreshold a 1 para que se produzca un evento OnComm cada vez que se reciba un caracter.

El objetivo es que cada vez que llegue un caracter se reinicie un timer para evitar que éste último produzca un evento Timer(). Si se produce el evento Timer() quiere decir que el caracter ha tardado en llegar y suponer entonces que ha ocurrido un problema con la comunicación.

Así, por ejemplo, si después del cuarto caracter el quinto no llega en un determinado tiempo, el sistema reiniciará su lógica de recepción y el siguiente caracter que llegue será considerado el primero de una nueva cadena.

De manera burda, lo tengo así:

Código:
Dim contacaracter as integer
Dim s as string

private sub Comm1_OnComm()
    if comm1.commevent=comevreceive then 'Si se ha recibido un caracter.
         if contacaracter = 0 then     ' y si es el primero en recibirse
              timer1.enabled = true    ' se habilita el timer.
         else
              timer1.enabled = false   ' Aquí trato de reiniciar el timer apagándolo
              timer1.enabled = true    ' y luego encendiéndolo, pero al parecer no
                                                 ' funciona.
         endif

        s = s & comm1.input
        'Aquí proceso el caracter recibido.
        ' Cuando se reciban tdos los caracteres se inhabilita el timer.
    endif
end sub

private sub timer1_Timer()
    contacaracter=0     ' El siguiente caracter que llegue será considerado el primero.
    s=""   ' Vacía la cadena de recepción.
   timer1.enabled=false   
end sub

Cuando apago el timer (timer1.enabled=false) al parecer sólo lo detengo, pero no lo hago regresar a su valor inicial de conteo.

Si alguien pudiera ayudarme, muchísimas gracias.


En línea
ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: ¿Cómo reiniciar un timer en visual basic 6?
« Respuesta #1 en: 25 Diciembre 2010, 03:11 »

No conozco nada de COM, tampoco la logica del programa, a ver corrigeme:

*El sistema recibira caracteres,
* despues de la recepcion de un caracter el timer se habilitara estableciendo un tiempo de espera
* y cada vez que se recibe un caracter el tiempo de espera se renueva.
* Si el tiempo de espera se agota entonces el siguiente caracter recibido sera miembro de una nueva cadena, el timer se deshabilitara hasta recibir un nuevo caracter.

estoy bien?
Código
Dim contador as integer
Dim s as string
 
private sub Comm1_OnComm()
   if comm1.commevent=comevreceive then 'Si se ha recibido un caracter.
       timer1.enabled = true    ' se habilita el timer.
       contador=0 'El tiempo de espera se renueva
       s = s & comm1.input 'Se obtiene el siguiente caracter
       'Aquí proceso el caracter recibido.
       ' Cuando se reciban tdos los caracteres se inhabilita el timer.
   end if
end sub
 
private sub timer1_Timer()
   contador=contador+1 'cada vez que de un Tick, aumentara en 1
   if contador=5 then ' el tiempo de espera se agoto, la cadena se reinicia
       s=""   ' Vacía la cadena de recepción.
       contador=0 'el tiempo de espera se renueva
       timer1.enabled=false 'Se desactiva el timer
   end if
end sub
 

espero haberte ayudado... suerte y feliz navidad :xD


En línea


Elemental Code


Desconectado Desconectado

Mensajes: 499


Im beyond the system


Ver Perfil
Re: ¿Cómo reiniciar un timer en visual basic 6?
« Respuesta #2 en: 25 Diciembre 2010, 17:08 »

para "Reiniciar" un timer (es decir que empieze denuevo la cuenta atras) pone asi:

Timer1.enabled = false
timer1.enabled = true


automaticamente para y empieza de nuevo :P!
En línea

Tokes

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: ¿Cómo reiniciar un timer en visual basic 6?
« Respuesta #3 en: 25 Diciembre 2010, 20:57 »

Muchísimas gracias por sus respuestas.

Trataré de corregir mi código y luego les comento como quedó.

De verdad muchas gracias y ¡Feliz navidad!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines