Jump to content

crossrulz

Members
  • Posts

    546
  • Joined

  • Last visited

  • Days Won

    25

Posts posted by crossrulz

  1. If you look at the actual array sizes, things will make a lot more sense.

    1. The Build Array will add the number of expanded elements to the first dimension. The array size after the first Build Array is (2,0), which is still an empty array.

    2. The Transpose Array will swap the array sizes. The array size after the Transpose Array is (0,2), which is still an empty array.

    3. Again, the Build Array will add the number of expanded elements to the first dimension. In this case, it will add 1 to the first dimension, resulting in the array size being (1,2), which is no longer an empty array.image.png.2472c2e9d5a19bbdd94796af62461089.png

    • Like 1
  2. Another part of this history: JKI forced NI's hand to release scripting (officially supported and open for everybody to use) with their Right-Click Framework. This is how I discovered scripting. I think I even wrote one or two plugins for myself. Then something happened in LabVIEW 2011 or 2012 that broke it. I asked Michael Aivalotis about it and that's how I found out this part of the story. JKI had no intention of fixing the issue because their mission was accomplished.

     

  3. 1 hour ago, Rolf Kalbermatter said:

    Not quite, they don't use NXG to create these application. NXG is truly and definitely dead. But they use the according C# frameworks and widget libraries they were creating for NXG.

    To put in a little more detail...

    For NI, NXG was way more than just a rewrite of LabVIEW.  NXG was a framework that all of their applications would use.  This is most obvious with the UI.  There is a full project just to manage the UI components: Fuse Design System

  4. What is the communication bus that is used to talk to the instruments?  Assuming anything VISA, it is likely that the communication time will swamp out any gains from going parallel.

    As a gut feel, I would likely go with the Parallel FOR Loop simply because it is easier to code up than two FOR loops (one to launch the VIs and a second to collect the results).

  5. On 3/5/2024 at 9:55 AM, crossrulz said:

    FYI, there is a new feature in LabVIEW 2024Q1 where can wire the reference to the VI Path input on the Open VI Reference.  You do also need to wire up the Type Specifier if you need the strict type.  NI has stated the need for the type specifier  as a bug per this thread on the dark side: New Open VI Reference Functionality

    Update:  There is now a 2024 Q1 patch that fixes this bug.  So you no longer need to wire up the Type Specifier when using the static VI reference wired to the VI Path input on the Open VI Reference.

    The patch also covers several security issues.  Those who are using 2024Q1 really should go into NIPM and get the update.

  6. On 3/5/2024 at 7:32 AM, Francois Aujard said:

    Thank you all for your answers

    In the end, only the first one is useful. Is there a case where I might prefer the 2nd or 3rd solution over the first?

    In fact, the 2nd solution will always be waiting for the end of execution, even if you set the option to call and forget

    494167725_DynamiqueCalloptionx80.PNG.da66e8b28664f8fa41de9608227f9a83.PNG

     

    FYI, there is a new feature in LabVIEW 2024Q1 where can wire the reference to the VI Path input on the Open VI Reference.  You do also need to wire up the Type Specifier if you need the strict type.  NI has stated the need for the type specifier  as a bug per this thread on the dark side: New Open VI Reference Functionality

    Call Waits_BD.png

    • Thanks 1
  7. Top: Start Asynchronous Call - Loads a VI, starts running the VI, and then waits for it to complete.  The SAC returns as soon as the VI has started to run.  The Wait On Asynchronous Call is what waits for the VI to complete and return its outputs.

    Middle: Call By Reference - Loads a VI and runs it.  The CBR will not return until the called VI is complete.

    Bottom: Run VI Invoke Node - Loads a VI and runs it.  If you wire FALSE to the Wait Until Done input, the VI runs asynchronously.  If you wire a TRUE to the Wait Until Done input, the invoke node will not return until the VI is complete.  You do not have a direct way of getting the results once the VI is complete.

    • Like 1
  8. 11 hours ago, codcoder said:

    So yes I went for "brute force".

    But I managed to solve it using VI scripting, i.e. automatically creating undbundle-by-name from the public cluster to bundle-by-name to the private cluster. So even if the creation process is obscure the result is easy to read by someone who knows only little LabVIEW. Which was what I was aiming for.

    Sounds like an OOP solution is what you really want.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.