LabVIEW Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Provide a way to save and recall sets of probes for a running application.  A developer could then provide sets of various probes that would help the end user.  The superprobe would remember the VI paths and locations in the block diagrams of the application's SubVIs and automatically load VIs from disk or monitor existing re-entrant copies in memory.  The superprobe would have a front panel layout, like a global VI, to look like a custom dashboard of important data values in the applicaton.

A Diagram Disable structure lets all the code that isn't inside of it execute but not what is inside of it. I think it would be helpful to put a structure around a snippet of code and execute only what is inside the structure. I usually copy and paste it into a new vi but it would be helpful to have that functionality within the vi i'm working on. 

In Java, any errors/exceptions that a function can throw (to its caller) are listed directly in its signature/declaration.  This would be nice functionality to have in LabVIEW.  Otherwise, the only way to determine which errors a VI can return is to either:

  • examine the code manually, recursing through all its subVIs or
  • brute-force exercise the VI until you have observed all errors that it might throw in your particular application. 

Neither of these options seems particularly robust or efficient.

 

It may even be possible for LabVIEW to determine the throwable errors automatically, although at least having the ability to declare them manually would be a good start.  They could be registered through the development environment such that they are stored in the VI file itself.  In this way LabVIEW could summarize all the errors a given VI throws based on those declared within it and its subVIs. I acknowledge that this would likely require a more sophisticated error system than the current error codes (since these may not be known at compile time).  But, I would be surprised if it couldn't be achieved in a similar fashion to Java where all errors are classes that inherit from a common "error" class.

 

If I'm missing some methodical, pragmatic approach for achieving the same result, please let me know.

When developing a Complex LabVIEW Applications, we may need to create N Number of Folders as a part of Configuration information.

This requires the developer to make a check "Check if File or Folder Exists"

Instead of that Create Folder Function can have a Boolean "Optional Input" to create the Folder only if not found in the specified Location and Eliminating the Error when trying to create same folder again.

Hope this will help Smiley Happy

The In Place Array Index/Replace Elements function not only can save memory by avoiding copying arrays, it can also create "neater" and more transparent Block Diagrams.  For example, here are two ways to triple the third element in an Array of 3 elements:

 

Array Index-Replace 1D.png

I needed to do the same thing, but for a 2D array (three channels of A/D data, I wanted to triple the third channel).  The Help for the In Place Array Index/Replace Subset function suggests this is possible, using language like "element or element(s) of an array", noting the similarity between this In Place Structure and the two Array Functions that form the Input and Output nodes, and in earlier versions of LabVIEW (specifically LabVIEW 2012), explicit reference to rows, columns, and pages as replacement items.  Here's what happens:

Array Index-Replace 2D.png

The Index Array left node forces you to specify both row and column, meaning you cannot operate on a single row (or single column), "breaking" the functionality with the separate Index Array/Replace Subset functions.  This also, I believe, will force an Array Copy operation, something I'm (also) trying to avoid.

 

At its most benign, there is a Documentation "Bug" that should warn users that this In Place function is only designed for single array elements (which, in my opinion, severely limits its usefulness).  I would like to suggest that this function be "fixed" to (a) for multi-dimension Arrays, allow, as with Index Array and Replace Subset, flexible choice of one or more Indices to be specified, with the unspecified Indices implying "All of the Elements", i.e. an entire Row, Column, Page, etc, and (b) maintain the "In Place" functionality by having this function generate the necessary code (behind the scenes) to access the specified elements and do whatever operation is required inside the Structure.

 

I appreciate that requirement (b) might be difficult.  For instance, operating on a row in a 2D array should be easy, as the (row) elements should be continguous, making getting and putting them simple.  However, if a column is specified, getting successive elements and putting them back becomes more complex.  To the User, it all "looks simple" -- you get a 1D wire out, operate on it (say, multiply it by 3), and stick it back "in place", but the LabVIEW compiler has to "get" elements from non-continuous locations and put them back where it got them, but that's what Compilers are for!

 

Bob Schor

 I would love to see an optional input node on the edge of a while loop for loop wait. 

When I build, I like to test each step.  That means that I make a bunch of "debugging" indicators.  Some might prefer probes and breakpoints, but I like the "build as you go" and "don't use too many tools".  The challenge here is that about 80% of indicators that I make, I have to delete.

 

I wish there were a version of "diagram disable" that is specified in the block diagram, that worked for the front pane, and left me some tiny asterisk instead of the indicator, that didn't hit program execution times, and that when I configure execution the asterisks can be made to disappear. 

 

This would allow me to revisit my code, to access all of my debugging methods very quickly and intuitively, and to not necessarily change the final layout of the front panel after my debug is done.

I have a project which compiles to 2 different executable for different hardware targets.  I have created 2 Build Specifications which specify different locations for the build output.  However, between compiling each one, I must go to the target options, and change a Conditional Disable Symbol definition so that the other .exe is generated.  If the Build Specifications definition had a tab to specify the value of Conditional Disable Symbols, and which would take precedence over definitions in the project or the target options, then I could build my 2 executables without changing the target properties.

It would be really nice if the Flatten to JSON supported more LV data types.  In particular, I find it very annoying that it doesn't support flattening a waveform to JSON since those are very common in most of the measurement APIs.  

 

In the mean time, I have come up with this little work around, but it really seems like this is something that should be natively supported.

 

Waveform to JSON.png

 

JSON to Waveform.png

 

    Unbundle should allow an array (of clusters) as input

 

   like this,

 

   yyyyyy.png

 


                                 equivalent to this :

 

 

xxxxx.png

Hi All,

 

I saw in the Forums,Developer are spending more time on the convertion of the programs from UP to Down or Down to UP due to their requirment.

if NI provides the add on tool for Converting Up/Down,Down/Up.

 

it is easy to use and they can spend more time on other part of Developmnet.

 

Version tool.png

  

                                The event data node does not retrurn "all elements"

 

             it would be nice and useful if "all elements" would be also available

 

 

2015-04-22_010606.png

 

 

                                                                                        like this;

 

 

result.png

I mean when it's used for indexing array...

It could be really useful if someone wants to skip some initial indexes...
It has already been done?

Really, How frequently do we need to transpose 2D arrarys to index by col?  And what about 3+D arrays!

 

Inspired by a discussion on allowing user names for array dimentions 

And a recient case where I needed to index a 3D array by page

 

What if we could wire that 3D array (Length, Width, Height) to a aotuindexing tunnel right click the tunnel and select index by Height?

I would like the option to save data from LabVIEW using the Hierarchical Data Format. This would make it much easier to share data with Matlab and other programs.  

This is a real pain point for us at the moment and drives many of our engineers away from using LabVIEW, quite rightly. The tdms import dll for Matlab is slow and the 3rd party .mat export toolkits for LabVIEW are not sufficiently developed or only licensed for single-seat environments.

According to Wikipedia:

In some languages a class may be declared as uninheritable by adding certain class modifiers to the class declaration. Examples include the "final" keyword in Java or the "sealed" keyword in C#. Such modifiers are added to the class declaration before the "class" keyword and the class identifier declaration. Such sealed classes restrict reusability, particularly when developers only have access to precompiled binaries and not source code.

The sealed class has no subclasses, so it can be easily deduced at compile time that references or pointers to objects of that class are actually referencing instances of that class and not instances of subclasses (they don't exist) or instances of superclasses (upcasting a reference type violates the type system). subtype polymorphism. Because the exact type of the object being referenced is known before execution, early binding (or "static dispatch") can be used instead of late binding (also called "dynamic dispatch" or "dynamic binding") which requires one or more virtual method table lookups depending on whether multiple inheritance or only single inheritance are supported in the programming language that is being used.

 


 

I have previously made appeals to allow for certain classes to restrict the ability to load new ancestors at run-time, thus restricting possibly allowing for inlining of dynamic dispatch VIs.  A similar request has already been made in order to facilitate ilining of DD VIs.  I believe that ultimately, it is support for a "Final" or "Sealed" class what I am looking for.

 

Such a modification on a class would effectively prohibit instantiation of any new version via factory method and would declare to the compiler that the code defined at compile-time is actually the full extent of code which will be available at run-time, thus allowing for the aforementioned optimisations to take place.

 

Questions would have to be answered regarding type propagation and some loopholes may remain regarding dynamic loading of new classes (only dynamic dispatch methods which are visible as instances of the "final" class can actually safely be inlined for example).  Especially for a specific RT application of mine, this would be a great benefit as the natural progression of this idea is indeed the ability to write code such that dynamic dispatch VIs are actually inlineable.

Hi Team,

 

Debugging a big application for errors can be made easy. No need to probe for errors or ON highlight Execution. This idea can be faster to debug a big Application.

I dont know if this idea is posted before. Thanks All.

 

Idea 2 1.png

I think it would be nice to have a for loop that has an automated iteration constant in the tools/structures pallet.

This would be equivelent to a:  "for <a>  from <begin>  to <end> by <step_size>" statement in Maple. 

When start end by terminals are unwired, the loop should behave as an traditional for loop. 

 

 forFromToBy.png

 

This loop will produce an array [0.3 , 2.4 , 4.5 , 6.6 ....,4.2]

In other enviroments, such as TestStand, you can change the values of variables at run-time, which is extremely useful when debugging.  It would be really nice if you could dothe same thing with the values on wires in LabVIEW.  Perhaps this could be implemented by allowing you to change the value of a wire using the Probe Watch Window or, if that isn't possible, there could be a separate window altogether such as a dedicated variables/watch window.

 

I'd like to have the LinkedInputTunnel option also for a selector terminal.

linkedInputTunnel.jpg