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) (Moderador: kub0x)
| | | |-+  Cronometro regresivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Cronometro regresivo  (Leído 15,870 veces)
SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Cronometro regresivo
« en: 17 Mayo 2013, 20:00 pm »

Hola foreros, me preguntaba si podian ayudar en la programacion de un cronometro regresivo

miren este seria el diseño basico y simple



Perdon, si les pido mucho...

en el RadioButton1 "Ejecutar Programa" quiero que abra un programa, pero este programa estara en la misma ruta de la carpeta, ejemplo..
Al termina el tiempo se ejecutara el AutoIt3

y en el RadioButton2 "Ejecutar Sonido" igual que reproduzca el sonido




en los Botones "Iniciar y Detener" pues es obvio iniciar el timer o detenerlo


y en los TextBox "Horas, Minutos y Segundos" yo pueda aplicar el tiempo que quiero poner en regresiva y al finalizar el tiempo se ejecute alguna de las dos acciones. el sonido o el programa

que en una hora con cinco minutos se ejecute el sonido


que en 24 horas ejecute el sonido etc



Espero y no ser molesto, lo se soy un novato pregunton :(



« Última modificación: 17 Mayo 2013, 20:08 pm por SyntaxError404 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Cronometro regresivo
« Respuesta #1 en: 17 Mayo 2013, 22:45 pm »

Hola,
Todo eso está muy bien, pero... ¿y si comentas en que lenguaje lo estás haciendo?...

Como iniciar un proceso externo: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start%28v=vs.100%29.aspx
Código:
process.start(".\AutoIt3.exe", "Argumentos si quieres")

Para lo del lapsus de tiempo usa un Timer si no tienes la necesidad de mostrar la cuenta regresiva: http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.90%29.aspx
Código:
timer1.interval = 5000 ' ms

...De lo contrario usa un TimeSpan junsto a un StopWatch si quieres ir mostrando la cuenta atrás hasta llegar a "00" "00" "00" en los TextBoxes: http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch%28v=vs.90%29.aspx   http://msdn.microsoft.com/en-us/library/system.timespan%28v=vs.90%29.aspx

Código
  1. #Region " Time Remaining "
  2.  
  3.    ' [ Time Remaining ]
  4.    '
  5.    ' // By Elektro H@cker
  6.    '
  7.    ' Examples :
  8.    ' CountDown_Start()
  9.  
  10.    Dim TotalTime As Long = 10000 ' ms
  11.    Dim Time_Elapsed_Watch As New Stopwatch
  12.    Dim Time_Remaining_Span As New TimeSpan()
  13.    Dim WithEvents CountDown_Timer As New Timer
  14.  
  15.    Private Sub CountDown_Start()
  16.        Time_Remaining_Span = TimeSpan.FromMilliseconds(TotalTime + 1000)
  17.        Time_Elapsed_Watch.Start()
  18.        CountDown_Timer.Start()
  19.    End Sub
  20.  
  21.    Private Sub CountDown_Timer_Tick(sender As Object, e As EventArgs) Handles CountDown_Timer.Tick
  22.        Dim TimeRemaining As TimeSpan = Time_Remaining_Span - Time_Elapsed_Watch.Elapsed
  23.  
  24.        Label1.Text = "Elapsed : " & _
  25.                     String.Format("{0:00}:{1:00}:{2:00}", _
  26.                     Time_Elapsed_Watch.Elapsed.Hours, _
  27.                     Time_Elapsed_Watch.Elapsed.Minutes, _
  28.                     Time_Elapsed_Watch.Elapsed.Seconds)
  29.  
  30.        Label2.Text = "TimeLeft: " & _
  31.                      String.Format("{0:00}:{1:00}:{2:00}", _
  32.                      CLng(Math.Floor(TimeRemaining.TotalHours)) Mod 999999999999999999, _
  33.                      CLng(Math.Floor(TimeRemaining.TotalMinutes)) Mod 60, _
  34.                      CLng(Math.Floor(TimeRemaining.TotalSeconds)) Mod 60)
  35.  
  36.        If TimeRemaining.TotalSeconds <= 0 OrElse Time_Elapsed_Watch.ElapsedMilliseconds > TotalTime Then
  37.            Time_Elapsed_Watch.Reset()
  38.            CountDown_Timer.Stop()
  39.        End If
  40.  
  41.    End Sub
  42.  
  43.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  44.        CountDown_Start()
  45.    End Sub
  46.  
  47. #End Region

EDITO: Como reproducir un archivo que no séa WAV:

Código
  1.    On Error GoTo ErrMsg
  2.    AxMMControl1.Wait = True
  3.    AxMMControl1.FileName = OpenFileDialog1.FileName
  4.    AxMMControl1.Command = "Open"
  5.    AxMMControl1.Command = "Play"
  6.    Exit Sub
  7.    ErrMsg:
  8.    MsgBox(Err.Description)
  9.    End Sub

O usando APIs: http://stackoverflow.com/questions/10244068/playing-a-wav-mp3-file-at-the-start-of-a-vb2010-windows-form


PD: Acerca de la interfaz yo modificaría "Ejecutar sonido" por "Reproducir sonido" y "Ejecutar programa" por "Iniciar proceso".

Saludos.


« Última modificación: 17 Mayo 2013, 23:27 pm por EleKtro H@cker » En línea



SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Cronometro regresivo
« Respuesta #2 en: 18 Mayo 2013, 00:13 am »

es programacion en visual basic 2008...


voy a probar tu codigo y miro que tal funciona

gracias por ayudar a un novaton en esto del mundo de la programacion :) ;-) ;-)
En línea

ABDERRAMAH


Desconectado Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Re: Cronometro regresivo
« Respuesta #3 en: 20 Mayo 2013, 14:56 pm »

si, pero el timer no es totálmente exácto, puesto que depende de sus eventos y como habréis visto, si windows está muy ocupado los eventos se retrasan. Hay otra clase llamada stopWatch que yo uso para medir el lag. Éste cuenta los ciclos o milisegundos exactos desde que se abrió el programa.

http://msdn.microsoft.com/es-es/library/system.diagnostics.stopwatch.aspx?ppud=4

No se si la precisión es muy importante, en caso de que no es más sencillo usar un timer, en caso de que si usa el stopwatch.

edito: Bueno, ahora veo que Electro H@cker también lo usa en su ejemplo XD, ya estaba yo pensando que el timer era para medir el tiempo. -_-
« Última modificación: 20 Mayo 2013, 15:03 pm por ABDERRAMAH » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Cronometro regresivo
« Respuesta #4 en: 20 Mayo 2013, 16:19 pm »

Según lo que estuvimos hablando me parece que SyntaxError404 se ha resignado a intentar hacer el programa por si mismo a pesar de la información que le hemos dado y códigos de ejemplo... pero bueno, a ver si nos sorprendes mostrando algún avanze para poder ayudarte, no es dificil.

Saludos!
En línea



TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
Re: Cronometro regresivo
« Respuesta #5 en: 22 Mayo 2013, 01:26 am »

Gracias por el cronometro EleKtro H@cker, muy bueno ya lo estoy usando en mi nuevo soft.

Salu2
En línea

XresH


Desconectado Desconectado

Mensajes: 384



Ver Perfil WWW
Re: Cronometro regresivo
« Respuesta #6 en: 22 Mayo 2013, 05:18 am »

Yo sugiero algo mas sencillo, si bien el ejemplo de Electro es correcto, hay veces que los novatos se sienten "frustrados" por manejar codes de gente con experiencia ya que muchas veces se entreveran.
Este code se puede decir que no es 100 % preciso, puede haber algún milisegundo de diferencia;

Código:
    Dim Hora As Integer
    Dim Segundo As Integer
    Dim Minutos As Integer
    'variable para asemejar el segundo
    Dim Mx As Integer
    Private Sub CalcularyMostrar()
        txtHoras.Text = Hora.ToString.PadLeft(2, "0") 'para rellenar en caso que sea menor que dos digitos
        txtMinutos.Text = Minutos.ToString.PadLeft(2, "0")
        txtSegundos.Text = Segundo.ToString.PadLeft(2, "0")
    End Sub
    Private Sub cmdIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdIniciar.Click
        If txtSegundos.Text = "" Then
            MsgBox("debe indicar un tiempo para iniciar retroceso")
            Exit Sub
        End If
        Segundo = txtSegundos.Text
        Minutos = txtMinutos.Text
        Hora = txtHoras.Text
        tmrKonteo.Enabled = True
    End Sub
    Private Sub tmrKonteo_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrKonteo.Tick
        'tick es como el timer_timer en visual 6
        Mx = Mx - 1
        If Mx = 0 Or Mx = -1 Then
            Mx = 9
            Segundo = Segundo - 1
            If Segundo = -1 Then
                Segundo = 59
                Minutos = Minutos - 1
                If Minutos = 0 Then
                    Minutos = 59
                    Hora = Hora - 1
                End If
            End If
            CalcularyMostrar()
        End If
    End Sub
    Private Sub cmdDetiene_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDetiene.Click
        tmrKonteo.Enabled = False
    End Sub


Use 1 timer, 3 cajas de texto y dos botones de comando.
El if de comparacion de segundos es a modo de ejemplo, se puede modificar a gusto, por ejemplo para que vos te obligues a colocar valores superiores a cero.

Falta implementar la ejecucion de acciones cuando el tiempo finalize, eso lo dejo a tu criterio.

Saludos.

En línea

[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<
SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Cronometro regresivo
« Respuesta #7 en: 24 Mayo 2013, 10:01 am »

Gracias al usuario XresH, por explicarme...

logre esto...



Cuando llega a 00:00:00 reproduce un sonido.wav usando este codigo
Código:
Try
                            Dim ruta As String
                            ruta = My.Application.Info.DirectoryPath & "\Sonido.wav"
                            My.Computer.Audio.Play(ruta, AudioPlayMode.BackgroundLoop)
                            My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk)
                        Catch ex As Exception
                        End Try
hasta ahora todo funciona....




ahora quiero crear dos variables

"Reproducir sonido" y "Ejecutar proceso"



elemplo, selecciono el RadioButton1 y se activa la funcion de "Reproducir sonido"









cuando selecciono el RadioButton2 se ejecuta un "proceso/archivo"

y todo esto ocurre al llegar a 00:00:00
« Última modificación: 24 Mayo 2013, 10:18 am por SyntaxError404 » En línea

XresH


Desconectado Desconectado

Mensajes: 384



Ver Perfil WWW
Re: Cronometro regresivo
« Respuesta #8 en: 24 Mayo 2013, 10:10 am »

Mas que variables con los mismos RadioButon podes hacerlo;

Código:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If RadioButton1.Checked = False And RadioButton2.Checked = False Then
            MsgBox("Seleccione un option para seguir")
        ElseIf RadioButton1.Checked = True Then
            'codigo para reproducir sonido
        ElseIf RadioButton2.Checked = True Then
            'codigo para ejecutar programa
        End If
    End Sub

Sino entendes algo en el code me decis pero estoy seguro que lo comprendés.


Saludos.
En línea

[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Cronometro regresivo
« Respuesta #9 en: 24 Mayo 2013, 13:01 pm »

El code de XResH está bien, puedes hacerlo de esa manera, pero esto está más simplificado:

Primero de nada modifica la propiedad "Tag" de los radiobuttons,
al radio button de "reproducir sonido" le añades el tag "sound"
al radio button de "ejecutar programa" le añades el tag "program",
y ya puedes usar esto:

Código
  1.    Dim Run_Sound As Boolean = False
  2.    Dim Run_Program As Boolean = False
  3.  
  4.    Private Sub RadioButtons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
  5.                                                                                               RadioButton1.Click, _
  6.                                                                                               RadioButton2.Click
  7.        Select Case sender.tag.tolower
  8.            Case "sound" : Run_Sound = True : Run_Program = False
  9.            Case "program" : Run_Program = True : Run_Sound = False
  10.            Case Else : Throw New Exception("Wrong tagname")
  11.        End Select
  12.  
  13.    End Sub
  14.  
  15.    Private Sub Time_Success() ' a este sub lo llamas cuando el tiempo restante séa "00:00:00"
  16.        If Run_Sound Then
  17.            ' play wav
  18.        ElseIf Run_Program Then
  19.            ' process.start()
  20.        Else
  21.             Throw New Exception("Wrong option")
  22.        End If
  23.    End Sub


saludos
« Última modificación: 24 Mayo 2013, 13:03 pm por EleKtro H@cker » En línea



Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cronometro
Programación Visual Basic
miguecapo 2 2,298 Último mensaje 1 Julio 2005, 17:12 pm
por CodeName47/GEDZAC
Cronometro
Electrónica
abderraman 0 2,235 Último mensaje 8 Marzo 2006, 20:59 pm
por abderraman
cronometro
Programación Visual Basic
maxnet 6 3,122 Último mensaje 24 Marzo 2006, 06:42 am
por juanjoxx
Cronometro « 1 2 3 »
Programación Visual Basic
kikev10 20 9,776 Último mensaje 8 Agosto 2006, 17:03 pm
por elmaro
Cronometro en VBS :p
Scripting
Novlucker 4 8,128 Último mensaje 28 Junio 2008, 02:05 am
por Novlucker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines