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: 

Sincronización VIS

¡Resuelto!
Ir a solución

Hola, estoy tratando de sincronizar dos VIS. Mi problema es el siguiente; tengo do VIS y comparto información atrvez de ellas con variables compartidas, solo que como el while loop de una vi corre cada interacion mas rapido que la del otro vi, se pierden algunos datos en la transaccion. les estoy mandando un proyecto lo mas simplificado posible que demuestre mi problema. Cabe mencionar que ya he logrado solucionar ese problema con notificadores, el problema con estos es que no solo basta con poner un send notification en la subvi y un wait notification en la vi principal sino que tambien debo poner otro send notification en la vi principal para que no se quede buscando el wait mientras mi subvi esta inactiva, ademas de esto en una aplicacion mucho mas grande que esta, con multiples subvis y muchas variables , se agrandaria muchisimo el codigo.

 

En pocas palabras quiero que el programa corra de la siguiente manera, si es posible. Mientras no se llama a una subvi el programa corre normalmente, cuando se llama a una subvi  primero corre una interacion del subvi pero no se completa sino que pasa a la interacion del vi principal y lee los datos de la subvi que aun no cierra su ciclo, luego se termina la interacion del vi principal junto con la de la subvi. De esta manera podria utilizar las variables que necesitara y sin necesidad de estar preocupado por sincronizar cada una de ellas sino que ya estarian sincronizadas al estalo las vis. Espero el haber sido claro, Muchismimas gracias de antemano, cabe mencionar que estoy utilizando el modulo de real time, por si exsite alguna manera de lograrlo con este. Gracias.

0 kudos
Mensaje 1 de 4
3.021 Vistas
Solución
Aceptado por el autor del tema Cordova_Mr

Hola cordova MR

 

Me parece que la forma con la cual podrías atacar tu problema es  con una estructura productor consumidor que utiliza buffers de tal manera que puedes enviar datos entre ciclos paralelos por medio de buffers y no estarías perdiendo datos. Aquí te anexo más información al respecto:

 

http://zone.ni.com/devzone/cda/tut/p/id/3023

 

Ahora por otra parte para sincronizar inicio o términos de Vis puedes utilizar las funciones de Rendezvous. En el example finder podrás ver un buen ejemplo llamado Rendezvous with SubVIs.vi en el cual se sincronizan las iteraciones de 3 subvis.

 Espero esto te sea de ayuda.
Carlos Pazos

Senior Product Marketing Manager

National Instruments
0 kudos
Mensaje 2 de 4
3.005 Vistas
Gracias por responder, Estoy checando la informacion, Luego te comento, gracias de nuevo
0 kudos
Mensaje 3 de 4
2.991 Vistas
Muchas gracias esto es lo que necesitaba, utilice Application Design Patterns: Producer/Consumer. nos vemos
0 kudos
Mensaje 4 de 4
2.988 Vistas