LabVIEW Idea Exchange

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

It has come up here in a different discussion, but I think it should be a separate idea, so here it is!

 

If we disable part of the code using the diagram disable structure, the disabled code gets lighter in color. The new compiler is good at eliminating dead code (i.e. things that don't need to be computed because there is no output), so it could be useful if these code parts are also bleached in a similar way to indicate that fact.

 

Here's how it could look like.

 

I would even suggest this to be enabled by default. Of course there also needs to be an option to turn it off....

 

(I was about to write up this idea, but then, searching for "dead code", I found comment by SynchronizationOverhead. So the original credit goes there, of course ;))

The VI documentation window could use some improvement and several additions could be made to make editing the text a lot easier.

 

6-4-2010 2-31-40 PM.png

 

Improving adding control and indicator name.

 

Typically the text in the documentation window does refer to the control and indicator connected to the connetor pane.

It would be very convenient to have this information already in that window so we don't have look it up when needed. Additionally, the control and indicators are typically bolded in the resulting text using the <b></b> tag. It would be convenient if this would be done automatically for us.

In the propose idea (see image below) the VI icon with the controls and indicators is shown and the controls and indicators when clicked do insert their name into the VI description. 

 

Note: The control name may be made to look like an hyperlink to indicate that there are click able.

 

For example, in the image below, clicking the "Items to filter" will insert the "<b>Items to filter</b> tagged text in the VI description.

 

6-4-2010 2-16-46 PM.png

 

Improve general text editing

 

While fancy text editing is limited in the VI description, adding a toolbar to improve text formatting would be useful.

 

6-4-2010 2-31-40 PM.png

 

 

I am struggling with my Event Structure event list and the corresponding list of cases in the parallel consumer loop Case Structure.

Both have currently over 100 cases each and finding one or scrolling down to access the latest one has become painful due to the lack of a scrollbar in these lists.

For instance, here is the Event Structure list:

 

Screen Shot 2015-09-29 at 12.19.16.png

 

Same goes for the list of controls in a Local Variable (and other objects, I am sure).

There is no reason why such lists do not have a vertical scrollbar when that corresponding to a Enum do have a scrollbar:

 

Screen Shot 2015-09-29 at 13.33.30.png

 

Or is there?

 

Suggestion: All long pulldown lists should have a vertical scrollbar

Providing additional Context Help information on Controls that contains information as to their "type" (Classic, System, Silver, etc.) as well as their font, font-size, and control-type (indicator, ring, enum, etc.) would be useful.  The utility of this is obvious if you have ever had to modify/update an existing GUI and want to maintain the look and feel when adding new controls -- this would allow you to easily see what was previously used for the existing controls on a GUI.  This "verbose" information could possibly be turned on/off as a Tools->Options->Front Panel setting.

As it is now, when we select a structure, we can delete it, but everything in it will be gone as well.

 

If we right click, we can select Remove <structure>, and that will remove the structure, but keep everything in the active frame.

 

This idea is quite simple: make Shift+Delete do a Remove <structure>:

 

Shift Delete To Remove Structure.PNG

 

 

As a bonus, CTRL+Delete could execute a Remove and Rewire:

 

CTRL Delete To Remove and Rewire.PNG

Hi,

 

Currently to replace something (for instance a node on the block diagram) you have to right-click and then select Replace... and then usually a lengthy navigation into the function palette or onto the disk with the OS file explorer.

 

Most often I already have a LabVIEW-project open, one or more explorer windows (opened at a useful context), and maybe also one or a couple of pinned sub-palettes - but I am not allowed to replace anything from these locations. I suggest that this will actually be allowed; that is: drag something onto the block diagram, and if you're enough on top of another object, then a replace-outline appears for you to drop your new object into. Here's an illustration for replacing something in the block diagram, but the same could apply to the front panel as well:

 

Replace.png

 

All the usual stuff should happen when you replace this way, as if you replaced through the context menu. For instance a prompt to save a VI that leaves memory, automatic update of a project's dependencies etc. Many ideas are submitted to this Idea Exchange to enhance the Replace context menu in different ways, but a feature as I'm suggesting here would improve my own workflow the most, simply because I already have much quicker access to my "replacer", through existing explorer windows, than going through the Replace context menu no matter how intelligently it gets populated.

 

Cheers,

Steen

Working with class method VIs becomes easily confusing if you need to use VIs from several classes that are inherited from each other. Every class adds or overwrites VIs from one of the ancestor classes but usually you don't know which one. And if you're just user and not developer of this class structure you're usually also not interested in the exact inheritance hierarchy.

 

Look at the picture: As programmer of the application "main.vi" I'm just interested in Class 3 but I also need to know the internals of Class 1 and Class 2 whereby Class 1 is not even in my project. So I can't see that there are also other cool methods within Class 1 and to get methods from Class 2 I also have to search inside of it and compare against Class 3.

 

Andi_S_1-1594012798289.png

 

As reference: This is the content of Class 1

Andi_S_2-1594012849411.png

 

 

What I suggest and expect is the following:

Andi_S_3-1594013798865.png

=> The class tree shows all available methods within each single class!

bright colors: Methods that are defined in this class; pale colors: inherited methods

 

 

So when it comes to using a queue, there is a somewhat common design pattern used by NI examples, which makes a producer consumer loop, where the consumer uses a dequeue function with a timeout of -1.  This means the function will wait forever until an event comes in.  But a neat feature of this function is it also returns when the queue reference becomes invalid, which can happen if the queue reference is closed, or if the VI that created that reference stops running.

 

This idea is to have similar functionality when it comes to user events.  I have a common design pattern with a publisher subscriber design where a user event is created and multiple loops register for it.  If for some reason the main VI stops, that reference becomes invalid but my other asynchronous loops will continue running.  In the past I've added a timeout case, where I check to see if the user event is still valid once every 5 seconds or so, and if it isn't then I go through my shutdown process.

 

What I am thinking is that there could be another event to register for, which gets generated when that user event which is registered for, becomes invalid so that polling for the validity of the user event isn't necessary.

 

before:

before.png

after:

after.png

I would like the ability to enter simple equations in numeric controls and constants. Pressing return places the answer in the control or constant.

 

Smart Numerics.png

Let's Encrypt is an Certificate Authority (CA) that provides FREE TLS certificates for people and organisations to secure their websites and servers. Their certificates are valid for a maximum of 3 months, but client applications can automatically update the certificate when due.

It would be very nice to have this functionality in the NI web server. Exipiring certificates are cumbersome to manage.

I like compile time type safety checks. I dislike using variants. Occasionally, and increasingly more often, I find myself going to great lengths to provide compile time type safety. At a point, the type check gets lost in the inheritance hierarchy and I am back to depending on runtime checks for errors. It's not uncommon for me to have a class method that needs to "just work" across the bulk of the base types, but it sure is a pain to make wrapper classes, static inlined methods, and a nasty polymorphic .vi to mimic this behavior. Perhaps I am ignorant to some features of LV (do malleable vi's fit in here somewhere?), but multiple dispatch/function overloading sure seems like the silver bullet for this issue without messy inheritance trees.

 

I'm open to discussion on alternatives. This "problem" has come up in a couple of recent projects of mine, and I always feel dirty using a variant or making a static API for a class that ought to be extensible.

I would like to introduce a little shorthand for creating numeric constants with non-decimal radix.  New constants should be able to autoadapt for radix, much like they do for type:  Drop a constant, enter '0x20' or 'x20' to get a constant with Hex radix (visible!), and the proper value.

 

In addition, it would be nice if automatic conversions would take place if radix specifiers are entered into (non-hex) constants (or controls).  For example, entering '0x20' into a numeric control with decimal radix should result in a value of 32 being entered (auto conversion).  Hex is an exception, obviously, because b and d are already valid.  The other radices have no such problem.

 

ConstantRadix.png

VIMs are awesome but when wire inputs are broken they aren't awesome. They'd be awesomer if there was a way to specify that when specific frames of type specialization structures are active, there is a way to get specific strings added to the error info for the caller. Having a way to add custom strings to VIMs would overcome the general "An unsupported data type is wired to this subVI node." error string we're currently given. This can also help differentiate between LabVIEW breaking during type prop for odd (bug) reasons and properly invalid inputs... Do I need to just delete a wire and re-wire the input or do I need to hope the developer provided good VI documentation?

 

With some additional frames in Type Specialization Structures and maybe something like a subdiagram label but instead it could be a error reporting field at the bottom of a frame, it would be much easier to provide meaningful information back to a developer such as "GUID input only accepts GUID.ctl or a String". Then if the caller breaks with the unsupported data type error for the VIM, error details from the currently active TSSs can be concatenated to the Details string displayed in the Error list dialog. Alternatively, each error message found in TSSs could be separately listed in the Error list.

 

My 10 second idea:

TSS Error.png

 Resulting in the Error list perhaps showing it as either an error or concatenated into the Details:

TSS Error list.png

 

I'm not sure if this idea already exists, at times i wish to have an option to display the line numbers in a string control/indicator/constant.

 

Line numbers

I like to collapse long string and path constants to consolidate diagrams.  Showing the string or path value in the tip strip is useful but tedious to update.

 

constant tip strip.jpg

 

 

 

 

 

I suggest an appearance property that would automatically display the current value in a tip strip for string and path constants.

 

properties window.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

This property would be most useful if the Block Diagram Options page was also modified to allow a global setting.

 

options window.jpg

 

Title says all. Can't believe it was never proposed; if it was, I couldn't find.

Missing that, I have to that programmatically, but it's always a detour:

2017-09-28_11-42-52.png

Should be quite easy to change the property page like e.g:

LabVIEW_2017-09-28_11-02-36.png

(6 colors for system booleans, 4 for all others, as known)

 

 

Hi,

 

i propose to add a "Key Focus" event for each control. We already have Mouse events (leaving, entering) - but when the user (or the programmer) prefers the keyboard (with proper tabbing setup) you have to poll each interesting control for it's "Key Focus" property to initiate a user event...

 

So please:

Add a "Got Focus" (and additionally a "Lost Focus") event to the event structure!

The compare tool is fundamentally broken which is somewhat shocking considering that such a tool is essential to any sort of large scale or long term software development.

 

Attached is a basic LV 2023 example which illustrates some of the many flaws with the tool.  If you compare "old version" and "new version" vi without including cosmetic changes, the tool shows 33 differences, most of which are incorrect.

 

I'm developing code, and like most people I know, I have multiple VI's open at once.

If I then go and open the VI properties dialog, I lose track of what VI the properties are for, especially if I get an interruption.  I know I can just close the properties window and open it again for whichever VI I wanted (or go to the parent category to see the name), but this could be solved by simply adding the name of the VI to the window title of the Properties dialog. 

 

like this:

 

vipropertiesdialog.png

Problem

Many times, the bulk of LabVIEW development happens on computers that will never interface with hardware. A dozen engineers may be collaborating on code that will ultimately run on a dedicated machine somewhere, that is connected. Yet, as things currently are, I have to install more than I need on my development machine to get access to API VIs. If I am working on my laptop on an application with DAQ, RF, Spectrum analyzer, etc. components, I have to choose to either download and install all of that, or deal with missing VIs and broken arrows. This seems needless, since my particular machine will never actually interface with the hardware.

 

Idea

I would like to have the option to install only the LabVIEW VIs and ignore the driver itself. In many, if not most cases, the LabVIEW API could be independent of driver version. It could install very quickly, since it would just be a set of essentially no-op VIs. I don't care that the VIs would do nothing. They would just be placeholders for my development purposes. This would allow me to have full API access to develop my code without having to carry around large driver installations that I will never actually use.