From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
el 01-30-2008 01:51 PM
Hola de nuevo jrafa he visto las imágenes que me has mandado porque no he podido ver los VI ya q yo uso el LV 8.0, ¿me podrías mandar los VI para esta versión? o sino puede ser ¿la imagen del event timeout? ya que tengo una pequeña duda en el funcionamiento.
Muchas gracias de antemano.
el 01-31-2008 08:32 AM
el 02-01-2008 03:37 AM
el 02-01-2008 04:50 AM
Imagino que te refieres al control llamado "boolean" de subVI.vi. Para crearlo puedes ir a interfaz.vi y con el cursor sobre la salida "user event out" de "create user event" darle al botón derecho y elegir "Create > Control", luego puedes copiar este control y pegarlo en el subVI.
Yo lo hice un poco diferente, creé todo el código en interfaz.vi y luego seleccioné el código que iba al subVI y le di al menú "Edit > Create subVI".
He guardado el código con compatibilidad para la versión 8.0, imagino que ahora podrás abrirlo.
el 02-01-2008 05:59 AM
Hola de nuevo, he recibido tus VI y me han servido de ayuda, pero estoy desesperado ya que no consigo el funcionamiento deseado y la verdad no se en que estoy fallando. Te explico: Desde un vi hago q un led se encienda y se apague y ese led lo reflejo en el interfaz del otro VI y quiero q cada vez q este se encienda capture la letra q se encuentra en ese momento en el string. He mirado tus ejemplos y los del libro y no se porque no me funciona porque me he basado en ellos, pero no me funciona y no entiendo el por que. Logro q el led se encienda y se apague pero ahora no funciona la secuencia d letras. ¿En qué puedo estar fallando??
Muchas gracias por tu tiempo de verdad. y lo siento por la insistencia pero esque no veo la salida a mi problema.
el 02-01-2008 06:58 AM
Te falta un case en el subVI dentro del cual se genere el evento sólo cuando la condición sea verdadera (si no se dispararán eventos innecesarios en cada iteración del bucle). En el interfaz, la variable local que usabas para concatenar es string2 en vez de string (concatenabas un string vacío consigo mismo). También faltaba conectar el cable del array de la entrada a la salida del EVENT cuando sucede el evento de usuario (si no se hace, cuando ocurra este evento el array será uno vacío).
Sobre el programa no sé cuál será su aplicación final, pero recuerda que puedes ahorrarte la división en el subVI si las comparaciones las hacer con 2000, 4000, etc. Además el bucle sólo tiene sentido durante los primeros 9 segundos, luego ya no generará más eventos (si quieres que sea periódico podrías usar un "Quotient & Reminder"). También debes tener en cuenta que el interfaz y el subVI no están sincronizados (no empieza a ejecutarse el EVENT exactamente en el mismo instante que lo hace el TIMED LOOP).
el 02-01-2008 10:17 AM
el 06-10-2008 03:18 PM
el 06-11-2008 12:04 PM
Hola Johanna,
la recomendación es usar únicamente una estructura EVENT en cada bucle. Dentro de esta estructura puede tener diferentes casos, como en el ejemplo que has mandado. El número máximo de estos casos, sinceramente lo desconozco, pero te puedo decir que yo he usado más de una docena sin ningún problema; en este foro hablan del tema. Además también tienes que tener en cuenta que el código de un caso se puede ejecutar por más de un evento.
En este enlace tienes varios consejos para usar eventos: http://zone.ni.com/reference/en-XX/help/371361B-01/lvhowto/caveatsrecmndtnsevnts/. Sobre lo de los eventos "Change Value" y "Mouse up" usas el segundo en los controles de tipo "Dial" para que cuando mueves el control evites que dispare eventos en valores intermedios y sólo se dispare cuando tengas el valor final (dejes de pulsar el botón)
Si no entiendo mal, dices que sólo te funcionan los eventos cuando introduces el botón dentro del caso, ¿cierto? Esto no debería ser así, puedes tener los controles fuera, solamente debes tener la precaución de evitar condiciones de carrera que se podrían producir en caso de cablear el control dentro del caso; lo puedes evitar usando NewVal en el nodo de la izquierda de la estructura (en el tercer enlace que he puesto hablan sobre cómo usar NewVal cuando hay más de un evento por caso). Por otra parte, a veces se meten dentro los controles cuando son botones Latch, aunque personalmente yo prefiero poner todos los controles que disparan eventos juntos a un lado de la estrucutura para tenerlo todo más ordenado.
El VI que has adjuntado me da error porque no encuentra "Dialog Box.vi", lo he eliminado y he cableado la entrada a la salida para probar. He sacado los botones del teclado del primer evento fuera del EVENT y ha funcionado bien (en el control "string" aparece correctamente el número), por cierto, creo que te falta el botón "0". Luego en el caso "[1] DF mode" creo que no necesitarías el "Build array" ni el FOR. En "[3] DF AF" puedes ahorrar código si cableas el BoolText al selector del CASE y dentro de él únicamente poner los dos strings que difieren, lo demás iría fuera del CASE, así el FOR sólo lo tendrías una vez. Por cierto tienes muchos FOR que se repiten una única vez, también podrías eliminarlos.
Bueno, espero haber entendido bien tus dudas y que te esto te sea útil.
el 06-11-2008 12:31 PM