Visual Basic - Timers más rápidos

Life is soft - evento anual de software empresarial
 
Vista:

Timers más rápidos

Publicado por Enrique (1 intervención) el 27/08/2002 20:50:15
Hola. Soy Ing. Tec. Industrial, especialidad en construcción de máquinas, y estoy diseñando y construyendo una mesa de coordenadas con motores paso a paso; necesito altas velocidades en los motores pero los Timers de Visual Basic sólo me permiten 18 pasos por segundo. ¿Conoces alguna forma de conseguir que una rutina se ejecute 400 ó 500 veces por segundo?

Si conoces alguna forma te agradecería me la comunicases. Agradeciendo tu interés de antemano, recibe un saludo.
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

RE:Timers más rápidos

Publicado por BENJO (82 intervenciones) el 29/08/2002 00:42:02
Enrique, en realidad los Timers de VB se ejecutan en ciclos de milisegundos, siendo su mínima expresión 1 milisegundo.
Eso significa que el código que se encuentre en el Timer tardará un milisegundo desde que sale del eventi Tic hasta que ingresa nuevamente.
Eso no significa que el código que cada uno ponga dentro de un Timer tarde menos de un milisegundo.
Asimismo, la utilización de los timers consume muchos recursos de sistema, por lo que su implementación , es tanto o menos recomendable como un bucle Do While con DoEvents por supuesto.
Suerte.
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

RE:Timers más rápidos

Publicado por bla (230 intervenciones) el 29/08/2002 22:49:04
Aunque se configuren en milisegundos no se ejecutarán nunca dos tics separados menos de 50 ms (lo que coincide con la estimación de Enrique 1000/50=20 tics por segundo) y eso siempre que el ordenador no tenga nada mejor que hacer (los tics sólo se lanzan si el ordenador tiene tiempo).
Ciertamente el do / doevents consume recursos pero está justificado si estos recursos se utilizan de modo productivo.
Una buena idea para mejorar el do : doevents : rutina : loop es preparar la rutina para que no se inicie antes de haber acabado
public sub rutina()
static bEjec as boolean
if bejec then exit sub
bejec=true
' procesos de la rutina
...
bejec=false
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

RE:Timers más rápidos

Publicado por bla (230 intervenciones) el 29/08/2002 22:36:44
Lo siguiente se ejecuta continuamente, lanzando la rutina tantas veces y tan rápido como pueda. El doevents evita que vb se bloque y permitiendo que continúe respondiendo a los eventos. Ponlo al final del evento load del formulario.
do
doevents
rutina
loop
Quizá esto no deje descanso al procesador y tengas que limitar el número de veces que se ejecuta
t=timer
do
doevents
if timer-t>10 then
rutina
end if
t=timer
loop
Si esto no te vale mejor que pienses en otros lenguajes como C.
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