Updating an Main VI Image Display From a SubVI in LabVIEW

Updated Oct 18, 2023

Environment

Software

  • LabVIEW Full
  • LabVIEW Professional
  • Vision Development Module

Driver

  • NI-IMAQ
  • NI-IMAQdx
  • Vision Acquisition Software

I want to acquire images using NI-IMAQ or NI-IMAQdx from within a subVI and display those acquired images on my main VI. How do I update an Image Display control or indicator from within a subVI?

You must use a property node within your subVI to modify the properties of an Image Display control in your Main/Top Level VI. Property nodes are block diagram objects used to interact programmatically with front panel objects by providing read/write access to a set of properties associated with that front panel control or indicator. Property nodes within a subVI can programmatically read or write to an object on the calling VI's front panel by accepting a control reference input bound to that object as an input from the calling VI. 

Figure 1: Main VI with an Image Control Reference to the Image Control
 
A property node on the subVI's block diagram can now use the Image Control Reference Number to update the control on the calling VI's front panel. The second figure below illustrates how the Image Control Reference Number is used on the block diagram of the subVI to programmatically update the value of the calling VI's front panel objects. 
Figure 2: SubVI Acquiring and Writing Image to the Property Node
A note for users of NI-Vision 7.0 and earlier: This technique does not work when using NI-Vision 7.0 or earlier versions. For these older legacy versions of NI Vision it is recommended to use a global variable to pass frames between the Main VI and any subVIs performing acquisition. This method requires the use of a while loop in the calling VI continuously polling the global variable for new data.