LabVIEW Idea Exchange

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

LabVIEW should expose a method that allows you to "drop-down" a combo box programmatically.

 

Something similar to the issue discussed in this KB article:  http://digital.ni.com/public.nsf/allkb/96BD56FE6D416AB5862573BE00811AC2

 

A simple invoke node would be great.

Hi,

 

wouldn't it be nice to set the access scope for multiple VIs in the project tree? Currently you have the possibility for using virtual folders. When I right-click on multiple VIs i can analyze them, run unit test, etc. Currently we're building the hierarchy of virtual folders according to functionality and not by access scope.

 

I searched the ideas but didn't found such an idea. If so, please don't shoot me for a double post.

 

Right Click on Multiple VIs

Currently the only way to set/modify Tcp socket options is by directly calling some system library, as done for example in this post.

 

This not only causes code difficult to understand ("what does that library call do again?") but also poses problems when you want to use your code on different operating systems: Currently the only way to do this is using "conditional disable structures", and then Labview still tries to load the code used for a different operating system...

 

Labview should have a standard way to set socket options within Labview code, at least for the most important options (Nagle algorithm leaps to mind...). This could either be done as additional inputs to the "Tcp open connection"-VI, or (much better) using property nodes for Tcp connections.

 

Currently to AutoScale an axis once, you need to set the ScaleFitX/Y property to 1. However this is really just like calling a method since the value of the ScaleFit property remains whatever it was previously. As a result, I find this mechanism unintuitive and would prefer to use the invoke node to call a suitable method named ScaleFitX/Y since it is an operation that just happens at a moment in time rather than changing a property.

Current Method: Property NodeCurrent Method: Property NodeProposed Idea: Invoke NodeProposed Idea: Invoke Node

The "Convert Instance VI to Standard VI" right-click option on malleable VIs made me think if this technology could be used for debugging otherwise inlined VIs (and therefore also malleable VIs)?

 

VIM Convert.png

 

VIs are obviously inlined without their block diagrams, so my suggestion would require two changes:

 

1) 'Allow debugging' must be settable in combination with inlining in VI Properties >> Execution.

2) LabVIEW IDE and RTE would have to call inlined VIs in different ways, depending on this setting. Suggestion follows:

 

Running in the IDE

The IDE would now create a temporary unique instance for each running inlined subVI that has debugging enabled. This would allow us to double-click on an "inlined" subVI while it's running, and have that temporary instance open up ready for probing. Settings like the 'SubVI Node Setup' dialog would now also be available for inlined VIs, if they have 'Allow debugging' on. Set 'Allow debugging' off and inlined VIs will behave as today (so no change for any existing code).

 

Running in the RTE

Executables are built with 'Enable debugging' either on or off (Advanced page of the Application Builder). I suggest that Application Builder builds in unique instances in place of debug-enabled inlined VIs when 'Enable debugging' is on, and bakes in ordinary inlined code when 'Enable debugging' is off. This would allow us to debug into inlined (and thus also malleable) VIs inside executables with remote debugging. Loose VIs called with the RTE would have had their inlined callees compiled with either debug capability or not, depending on their 'Allow debugging' setting as discussed above in "Running in the IDE".

 

What do you think - would it be nice to be able to debug inlined VIs?

Add "Find All Instances" for polymorphic VIs. Right-clicking a normal VI's icon in the upper-right displays a pop-up menu with quick access to a "Find All Instances" item which helps greatly when navigating code to find all callers, then their callers, etc. However, when a caller happens to be polymorphic "Find All Instances" is not available and the work-flow is broken. Ctrl+F or Edit, Find can be used but the Find dialog must be manually configured: "Search for" Objects may have to be selected if Text was last used; "Select Object" must be set from a looong list of VIs. By that time, concentration is lost.

This is somewhat related to this idea by GregS, but still not quite the same.

 

The array index terminal of an In Place Element structure currenty require to be wired. It should exactly like "index array" such that unwired inputs behave like the plain old Index Array (an unwired index is the index of the above terminal +1 (recursively). The top terminal defaults to zero).

 

As an example, here's a simple construct that keeps the N, average, min, and max in a size 4 array. For some reason, the code is broken unless I wire indices 0..3. None of the indices should be necessary and the functionality should remain exactly he same without them.

Message Edited by altenbach on 12-28-2009 09:58 AM

So one shortcut I really like is CTRL+Shift+E.  This shows a VI in the opened project and drills into dependencies, and libraries to show you where the VI is.  The most common reason for me doing this is to find the library or class that a VI is in, and to find the other members within that library.  One issue I have is if I open a VI that isn't in a project.  This isn't very often but some times I want to work on editing a library or class that isn't part of a project yet and is just some reuse code that I intend on cleaning up.  

 

When I open a VI that is in a library, but not in a project, CTRL+Shift+E does nothing, but what I think would be nice is if this same shortcut could be used when not in a project to open the Edit >> Browse Relationship >> This VIs Class and open the class to show where the current VI is in the class or library.  Or alternatively this idea could be to make a new shortcut that does open the library or class a VI belongs to, and select the VI in a similar way to the This VI In Project works.

I am sure many do this:

tab with enum.png

  • Use an enum and hide the tabs
  • Programmatically change page when enum changes

This works great, but during development the page obviously does not change when changing the enum. Either you right-click the border of the tab control and "Go To Page" or you display the Page Labels Display (and programmatically hide it) or something along these lines.

 

But why not make the tab control's Page Labels Display an enum in the first place? Being able to customize it would be great, but just making it an enum would be really helpful.

 

So basically:

page labels display.png

  • We get the look we want
  • We avoid having the extra event to change page during runtime
  • Page also changes during development
  • Everyone is happy

 

 

 

This one has irritated me for a long time.  When I create installers, I like to utilize the welcome dialog so the user knows exactly what they are installing.

 

But the application builder limits this to 7 lines of text.  Look all the unused space!

 

Welcome dialog for installer.JPG

 

My suggestion:  Make use of the unused space and let us specify more than 7 lines of text.

When using a case structure with many cases I often need to check where a given input is wired (and used).

Maybe It could be useful to have a right-click feature that can allow to jump to the cases where an input is used, as shown in the picture:

 

19085i403F476FB9FE79AF

Didn't find this idea posted, I think it's a must.

 

It would be very usefull for MulticolumnListbox Item Names in which we need to change cell values...

inplacepropertynode.png

Right now we can make a conditional disable structure that behaves one way if we the VI is running in the Run-Time engine or not.  What I think would be useful is if we could also decide on performing one case or another based on the version of the Run-Time/Development of LabVIEW.

 

Say I develop some neat little reuse VI that relies on getting the name of the label of data type passed in.  OpenG has a functional already that does this called Get Data Name.  NI has a version as well in vi.lib called GetTypeInfo.vi.  The problem is in 2011 the OpenG method is about 10 times faster, but in the 2013 version the NI version is 10 times faster.

 

Wouldn't it be nice if a conditional disable structure could choose to do one thing over another, based on the version of LabVIEW it was being run in?  This way reuse code could be written to perform best in what ever version it was running in.

 

There are many situations were one code written using some function either runs slower or faster in different versions of LabVIEW and using this we could choose the best option for that environment.

 

Of course there is a work around and that is to read the App.VersionYear property, put that into a case statement and perform different code for one version or another but this has added over head, and is called every time it is needed.

 

EDIT: Also the App.VersionYear can't be used in inlined VIs because it is a property node which a conditional disable can be used.

Currently, I have to move each of the control into the cluster, and then I have to spend a lot of time repairing the broken wires in the BD.

 

Is it possible to just select all the controls you need to bundle into the cluster and create a new cluster.

Labview will need to automatically repair those broken wires.

This should work in both BD and FP.

 

It's just like selecting many stuff on the BD and create SubVI!!

new cluster idea.png

When working with User Events as an API between modules there is a nasty little thing which unfortunately keeps rearing its ugly head.

 

If we retrieve a cluster of User Events (or an Event registration refnum) from a module with events we should be listening to and wire this to an event structure we get a memory leak if not all events are handled.  This particularly occurs whenever the API is extended and not all listeners have been updated.

 

2016-04-21 17_40_14-Edit Events.png

 

It would be much easier to track down these kinds of problems if the Event Structure would display which User Events are in the associated Registration Refnum but are NOT yet handled.  This would be a great too in tracking down rogue Events and eliminating possible memory leaks due to implementation errors.

 

Currently one has to iterate through ALL of the user events and observe the warning "this event is handled in another case" in order to find out if all have been handled or not.

Can we get a "Loose Fit" plot axis option that actually works?

 

Loosefit.PNG

 

In the plot above, it's really hard to tell without squinting what the value was over time. Did it transition from 5 to 6, or 6 to 5? If you toggle the "loose fit" option in this plot, it looks exactly the same.

 

Can we add a property to specify something like "LooseFit.Padding"? Users could enter a percentage of full scale value, so then once the native autoscale algorithm is performed, it bumps out the y-axis min/max values by x% of the full range.

Hi All,

 

I had posted this same idea in another post but it didn't have enough clarity and was mostly misleading the forum members. I was not able to edit it that I had to post this in a new thread here. 

 

The Idea

I felt that it would be good to have an option to switch to the last visited case in a case structure with numerous cases when going through the cases for debugging or understanding a code. It often happens that I have to scroll through the list of cases to get to a case and then may be I'll have to check something in the top most case. Again if I have to check the last visited case, I have to again scroll all the way down to the case, which becomes a little tedious. Instead, it would have been good if we had some kind of option to switch to the last visited cases sequentially (in a right click menu of the case structure or some keyboard shortcut after selecting the case structure). 

 

I'm sorry if someone has already posted this in the idea exchange forum. I tried to search it but couldn't find any such posts.


Regards,
Nitz

We have the option for finding the items that doesn't have any callers in the Project. So it would be good if a "Delete" option is also available in the same window as shown below. The same option can be disabled if the item selected item is locked and can only be enabled if it can be really deleted from the project.

 

IDEA_Item_With_No_Callers.PNG

 

 

 

 

So currently in order to have multiple scales in an XY Graph, you must pre-allocate the scales by "Duplicating Scale" on the Front Panel. This does not allow the user to dynamically set the number of scales unless they create them before hand and programmatically make visible/invisible. 

 

XY Graph.png

 

I suggest making some node (invoke or property) to duplicate the scales. This would make the XY Graph scales much more extendable. 

I have several versions of LV permanently installed in order to maintain old code, going back several years. This is because most often it is not possible - or even not allowed - to upgrade RTE's and/or Device Drivers at target PC's working at factory shopfloors.

 

I often end up opening projects with a newer LV version without being aware of it and it happens to inadvertently save VI's with that version and - even if most often I "hit" only one VI - that is enough to wreck havoc on the entire project, which than needs to be entirely saved back to the original older version; it happened to be necessary to use progressively older LV versions, because sw was very very old.

 

I would like to have LV version AND the VI's origin LV version permanently displayed - say, on the top right corner of the window, both BD and FP - and IF they differ, an warning blinking triangle.

 

Gyc_0-1609871530058.png