Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ejecución control Timer en otro equipo

Estas en el tema de Ejecución control Timer en otro equipo en el foro de Visual Basic clásico en Foros del Web. Buenas, me ha surgido un problemilla con una aplicación que he creado en VB6. Una de las funciones que tiene la aplicación es que representa ...
  #1 (permalink)  
Antiguo 26/10/2010, 09:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Ejecución control Timer en otro equipo

Buenas, me ha surgido un problemilla con una aplicación que he creado en VB6. Una de las funciones que tiene la aplicación es que representa la deformación de una pieza - sometida a un proceso de forja -. Para ello, hago uso de un timer que representa la animación de la deformación de la pieza. La animación funciona como yo quiero en mi ordenador pero en otro ordenador la he probado y la animación se comporta de manera defectuosa, como si el valor de la propieda Interval hubiese variado. Sabe alguien a qué puede deberse este comportamiento anómalo en otros equipos? También añadir que los textos que tengo en los labels cambian de tamaño y estilo en otros equipos...

A ver si alguien puede echarme una mano. Un saludo.
  #2 (permalink)  
Antiguo 26/10/2010, 12:19
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Ejecución control Timer en otro equipo

Hola mira la verdad esto no deberia pasar porque sele asigno un valor y este no puede ser modificado y talvez no es que haya sido modificado.

Sin embargo el equipo en donde lo ejecutaste puede estar desconfigurado o tu equipo tambien este configurado de otra manera.

esta es mi teoria, pero puedes darte cuenta de esto puedes poner en tu formulario controles extras que te indiquen los valores de las propiedades de los que ya tienes, por ejemplo pones un label que te indique el valor del interval del timer.
otro que te indique los valores de la fuente que estasusando, asi te das cuenta de si las cosas estan funcionando como tu las configuraste en un principio o no.

bueno de no ser asi pues creo que el equipo donde lo estas corriendo puede ser mas lenta.

Espero que te ayude en algo.
  #3 (permalink)  
Antiguo 26/10/2010, 12:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Respuesta: Ejecución control Timer en otro equipo

Mmmmm puedo probar a hacer lo que tú dices, lo de poner unos cuantos labels y ver cómo varían las propiedades de mis controles(Interval, Font, Size...). Lo más curioso de todo es que mi equipo suele ir bastante lento y es el otro equipo el que suele ir más rápido, pero aún así si la propiedad Interval no cambia la animación debería ser igual en ambos equipos. La verdad que el código contenido en el Timer puede tener unas 100 líneas y he llegado a pensar que a lo mejor existe una diferencia de tiempos entre que se ejecuta todo el código en un equipo o en otro. Pero, y digo yo, ¿no debería existir una diferencia entre ambos, a lo sumo, de unas milésimas? Bastante raro todo; y lo peor es que el ejecutable se va a utilizar en varios equipos, funcionando igual, claro está, en todos ellos. A ver si alguien sabe indicarme el porqué de este extraño comportamiento. También tengo otra pregunta: ¿cuánto suele tardar la ejecución de un procedimiento simple, sin llamadas a otros procedimientos ni funciones, en función de su número de líneas?
  #4 (permalink)  
Antiguo 26/10/2010, 13:39
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Ejecución control Timer en otro equipo

Mira es fácil reconocer que de un equipo a otro los tiempos de ejecución de procedimientos varíen, siendo extremistas claro, por ejemplo instalar el Windows xp en una maquina vieja tarda mas que en una maquina nueva. Depende mucho del hardware que tenemos, otro ejemplo en los juegos de video de ultima generación, varia la fluidez de un equipo a otro, general mente son mas fluidos en equipos de alta gama.

... bueno esto claro siendo extremistas, pero para un programa sencillo no debería notarse tanto, imperceptible seria la palabra, pero claro esto depende de la complejidad de los procesos que haga este y procedimientos que ejecute, también la estructuración del código.

En ocasiones trabajar con timers para ejecutar funciones o procedimientos complicados no es lo ideal, pues a veces los procedimientos o funciones tardan mas tiempo que el intervalo mismo, es decir están desfasados.

En cuanto a tu última pregunta es difícil medir el tiempo pues como ya vimos esto varia de un equipo a otro dependiendo del hardware. Pero si debo decirte que el utilizar funciones o llamadas a procedimientos es un poco más lento que repetir la función en diferentes alturas del código principal.

Talvez puedas decirnos de que se trata tu código y aquí te podemos ayudar si hay alguien disponible.
  #5 (permalink)  
Antiguo 27/10/2010, 08:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Respuesta: Ejecución control Timer en otro equipo

Gracias nuevamente por tu respuesta. Respecto al código, está difícil que lo pueda subir porque me conecto a internet desde un ciber. Aún así, entre que no soy un gran programador y que el programa está relacionado con el tratamiento matemático de las potencias y deformaciones desarrolladas durante un proceso de forja, entender el código que he creado se puede hacer harto difícil.
Por un lado, tengo la convicción de que el problema radica precisamente en la velocidad de cada equipo, pero, por otro, me cuesta creer que sea así puesto que independientemente de eso si el Interval es de 3500 serán 3500 ms en cualquier equipo, con independencia de si éste va lento o no.
Realmente, la parte de código que genera problemas consta de 3 control Timer: uno principal - Timer1 - y dos secundarios - Timer2 y Timer3 -.
A continuación pongo los valores de la propiedad Interval de cada Timer:
Timer1 ---> 3500
Timer2 ----> 2500
Timer3 ----> 20
Al pulsar en la interfaz del programa un cierto botón que he llamado 'BRT', la propiedad Enabled del Timer1 se hace "True" ejecutándose el código del Timer1, como todos ya sabemos. En esta parte del código se hacen una serie de cálculos matemáticos y, al final de él, se hace True la propiedad Enabled del Timer2. El código del Timer2 pone , a su vez, en "False" su propiedad Enabled y en True la propiedad Enabled del Timer3, que es el responsable de la animación de la imagen colocada en un PictureBox. El código del Timer3 se ejecuta 50 veces; y llegado este momento - Contador = 50 - hace que Timer3.Enabled = False .
Sabiendo que el código del Timer1 se ejecutará 6 veces cada vez que se pulse el mencionado botón "BRT", y teniendo en cuenta los Interval de cada Timer, se puede comprobar que cuando se ejecuta la 50ª vez el código del Timer3 vuelve a ejecutarse el código del Timer1. Es decir, los Interval de cada Timer no han sido elegidos al azar sino que cuadran perfectamente ya que 3500 = 2500 + 50*20. :S. Sé que está explicado vagamente, pero si alguien está interesado en ayudarme/tiene curiosidad puedo profundizar más.
  #6 (permalink)  
Antiguo 27/10/2010, 11:48
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Ejecución control Timer en otro equipo

Se ve interesante tu trabajo.

Siertamente una unidad de tiempo es la misma en china que en donde estes, igualmente cualquier computadora mide el tiempo muy precisamente con apenas unos segundos en muchisimos años.

Pero hay que entender que los procesos son los que pueden tardar mas ó menos tiempo del originalmente calculado sobretodo si tiene que hacer calculos matematicos.

para terminar creo que deberias quitarle un poco de trabajo a los timer, como, no se pero podemos llegar a una conclución.
  #7 (permalink)  
Antiguo 28/10/2010, 09:52
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Respuesta: Ejecución control Timer en otro equipo

Gracias por tu interés. Voy a 'jugar' un poco introduciendo otros valores de tiempo a ver qué ocurre.
  #8 (permalink)  
Antiguo 30/10/2010, 07:39
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Ejecución control Timer en otro equipo

Creo que 20 milisegundos es poco tiempo para procesar nada en VB.
De todas formas, si no es algo muy específico en tiempo de duración, yo suelo desactivar cada timer cuando entro en el y activarlo al salir si no ha acabado su trabajo. De este modo evito que entre de nuevo durante el proceso y evito trompicones. Quizá eso te ayude a tener un movimiento estable si no preciso, ya que los timers dices que trabajan por turnos.

Suerte.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #9 (permalink)  
Antiguo 01/11/2010, 12:35
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Respuesta: Ejecución control Timer en otro equipo

Pues exactamente eso es lo que hago una vez el código de cada timer haya terminado de ejecutarse: poner timerx.enabled = false. Precisamente, para que no se produzcan desajustes. Aún no he conseguido solucionar el problema así que si alguien, aunque no tenga la solución, puede aportar más información respecto a los timer y a como se pueden comportar en distintos ordenadores lo agradecería mucho.
  #10 (permalink)  
Antiguo 05/11/2010, 03:54
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Ejecución control Timer en otro equipo

Creo que no me has entendido bien. Me refiero a desactivar cada timer al entrar en su sub. Al comienzo del código. De ese modo si el proceso tarda más de lo esperado, el timer no iniciará un nuevo ciclo antes de acabar el anterior.

Private Sub Timer1_Timer()
Time1.Enabled=False
...
...
...
Timer1.Enabled=(TrabajoTerminado=False)
End Sub

Quizá estoy equivocado y un timer no vuelve a entrar en su propio código hasta no haber salido del ciclo anterior, pero si es posible que se pisen unos ciclos a otros, esta es la solución.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: control, equipo, time
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:33.