LabVIEW Idea Exchange

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

Hi,

 

Sometimes we have to check the execution of just a part of a long VI and I use to do is:

- set a breakpoint just before the part,

- run the VI,

- wait for the breakpoint,

- set highlight

- and follow the execution.

 

I believe that would be nice to set the highlight just like breakpoint clicking over the wire and, when the execution reaches it, show the execution.

 

LV_Lamp.jpg

In LabVIEW if I want to use a property/method of a control I have to right click and select property. Same for second control I want to use same property I have to do same operation again. My idea is if we select all the controls and right click, some common property like value, visible and etc..... Should display and by selection it generate automatically. This can reduce my application development time.

 

 

Multiple Control Selection.png

 

So if this key feature is there in LabVIEW we can select multiple controls or properties and perform some basic operations to reduce our application development timing.

 

Thanks and Regards
Himanshu Goyal | LabVIEW Engineer- Power System Automation
Values that steer us ahead: Passion | Innovation | Ambition | Diligence | Teamwork
It Only gets BETTER!!!

Hi.

 

I'd really like to be able to select the entire top-level cluster in an event structure, if event data is a cluster:

 

Top-level cluster.png

 

I know this have been brought up in numerous forums over the years, but I feel it's being ignored somewhat by NI? It usually gathers quite a few positive acknowledgements from other users, but I think it's about three years since it's been brought up in the idea exchange. It seems so easy to implement and would greatly simplify many event structures. So forgive me for duplicating something from countless other places, but I think it deserves a second (or ninth or whatever) glance Smiley Happy

 

Cheers,

Steen

Currently, the only native way to display a JPEG in memory on a 2D picture control in LabVIEW is to

  1. save to disk
  2. read from disk
  3. display

See: 

Screen Shot 2014-02-18 at 11.09.39 AM.png

This is not only silly, but slow: on a reasonable fast machine with an SSD, this takes almost a second!

A simple request: A VI that can go straight from JPEG binary data (other formats would be nice) to a 2D picture control. This is very useful for applications that download images from a server - a pretty common thing to do.

 

a trueselect function, more powerfull Smiley Happy

 

 

d_a.png

At present case structures have options (right click) to create multiple cases if enums are attached to the case selector. If someone want's to reuse the same case structure with less number of items in a new enum, one has to manually delete one case at a time. Having an option to select multiple cases to delete, or automatically delete broken cases would be desirable to speed up things.

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 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

Hi all

 

What I need is the possibility to auto index a 2 dim array by column or by row

 

With a right click at the tunnel to have this two options

 

Jürgen

Array.JPG

 

The conditional disable structure gives the developer to create multi-function applications.  However, right now in order to build these applications into different executables the developer must go in and change the project conditional symbols and then re-build the applications and hopefully remember what the symbol states were when the application was built.  It would be great if during the application build process the conditional symbols could be set.  This would allow the developer to create multiple build specs for each different implementation of the application.  An example is shown below:

 

New build option

 

 

Thus, no need to add the "EXIT" VI, and no need to check if the VI is in Run-Time mode or developpement mode...

(for big application, it could be when no VI are running...)

 

For example, add an option in the application builder :

>> Close the run-time engine when the application is completed...

 Run-time shutdown

 

 

 

 

 

 

 

 

 

 

I like to keep my code tidy and aligned.

However, nearly every time when I need the select function, I 'd like to have the 'true case' at the bottom side.  Now I add an invert function to keep the code tidy.

My idea:

Add an extra select function with the True case at the bottom side or add an option to the current select function 'invert selector'.

 

AdjustedSelect.png

FINAL PIC.png

I come across many situations where the value that needs to be entered into a numeric control is not readily available but has to be computed (For example: I need to enter the value 679.5/23.2 into the numeric control), then I would need the help of a calculator to compute this division answer, copy and past it back in the LabVIEW control.

 

So it would be good if we support basic math operations (+-*/^%) in the numeric control (and constants?) so that even if I enter 679.5/23.2 or 2^23 or 172857+3675 in the numeric control, it evaluates the math expression in edit time and assigns the value to the control. This would less than 5% of the time it takes currently in LabVIEW.

 

(One other option would be to change the code to accept 2 controls and use the division primitive. But this may not be feasible if the VI is built into an application or if the operation is a one time calculation that need not be repeated, or if the math operation that is done to calculate the input to the numeric is different each time,etc)

With text based languages, the For Loop has a programmable starting index, stopping index, and step size.  With Labview, the starting index is always zero and the step size is always 1.  It is not changeable.  I would like to see Labview have a real For Loop where there would be three terminals inside the For Loop that can be set by the user.  One terminal for initial value (starting index), one for final value (stopping index), and one for step size.  This would be of great value to all Labview programmers.  Of course the terminals can be much smaller than what is displayed in the picture.  One or two letter terminals, such as ST for start, SP for stop, and SZ for step size would do fine.  (or N for initial value, F for fnal value, and S for step size).  The real for loop should be capable of going in a negative direction, like starting at 10, ending at -10, with a step size of -2.

 

 

21077i3760182794779C02

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

LabVIEW saves configuration data, including Recent Files and Recent Projects, in a single LabVIEW.ini file, by default saved in National Instruments\LabVIEW <Version>.  If more than one user logs onto (and uses) LabVIEW, this "sharing" of the configuration, particularly the path names to files, will probably point to the "wrong" place, as they go by default to the user's <My Documents>\LabVIEW Data.  Note that the NI function "Default Data Directory" will correctly "point to" the user's <My Documents>\LabVIEW Data, but there is no guarantee that the (single) LabVIEW.ini file will be correct for all users.

 

A simple fix is to save LabVIEW.ini in the user's Profile.  I notice that there is a National Instruments folder in App Data\Local -- this is one place that could be used.  Then if a second user logs on to a PC, he (or she) will have a unique set of saved files/folders in the Configuration file, one that references files in the appropriate <My Documents> folder.

By default when a control/indicator is dropped in the FP/BD the Label is on top of the control and the developer needs to realign them for better UI.There must be an option in the FP and the BD with which the Labels can be aligned left, right, or on top based on selection.

 

See the attached image which better describes the solution

 

untitled.GIF

 

 

The same utilty can also be used to save some space in the BD as shown

untitled.GIF

 

I think it would save a bit of space, and time, if we could use a negative array index value in order to quickly get the last element of an array.  This would also work for 2nd to last item, 3rd to last, etc.

Python Array Index Example

When I started working with Python I thought it was rather useful and intuitive to be able to quickly reference the last item in an array in that way.  Like so:

 

>>> a= [1, 2, 3]
>>> print a[-3]
1
>>> print a[-2]
2
>>> print a[-1]
3

The For Loop is one of the most widely used tools in Labview.  However, it has a drawback.  The step size and starting point is fixed and cannot be changed.  Most of the times this is OK.  But there comes a time when being able to change the starting index and/or the step size would become very useful.  Consider the following scenario:

 

You have a test results file as such:

Test1   UUT1   3.4

Test2   UUT1   4.5

Test3   UUT1   5.4

Test1   UUT2   3.0

Test2   UUT2   4.1

Test3   UUT2   5.2

Lets say you wish to extract all the info for Test2 only.

 

With a conventional For Loop, you would have to create special code to form the index.  You could do it with a While Loop:

 

21880i44C0BE7C265E7F7F  21884i11AA5440B1FB2F3A

 

 

Or you could have an option to specify the start, stop, and step parameters:

 

21886i75DF07FB2B0F1B67

 

This could be made possible as a right click option.  The default would be for the For loop to appear and function as it is now.  But if you right click on the border, you would get an option to display and use the extra terminals, as shown below.  This is similar to what is being done with the Conditional terminal.

 

21888iA08C0E5DE4D1CEFA

 

With this option, the three values would be supplied.  The i terminal value would follow the parameters.  With a start value of 1 and a step size of 2 and a stop value of 10, the i for each iteration would be 1,3,5,7,9.

This would also apply to auto indexing when this option is chosen.  In the above test result example. the code could be made even simpler by enabling indexing:

 

21890i2F764D51ADB4B1DF

 

If the start were set to 1, step to 3, and stop to 5 (or the length of the array - 1), the output would be rows 1 and 4.  No extra code needed.

 

I think this idea has great merits.  It allows use for special cases, and it allows the normal For Loop to be continued as it is today, making it backward compatible.

 

I often want to see if a while or for loop is running by watching the loop iterator. Now I have to stop the program, wire the loop iterator to the border of the loop, add a probe to the wire and run the program.

 

It would be great that I could right click the loop iterator and add a probe while a program is running.