Autor
|
Tema: Cronometro regresivo (Leído 15,815 veces)
|
SγиtαxEяяoя
Desconectado
Mensajes: 154
|
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
Mensajes: 9.866
|
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.aspxprocess.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.aspxtimer1.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#Region " Time Remaining " ' [ Time Remaining ] ' ' // By Elektro H@cker ' ' Examples : ' CountDown_Start() Dim TotalTime As Long = 10000 ' ms Dim Time_Elapsed_Watch As New Stopwatch Dim Time_Remaining_Span As New TimeSpan() Dim WithEvents CountDown_Timer As New Timer Private Sub CountDown_Start() Time_Remaining_Span = TimeSpan.FromMilliseconds(TotalTime + 1000) Time_Elapsed_Watch.Start() CountDown_Timer.Start() End Sub Private Sub CountDown_Timer_Tick(sender As Object, e As EventArgs) Handles CountDown_Timer.Tick Dim TimeRemaining As TimeSpan = Time_Remaining_Span - Time_Elapsed_Watch.Elapsed Label1.Text = "Elapsed : " & _ String.Format("{0:00}:{1:00}:{2:00}", _ Time_Elapsed_Watch.Elapsed.Hours, _ Time_Elapsed_Watch.Elapsed.Minutes, _ Time_Elapsed_Watch.Elapsed.Seconds) Label2.Text = "TimeLeft: " & _ String.Format("{0:00}:{1:00}:{2:00}", _ CLng(Math.Floor(TimeRemaining.TotalHours)) Mod 999999999999999999, _ CLng(Math.Floor(TimeRemaining.TotalMinutes)) Mod 60, _ CLng(Math.Floor(TimeRemaining.TotalSeconds)) Mod 60) If TimeRemaining.TotalSeconds <= 0 OrElse Time_Elapsed_Watch.ElapsedMilliseconds > TotalTime Then Time_Elapsed_Watch.Reset() CountDown_Timer.Stop() End If End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load CountDown_Start() End Sub #End Region
EDITO: Como reproducir un archivo que no séa WAV: On Error GoTo ErrMsg AxMMControl1.Wait = True AxMMControl1.FileName = OpenFileDialog1.FileName AxMMControl1.Command = "Open" AxMMControl1.Command = "Play" Exit Sub ErrMsg: End Sub
O usando APIs: http://stackoverflow.com/questions/10244068/playing-a-wav-mp3-file-at-the-start-of-a-vb2010-windows-formPD: 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
Mensajes: 154
|
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
Mensajes: 431
en ocasiones uso goto ¬¬
|
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=4No 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
Mensajes: 9.866
|
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
Mensajes: 756
|
Gracias por el cronometro EleKtro H@cker, muy bueno ya lo estoy usando en mi nuevo soft.
Salu2
|
|
|
En línea
|
|
|
|
XresH
|
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;
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
|
|
|
|
SγиtαxEяяoя
Desconectado
Mensajes: 154
|
Gracias al usuario XresH, por explicarme... logre esto... Cuando llega a 00:00:00 reproduce un sonido.wav usando este codigo 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
|
Mas que variables con los mismos RadioButon podes hacerlo;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
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
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: Dim Run_Sound As Boolean = False Dim Run_Program As Boolean = False Private Sub RadioButtons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ RadioButton1.Click, _ RadioButton2.Click Select Case sender.tag.tolower Case "sound" : Run_Sound = True : Run_Program = False Case "program" : Run_Program = True : Run_Sound = False Case Else : Throw New Exception("Wrong tagname") End Select End Sub Private Sub Time_Success() ' a este sub lo llamas cuando el tiempo restante séa "00:00:00" If Run_Sound Then ' play wav ElseIf Run_Program Then ' process.start() Else Throw New Exception("Wrong option") End If End Sub
saludos
|
|
« Última modificación: 24 Mayo 2013, 13:03 pm por EleKtro H@cker »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
cronometro
Programación Visual Basic
|
miguecapo
|
2
|
2,293
|
1 Julio 2005, 17:12 pm
por CodeName47/GEDZAC
|
|
|
Cronometro
Electrónica
|
abderraman
|
0
|
2,231
|
8 Marzo 2006, 20:59 pm
por abderraman
|
|
|
cronometro
Programación Visual Basic
|
maxnet
|
6
|
3,108
|
24 Marzo 2006, 06:42 am
por juanjoxx
|
|
|
Cronometro
« 1 2 3 »
Programación Visual Basic
|
kikev10
|
20
|
9,751
|
8 Agosto 2006, 17:03 pm
por elmaro
|
|
|
Cronometro en VBS :p
Scripting
|
Novlucker
|
4
|
8,103
|
28 Junio 2008, 02:05 am
por Novlucker
|
|