Visual Basic - Problema al operar horas con horas

Life is soft - evento anual de software empresarial
   
Vista:

Problema al operar horas con horas

Publicado por CarlosV (4 intervenciones) el 21/11/2014 11:47:41
Hola,
Estoy haciendo un programa con VB en el que se comunica el ordenador con un aparato de adquisición de datos.
Mi código consigue medir, tomar datos y mostrarlos por pantalla, pero a la hora de necesitar los tiempos para operar con ellos no consigo que la base de tiempos sea real.
He intentado poner un contador desde que inicia el muestreo hasta que acaba de tomar todas las muestras y nada.
He intentado también con datediff pero me da problemas debido a que las variables donde se guardan las horas (realmente son segundos o décimas de segundo) son tipo String.
Otra cosa que he probado es a convertir los String a Date y viceversa pero tampoco me funciona, hay errores de tipo o de incompatibilidad.
¿A alguien se le ocurre cómo arreglar esto? Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema al operar horas con horas

Publicado por Pedro Luis (56 intervenciones) el 21/11/2014 13:03:46
Por si te sirve de ayuda he hecho un pequeño ejemplo con tiempos.
Tengo tres cajas de texto y tres botones, presiono el primer boton, espero unos segundos y presiono el segundo boton, al presionar el tercero me da la diferencia en segundos que han trascurrido entre las dos pulsaciones.

Private Sub Command1_Click()
Text1 = Time
End Sub

Private Sub Command2_Click()
Text2 = Time
End Sub

Private Sub Command3_Click()
Text3 = CDate(Text2) - CDate(Text1)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al operar horas con horas

Publicado por CarlosV (4 intervenciones) el 21/11/2014 13:09:43
Muchas gracias por la rapidez al intentar contestarme.
Es buena idea, no cabe duda, pero, ¿se te ocurre otra opción en la que no sean botones, que directamente, en una función tome los valores (obviamente se necesitan de bucles para tomar un tiempo inicial y otro final) y que ella misma te haga el cálculo?
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo

Problema al operar horas con horas

Publicado por Andres Leonardo (702 intervenciones) el 21/11/2014 15:10:28
Hola ... quizas solo sea de adaptar la excelente idea de Pedro Luis a tus necesidades, VB es un lenguaje de programacion orientado a EVENTOS por ende podrias programar en los eventos que requieras , por ejemplo al cambiar una caja de texto , al presionar una tecla ... etc.. etc...

Si nos explicaras un poco en que momento registras cada tiempo (y donde lo presentas o almacenas) podriamos ayudarte de mejor manera

... Excelente respuesta del Compañero del Foro!!

SAludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al operar horas con horas

Publicado por CarlosV (4 intervenciones) el 21/11/2014 18:25:26
Andrés Leonardo, gracias por tu comentario. Muy directo.
Voy a explicar a grandes rasgos la idea de mi programa:
- Adquiero datos mediante un "Data Acquisition" (aparato externo) y lo comunico con mi ordenador mediante una comunicación RS-232.
- Gracias al aparato y a la memoria volátil de que dispone realiza un barrido por los canales obteniendo, por ejemplo, 3 canales.
- Por cada pasada, guarda los datos en la memoria y a continuación los coloca en la hoja de excel.
- Entre medida y medida, quisiera operar con los datos adquiridos en ese instante y con los adquiridos en el momento anterior, es decir, por ejemplo, si un canal mide temperatura con un termopar restar la temperatura en el instante 0,2s a la temperatura en el instante 0,4s.
- Aparte de operar con las medidas de los canales, me gustaría calcular también la diferencia entre los segundos que se ha adquirido. En el ejemplo anterior 0,4-0,2.

Ahora bien, no sé por qué los comandos para obtener el tiempo del aparatoy hacer la resta me dan mal.
A lo que me refería con que no quiero ningún botón salvo el de arranque para tomar medidas es porque el aparato va a estar midiendo durante horas, por lo que no habrá un operario ni nadie dándole al botón.

Espero puedan ustedes ayudarme.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al operar horas con horas

Publicado por Juan Gabriel (4 intervenciones) el 10/12/2014 20:13:03
Primero debes colocar esta declaracion en un modulo

Declare Sub Sleep Lib "kernel32.dll" (ByVal milliseconds As Long)

luego en un form el siguiente codigo

Private Sub Form_Click()
scaner 2000
End Sub


Sub scaner(ByVal freq As Integer)
arranque = Format(Now, "h:mm:ss")
Text1.Text = arranque
Sleep freq
diferencia = Format(Now, "h:mm:ss")
Text2.Text = Format(diferencia, "h:mm:ss")
Text3.Text = DateDiff("s", arranque, diferencia)
End Sub

Private Sub Form_Load()
scaner 1
End Sub

arranque el el instante inicial antes de comenzar el escaneo
diferencia es el instante siguiente
frecuencia es el retardo que se coloca entre las lecturas de tiempo, el valor 1000 son equivalentes aprox a 1 segundo, te digo aproximado porque depende la velocidad con que la maquina ejecute la orden sleep

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al operar horas con horas

Publicado por CarlosV (4 intervenciones) el 11/12/2014 10:13:18
Muchísimas gracias Juan Gabriel.

Me ha ayudado mucho.
Gracias otra vez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar