LabVIEW Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
jcase

Typeless Call By Reference and Asynchronous Call By Reference

Status: New

When a user wants to perform a CBR or async CBR, they must pass a strict type specifier to the Open VI Ref node.

 

If the user wanted to call or asynchronously call a VI but did not want to pass any parameters, it would be nice if there was a way to call VIs that did not require a strict VI reference.

 

The Open VI Reference would need to know to reserve the target VI without a strict VI reference wired in as a type specifier.

    • Option 1: Add a new option flag. The CBR nodes will need to be updated to potentially allow non-strict references. This would prevent some compile time error checking by moving the check to run time.
    • Option 2: Create a new VI class to specify a typeless call. This new class would be wired into the Open VI Ref type spec input. The advantage to this approach is the user would get the same compile time error checking they do now.
2 Comments
tst
Knight of NI Knight of NI
Knight of NI

@jcase wrote:

 

If the user wanted to call or asynchronously call a VI but did not want to pass any parameters, it would be nice if there was a way to call VIs that did not require a strict VI reference.



What's wrong with the Run VI method, which does exactly that?


___________________
Try to take over the world!
jcase
Member

tst wrote:

What's wrong with the Run VI method, which does exactly that?


 

There are a few things the typeless CBR and typeless async CBR will buy us:

 

1) Reserving the VI at open VI reference allows for less overhead during the actual call. On the other hand, the Run VI method itself does work to make sure the VI can be called. Each time you call the Run VI method, you do this work.

 

2) Ability to call a VI that is already reserved. For example, you cannot use the Run VI method to call a VI that is a subVI in your own hierarchy

 

3) For async calls, the Wait On Async Call can be used to know when the call completes. If the Run VI method is used to asynchronously call a VI, the user would need to implement their own way to detect completion.