elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  ¿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 10,425 veces)
Tokes

Desconectado Desconectado

Mensajes: 140


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

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: 617


/\ 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 am »

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
  1. Dim contador as integer
  2. Dim s as string
  3.  
  4. private sub Comm1_OnComm()
  5.    if comm1.commevent=comevreceive then 'Si se ha recibido un caracter.
  6.        timer1.enabled = true    ' se habilita el timer.
  7.        contador=0 'El tiempo de espera se renueva
  8.        s = s & comm1.input 'Se obtiene el siguiente caracter
  9.        'Aquí proceso el caracter recibido.
  10.        ' Cuando se reciban tdos los caracteres se inhabilita el timer.
  11.    end if
  12. end sub
  13.  
  14. private sub timer1_Timer()
  15.    contador=contador+1 'cada vez que de un Tick, aumentara en 1
  16.    if contador=5 then ' el tiempo de espera se agoto, la cadena se reinicia
  17.        s=""   ' Vacía la cadena de recepción.
  18.        contador=0 'el tiempo de espera se renueva
  19.        timer1.enabled=false 'Se desactiva el timer
  20.    end if
  21. end sub
  22.  

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


En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


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

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

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Tokes

Desconectado Desconectado

Mensajes: 140


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

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:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Visual Basic 6.0 , timer y base de datos mysql « 1 2 »
Programación Visual Basic
el_mago999 12 8,079 Último mensaje 6 Septiembre 2008, 18:24 pm
por el_mago999
Cual se utiliza mas actualmente Visual Basic o Visual basic.net?
Programación Visual Basic
Axus 9 12,686 Último mensaje 4 Julio 2009, 07:00 am
por el_c0c0
[Ayuda] Sniffer en visual basic, para visual basic
Programación Visual Basic
The_Shakah 8 10,025 Último mensaje 18 Agosto 2010, 19:35 pm
por _katze_
Timer en C# (visual studio)
Programación C/C++
pedroangm 0 1,684 Último mensaje 30 Mayo 2012, 01:03 am
por pedroangm
Visual Basic 6 Timer Con Imagenes
Programación Visual Basic
R3Z 2 2,337 Último mensaje 27 Junio 2015, 23:45 pm
por R3Z
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines