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.

Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Como funcionan las event structure?

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.

 

0 kudos
Mensaje 11 de 26
3.347 Vistas
Hola, el diagrama del timeout simplemente es una rotación del array y extraer de él el primer elemento.
0 kudos
Mensaje 12 de 26
3.330 Vistas
Hola jrafa, siento de verdad ser tan insistente pero esq debido al poco tiempo que llevo utilizando LV todavía estoy un poco escaso en conocimientos.
 
En el subVi que me enviaste no se como colocar la referencia al booleano. ¿Como se relaciona esta referencia al booleano del otro Vi?, yo pongo una referencia pero el cable no conecta con generate use event.
 
Muchas gracias y perdón por la insistencia.Guiño
0 kudos
Mensaje 13 de 26
3.315 Vistas

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.

Descargar todos
0 kudos
Mensaje 14 de 26
3.312 Vistas

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.

Descargar todos
0 kudos
Mensaje 15 de 26
3.310 Vistas

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).

Descargar todos
0 kudos
Mensaje 16 de 26
3.303 Vistas
Mil gracias, lo más importante esq veo en que estaba fallando muchas gracias!!!Emoticono muy feliz
0 kudos
Mensaje 17 de 26
3.294 Vistas
Hola JRafa

Yo tengo Varias dudas sobre el event Structure, la primera s cuantos Event Case se Pueden tener, por qu es que la verdad soy nuevisima en esto y se me hace muy dificil el manejo de los botones en dentro del event structure, no funcionan es decir uno los oprimn y no hacen nada, solo lo hacen cuando son parte de un event case por tanto creo que tengo muchos event case, y pienso que debe haber una mejor manera, de manejarlos pero no la conosco.....
No se por que creo que hay algunos errores en mi programa y quisiera le echaras un vistazo por favor si no es mucha molestia.. muchas gracias. y pues si pudiera entender bien eso de los event cuando es change value, o cuando es mouse up, sabes donde podria encontrar mas informacion.. gracias
Lady Johanna Rodriguez Chavez
0 kudos
Mensaje 18 de 26
3.075 Vistas

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.

Mensaje 19 de 26
3.041 Vistas
JRAFA,

Hola como estas si me has ayudado bastante muchas gracias, una ultima pregunta que pena contigo la parte de los for qu solo se repiten una vez lospuedo quitar y dejar solo el escribir y leer puerto serial sin el for, es qu esa fue una ayuda que me diron y de esa m gui para todos por so los deje igual... esto en que cambiaria la forma de oprar es decir que funcion cumple el for, (yo se que un for repite un N numero de veces la operacion dentro de el), pro como afectaria mi comunicacion con el puerto serial??

Gracias

Lady Johanna Rodriguez Chavez
0 kudos
Mensaje 20 de 26
3.037 Vistas