Diferencias entre Llamar a un VI con un Nodo de Invocación y Llamar a un VI con una Llamada por el Nodo de Referencia

Actualizado el Aug 28, 2023

Reportado en

Software

  • LabVIEW

Detalles del problema

¿Cuál es la diferencia entre llamar a un VI con un nodo de invocación (Invoke Node) y llamar a un VI con un nodo de llamada por referencia (Call by Reference Node)?

Solución

La principal diferencia entre la llamada por referencia utilizando un nodo de invocación (Invoke Node) y el nodo de llamada por referencia (Call by Reference Node) es la facilidad de programación frente a la flexibilidad de la arquitectura.


Cuando use un nodo Call by Reference , debe conectar una referencia de VI estrictamente escrita (strictly typed). Una referencia de VI estrictamente escrita incluye información del panel del conector con los tipos de datos, así como la referencia a la VI. Cuando se utiliza el Call by Reference Node, LabVIEW crea un panel de conector para usted debajo del nodo. Con el nodo Call by Reference Node, puede aprovechar la carga de un VI dinámicamente, mientras tiene la comodidad de un cableado simple.
 
Cuando utiliza un Invoke Node, no es necesario que use una referencia estrictamente escrita. Como resultado, puede pasar cualquier VI a un nodo de invocación para ejecutarlo. El uso del nodo Invoke permite una mayor flexibilidad, ya que le permite llamar a VIs que no tienen el mismo panel de conectores. Esta es una forma sencilla de abrir solo el Panel frontal y ejecutar un VI. Sin embargo, si desea pasar valores, deberá conocer los nombres de los Controles y sus tipos de datos , lo que requiere una programación adicional. El método Invoke Node se vuelve más flexible porque puede pasar cualquier ruta de VI a esta configuración y podrá abrir y cargar ese VI.

Otro beneficio de usar el Invoke Node para llamar a un VI por referencia es la capacidad de interactuar con el VI. El método Invoke Node le permite interactuar con el VI mientras se está ejecutando, por ejemplo, si es necesario controlarlo o en caso de que las salidas deban leerse varias veces. Usando el nodo Call by Reference, el panel del conector generará valores solo una vez, cuando el VI finalice la ejecución. No proporciona la capacidad de interactuar con un VI en ejecución.

Información adicional

Si desea llamar al VI objetivo de forma asíncrona, use el nodo Start Asynchronous Call en lugar del nodo Call by Reference . Esto permitirá que el VI objetivo se ejecute en un subproceso separado.



El uso del método Invoke Node puede hacer que el VI objetivo se ejecute en el subproceso de la interfaz de usuario, lo que puede ocasionar algunos problemas si desea que el VI que llama tenga un desempeño adecuado mientras el VI llamado se está ejecutando. Esto sucede incluso si tiene una constante falsa conectada al terminal Wait Until Done. Para una llamada asíncrona completa fuera del subproceso de la interfaz de usuario, debe configurar los ajustes de ejecución del VI objetivo en consecuencia. Abra el VI de destino y vaya a Archivo »Propiedades de VI , seleccione Ejecución en el menú desplegable y elija un Sistema de ejecución preferido diferente a la interfaz de usuario y Igual que la persona que llama .