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


 


Tema destacado: Comparativa y análisis mejores sistemas de videollamadas


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Me estoy volviendo loco con los timers. (Vb.net)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Me estoy volviendo loco con los timers. (Vb.net)  (Leído 846 veces)
#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Me estoy volviendo loco con los timers. (Vb.net)
« en: 21 Octubre 2016, 05:42 »

Buenas noches a todos, ¡Mucho tiempo sin pasar por aquí!

Os cuento mi idea y mi problema.

Mi idea es:

En el momento en el que la tecla adecuada es pulsada,  inicia un contador, a los tres minutos suena un pitido, y si la tecla no es pulsada en los próximos quince segundos,
vuelve a sonar el pítido en intervalos de quince segundos, así hasta que la tecla es pulsada, y una vez más empezaría a esperar 3 minutos para después seguir con los 15 segundos.

Dejo una imagen con un esquema que acabo de hacer para que se entienda mejor el ejemplo.

 


Aquí dejo la línea de código con sus comentarios para que os hagáis una idea de como voy.

Código
  1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  2.  
  3.        Dim Ascii As Integer = Asc(My.Settings.optionsHotkeys) ' Esa variable contiene el ascii de la tecla guardada por el usuario.
  4.        If (GetAsyncKeyState(Ascii)) Then ' Si es presionada...
  5.        ...
  6.  
  7.  

Aquí no tengo idea de cómo seguir de una manera correcta, sin hacer chapuzas, sólo se me ocurrió meter más timers del estilo

Código
  1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  2.  
  3.        Dim Ascii As Integer = Asc(My.Settings.optionsHotkeys) ' Esa variable contiene el ascii de la tecla guardada por el usuario.
  4.        If (GetAsyncKeyState(Ascii)) Then ' Si es presionada...
  5.        Timer2.Start()
  6.        Timer2.Interval = NumericUpDown1.Value * 60 * 1000 'Minutos estupilados por el usuario.
  7.        End if
  8.  
  9. Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
  10.        ... 'Pitido
  11.        Timer3.Start()
  12.        Timer3.Interval = 15000 'Intervalo de 15 segundos
  13. Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
  14.        ... 'Pitidos cada 15 segundos...
  15.  
  16.  

En fin, cómo veis aquí pierdo la cordura, no sé que hacer y me pongo a crear timers cuál imbécil a diestra y siniestra sin ningún tipo de sentido.

¿Alguna idea?

Edito:

Terminé solucionandolo de una forma que considero un tanto mediocre...

Código
  1.    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  2.  
  3.        Dim Ascii As Integer = Asc(My.Settings.optionsHotkeys)
  4.  
  5.        If (GetAsyncKeyState(Ascii)) Then
  6.  
  7.            Select Case Timer2.Enabled
  8.                Case False
  9.                    Timer3.Start()
  10.                    Timer3.Interval = NumericUpDown1.Value * 60 * 1000
  11.                Case True
  12.                    Timer2.Stop()
  13.                    Timer3.Start()
  14.            End Select
  15.        End If
  16.  
  17.    End Sub
  18.    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
  19.        Sound.Play()
  20.    End Sub
  21.  
  22.    Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
  23.        Sound.Play()
  24.        Timer2.Interval = 15000
  25.        Timer2.Start()
  26.        Timer3.Stop()
  27.    End Sub



« Última modificación: 21 Octubre 2016, 19:05 por #Aitor » En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines