LabVIEW Idea Exchange

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

The various options for aligning, distributing and sizing the elements of a front panel are very useful.

 

Snap1.png

 

What I find lacking is the ability to move one or more elements according to a number of pixels.

An adaptation of the box for resizing would suit me very well.

 

Resize Objects.png  Move Objects.png

It would be nice to easily find objects that prevent a structure with "Auto Grow" from becoming smaller in size.  For example, the Add function in  the True case in the simplified example below.

 

NIExpert_0-1680056795428.png

 

 

If you right click on an array wire and choose "insert - array palette - inert into array" you geht this:

 

lv_arr_2.PNG

 

It would be better if this happens:

 

lv_arr_1.PNG

Must have been discussed a zillion times, but just in case, there it goes:

 

what's wrong with this picture?

 

ScreenHunter_001.jpg

 

apparently nothing. If I grab the function and move it:

 

ScreenHunter_002.jpg

 

Note that LV must have "computed" something here to reroute the wires, etc.

But wait, what happens if I grab the wire and move it?

 

ScreenHunter_003.jpg

 

Oops! I did not connect the output of the function to the indicator. Instead, I inadvertently connected the input.

Needless to say, this is a F-ing nightmare to debug... unless you think of verifying that the value before the function and after the function actually gets incremented. Which you will, eventually, but not until after having wasted a lot of time thinking of all other possibilities elsewhere in the code.

 

Bottom line (this is only an example I just encountered for the umpteenth time a minute ago), LV does not provide much in terms of warning for this kind of potentially very damaging error. This is very much related to the discussion I started here with very limited success (man, am I an upbeat person!). 

 

Suggestion: not only allow to define VI outputs as REQUIRED but also add warnings when a function that has its only or most important output(s) unconnected.

 

And if not everybody is interested in this kind of sanity check (I am talking about functions), you could offer this "warning" as an option (in a warning definition panel in the Preferences).

 

The title says it!

 

It is often confusing "Which is the opposite end in a queue?/What does opposite end mean?", esp for new user of LabVIEW. Smiley Frustrated

 

Seems here, even the author of the LV Queue primitives was not able to recollect its name correctly. Smiley Wink

 

Also, please see below from the LV Help. Smiley Happy

 

 

Enqueue Element At Opposite End.jpg

Right clicking a FOR/While loop index would allow the user to select the array dimension.  This could then be displayed on the VI as shown. 

 

indexing - old.jpg

indexing - new2.jpg

 

 

There is a missing property that it will be very useful to have to access the menu reference.

 

Old way:

RuntimeMenuLoad_old.png

New way:

RuntimeMenuLoad_New.png

This way it's more clean and we can open a reference to the menu from another VI

 

Dany

There is something wrong with this VI, although you wouldn't know it unless you ran it (and I should warn you that it will annoy you if you run it):

 

AnnoyingVI.png

 

 

What's wrong with it is that auto grow has been disabled and there's some annoying code hidden there beyond the loop boundary. This is one of my least favorite things about LV - it allows us to hide code completely and get away with it. I don't think it should.

 

LV already has auto grow enabled by default to handle some of the cases which cause this issue, but I know that many many people don't like it when LV automatically plays with their BD layout (and rightly so) and auto grow only covers some of the cases, so I think we need something more encompassing and less obtrusive, and I would suggest breaking the VI if it has hidden code.

 

I also know that LV has warnings and VI Analyzer has tests for this, but I think this needs to be something which doesn't let you get away with it.

 

I think LV should break any VI which has any of the following:

 

  • Objects beyond the visible boundaries of structures (including wires and constants).
  • Objects behind other objects (possibly not including wires).
  • Overlapping tunnels on structures (or maybe just not allow them to overlap at all)?
  • Anything else?

I tried searching for a similar suggestion but couldn't find one but I would bet that this has been suggested several times.

Why is the routing to multiple adjacent array terminals (or similar) so terrible ? The top Build Array shows the standard routing chosen by LV when wiring from a group of refs starting at the top. Starting from the bottom isn't any better. The lower Build Array is what I always change it to !!  Why is this not the standard routing ? 

I'm sure all of you VI meisters with OCD can sympathise.Smiley Wink

 

Wire routing.JPG

I didn't find this idea immediately, perhaps something similar has been posted already?

 

I would like to propose an extension to the Index Array function, to accept an array of numbers or booleans on the index input. The picture below illustrates the idea. The new Index Array function would replace the for loops in both cases, making for a neater and more readable diagram.

 

Index Array proposal.png

Propertyreduction.png

Why all the redundant .lvclass everywhere? Please remove this from the property node, it makes the property node longer than it needs to be.

If I have a path control on my front panel for the user to interact with, I will always show the browse button.  This button makes selecting a path easy from a user perspective, and from a developer I know that the path they selected has some level of validity.  So for instance I know that the path they selected must exist and be a valid path otherwise Windows won't let them select it, and the value change won't be triggered for the control.

 

But the user can manually type in text into the path control, and when focus is taken off the value change event will take place.  The problem with this is the path they entered might not be valid, or may contain characters my platform doesn't support.

 

I doubt a user will manually type in text in the control often, they will use it as an indicator showing the path they selected using the browse button, but on the off chance that they type somthing and it isn't valid, my code might crap out throwing errors.

 

I can add code to check for a valid path, and I can add code to check for illegal characters in the path, but I'd have to do this for every path control on every UI the user sees.  I could also write an XControl for this with a decent amount of work and hopefully meet my needs, but it would be nice if this were a native feature.

 

So what I'm suggesting is that the path control have an option, possibly in the browse options dialog, which makes the interaction with the control, only available by using the Browse button.  This would ensure that any value change event will be from the user picking a valid path with the browse button.

It is common, in writing reusable code, to handle arbitrary clusters in variants.  To access the elements of the cluster, one wants to convert the cluster into an array of variants containing the individual items.  After access, one needs to convert the array of variants back into the original cluster.

 

There are several examples of packages that use this on NI.com and in the LAVAg.org Code Repository.  They mostly use functions for working with Variant Clusters from OpenG; however, these can be quite slow.   Recent LabVIEW versions have had the ability to do much of the functions quicker, however, there is a very imortant missing native ability: to convert an Array of Variants into a Variant Cluster.

 

The other direction, Cluster to Array of Variants, works like this:

Array of Variants to Cluster.png

But trying to reverse the process breaks:

Array of Variants to Cluster.png

 

So my idea is make the second image work; make an Array of Variants interchangable with a Variant Cluster in the "Variant to Data" LabVIEW primative. The interchangability should apply to contained subclusters/arrays also.  The matching of array to cluster elements can be by cluster order rather than element name.

 

This would greatly aid the performance of reuasable packages that operate on arbitrary clusters.

The Getting Started window gives up too easily if you click on a file that has been moved or deleted. It should provide an option to find the file.

 

Message Edited by Broken Arrow on 04-09-2010 09:35 AM

Hello (again),

 

Well, this idea has haunted me for a couple of years, and now I think it's time to break it. I feel the For-loop, the While-loop, and the Timed loop are so similar that they are begging for a merger. It would simplify, and with a little thought strengthen, the API, to have a single configurable Loop Structure instead. What's the difference between a While-loop and a For-loop with a conditional terminal anyway? Have you ever wished for iteration timing information being available inside your For-loop (I know I have)? "Oh but those structures have been around forever, we can't touch those"... Well, what happened with the stacked sequence structure? Please read on for a minute or two and tell me if I'm losing my marbles here. And please chip in with your own modifiers, since LabVIEW is growing in (sometimes unnecessary) complexity. Thus:

 

CrossedOutLoops.png

 

Instead I propose the Loop Structure which when initially drawn looks like this:

 

NewLoop_Infinite.png

 

The above is basically a loop running forever (don't worry, you can stop it), but it can be modified to do many many other things, just be patient Smiley Happy. One feature of the loop structure is the box in the upper left corner, which is quite similar to what we have in a For-loop today. This will, no matter the configuration of the loop structure, always show the current iteration setting of the structure. By default that is never-ending, but if you drag in a conditinal terminal you change the loop behavior to a While-loop (note that I suggest a simpler way to get to the terminal than via the right-click context menu):

 

NewLoop_While.png

 

Arrays can be wired to the structure border as usual to give a For-loop like behavior. The count terminal changes from "Inf" to an "N" to indicate that it's a finite albeit at edit-time unknown number of iterations:

 

NewLoop_Unknown.png

 

You can wire out of the count terminal inside the loop structure as usual to get the count at run-time of course. If the iteration count can be deducted at edit-time a number will appear instead of the "N":

 

NewLoop_42.png

 

This number is blue to indicate that it is automatically calculated. You can just type in a new number if you wish to run a different number of iterations, in which case all the usual ideas on this Idea Exchange about what should happen to auto-indexed tunnels apply. If you override the count manually the number will be in black text:

 

NewLoop_50.png

 

You can of course combine different exit conditions, in this case a fixed number of iterations with a conditional terminal wired as well for possible early exit:

 

NewLoop_42_Conditional.png

 

The automatically calculated count terminal aids in determining if the loop actually runs the desired number of times:

 

NewLoop_MultipleArrays.png

 

All the usual stuff about tunnels, shift registers and so on apply to this structure as well, but on top of that it can also be configured as you're only used to within a timed loop. Consider how valuable some of these parameters and settings could be for ordinary loops, for error handling and for timing for instance. But the main feat is that this is still the same loop structure - it will simplify the palette a lot:

 

NewLoop_Timed.png

 

And now an additional feature that ties some of the parameters from the timed structure together with ordinary loops: this loop structure is event-enabled! I propose stuff like this (we're only scratching the surface with this image):

 

NewLoop_Events.png

 

It's late where I am now, so I'll stop now, but all of the above makes it extremely easy to do things you simply can't do today - what about a Priority Structure?:

 

NewLoop_PriorityStructure.png

 

So, is it time to consolidate the ever-evolving loop code of LabVIEW into one structure to rule them all? Smiley Very Happy

 

Cheers,

Steen

Here's a dumb mistake I think many of us can relate to:

bundle_by_name.gif

It would be really nice if the VI were just broken in this situation. But I can understand why it's not necessarily simple to mark node *outputs* as required.

 

 

But maybe there could be a way for the editor to *hint* that there is a problem here. Maybe the bundle nodes could change color when the output terminal is wired, so you could get a little more obvious feedback if you screwed up like this.  The same could go for any other primitives that have a "for type" input (e.g. unflatten from string, variant to data, to more specific class, etc).

 

Granted, VI Analyzer could report bugs like this, but having a little more immediate feedback would probably be a big win.

 

(Let me know if this should be cross-posted to the NXG idea exchange, too).

Hi,

 

I just thought of a small thing when I enabled the Dynamic Event Terminals on an event structure for the zillionth time - why don't they just appear automatically when I wire a compatible wire to the structure border? Like this:

 

DynTermPopup_1.png

 

DynTermPopup_2.png

 

DynTermPopup_3.png

 

Of course once in a while you don't want to wire to the Dynamic Event Terminal, but instead want that wire to tunnel through the structure border, but a dab on the CTRL or ESC key could make the Dynamic Event Terminal "suggestion" disappear.

 

Cheers,

Steen

Allow Meters and Gauges to accept and rotate cutomized pointer needles.

I'm a great advocate of commenting code, but with the graphical nature of Labview, you need space on your block diagram to add in a post-it giving your comments. That's great if your block diagram is nice and spread out, but (perhaps due to poor planning/programming) i'm often finding myself getting limited on space. Adding comment labels all over the place takes up even more space and results in the whole block diagram exploding to an often impractical size.

Wouldn't it be nice to be able to do an Excel-type tool-tip, where comments will be hidden until hovered over with the mouse?

 

idea 1.png

 

Instead:

idea 2.PNG

    hover with mouse -> 

idea 3.PNG

I have a need to keep two string indicators lined up as the user scrolls one of them. It would be great if I could use the event structure to capture scroll position. It doesn't look like that is an option. I didn't see this posted yet.

 

String.PNGstring2.png