LabVIEW Idea Exchange

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

There are many VIs located beneath the "<LabVIEW>\resource" folder that need to be called as subVIs of LabVIEW add-ons (e.g. project providers need to call provider API VIs located there).  However, because the resource folder is not a Symbolic Path this introduces many challenges for LabVIEW add-on developers.  LabVIEW add-ons that link to VIs beneath the resource folder cannot be moved to a new location (for example as part of a source distribution build step), otherwise they will not be able to find these resource subVIs (since they link via a relative path between the caller and subVI, rather than a relative path between the resource folder and the subVI).  Note that NI doesn't really feel this "pain" since most of the add-ons NI develops are developed "in place" beneath LabVIEW and ship with LabVIEW -- they don't get "built" and they don't get "installed".  However, for 3rd party add-on developers, it's critical that the resource folder be a symbolic path.

 

Note: This would make building packages of project provider plug-ins possible with VIPM.

User should right click and select "show control" to show hidden control. That option becomes very hard In case there are many hidden controls and indicators in the big code.

"Show all hidden controls and indicators" option would be very useful.

 

Show all hidden controls and indicators.jpg

I searched for this Idea but I guess its not posted (If posted please excuse).

 

While moving the control/indicator/function (Unbundle cluster) outside the loop/structure the wire gets broken but it would be handy if we can move the controls without breaking the wire so reduces re-wiring. This will be very useful when it is implemented with all these. So the idea is to move any wired object without breaking the wire.

 

Control move 5.png\

When the idea is implemented its easy for clearing

Control move 6.png

The same for the controls and indicators

 

 Control move 1.png

Control move 2.png

Control move 3.png

I guess this would be more usefull while cleaning the code.

 

In many cases where I use file path constant instead of control. For selecting a path either we can right click and select browse for path or paste a copied path into the constant.

So it would be a nice and handy option to have a browse button along with the constant as the control has. This button won't respond when the code is executing or while the BD is in run mode similar to the other Enum/Ring constants. This button can be enabled or disabled or made always to be enabled or whatever may be the best approach. This button may be disabled when "invalid path" is selected.

 

Mockup 1:

PathConstantBrowseButton.png

 

Mockup 2:

browse-constant.png

I have modified the Path constant suggestion and now I feel its not going to take more space.

 

Suggested style:

 

PathConstant.png

Mouse turns to select pointed when hovering over the button.

 

PathConstantBrowseButton.png

Upon clicking the button the browse window appears

 

PathConstantBrowse.png

 

Good programming practice says to handle your errors.  If you want to clear a specfic error, you have to do some variation on the following code:

 

ClearSingleError.png

 

Since this can be pretty cumbersome in your code, I would love to have a Clear Specific error VI/function that will do exactly this.  It can also be polymorphic and accept an array of multiple errors.  To make it even better, you could probably merge it with the existing clear error VI and set it up where if the error input is empty, it clears all errors.

 

CaptainKirby made a nice community example that does all this, but I'd like it to be on the palette for everyone to use...

https://forums.ni.com/t5/Example-Code/Clearing-a-Specific-Error-From-The-Error-Cluster/ta-p/3517242

 

Right now when you bring up the icon editor for a VI, you get something like this

 

icon_now.jpg

 

Which doesn't tell you anything about what VI you are actually editing the icon for.  Which is a little confusing if you have multiple VI's open, go get a cup of coffee and come back and forget what was going on.

 

I think it would be much nicer if we add the name of the vi to the Icon Editor titlebar (just like it is for the block diagram and front panel) so it looks more like this:

icon_future.jpg

 

I started using LabVIEW when it was at version 6 and have used all the interim versions. I have always found the implementation of the Alt-Tab keystroke to be irritatingly inconsistent with other Windows applications.

 

If we have multiple LabVIEW wnidows open, for example, Alt-Tabbing to one of them means I have Alt-Tab through ALL of them to get to the first non-LabVIEW window. This is a real menace. If we have, for example, 8 LabVIEW windows open and the Calculator, we just want to Alt-Tab between LabVIEW and Calculator: we have to tab 8 times to get to the calculator but once will get us back to LabVIEW.

 

This makes little sense, since Ctrl-Tab has historically been for tabbing between multiple instances of the same application. Alt-Tab should be reserved for tabbing between applications.

 

By contrast, if we have multiple Microsoft Word documents open, they are mixed in with the other applications on the Alt-Tab popup, so if there's one which hasn't been topmost for a long time, it gets shoved to its rightful place at the end of the list.

 

Looks like this has been a hot topic for a while. Still with no concusion. Does this exclude it from the product ideas forum?

 

Why not make Alt-Tab behave the same way as all other Windows applications, since we'll always have the Ctrl-Tab to toggle between those self-important LabVIEW windows?

 

Custom probes are great, however unlike the default probes you do not always have them with you...so why not just make the default probes just a tad smarter? 

 

- The array probe e.g. should not just show a single cell - it should by default show at least some of them (1*10 for 1D, 10*10 if 2D etc. e.g.), have it's scrollbars visible and be resizable?

 You could add some core information about the array, like it's size e.g. in an indicator on the top as well....and perhaps have a pull-down menu for the display format. Keep it general and simple of course, but a bit more convenient than today's probe.

 

 

- The string probe should also be resizable and have a control that let's you switch the display format.

 

- etc.

 

 

It's got to be a duplicate, but I could not find it...

A significant number of vi.lib VIs are still outputing error codes (I32) instead of an error cluster.

For instance, the famous Ramp.vi:

 

ScreenHunter_002.jpg

 

returns an error -20006 if you ask for zero samples. Type in this value in the "Explain Error..." window of the Help menu and you get:

 

ScreenHunter_003.jpg

 

So it's not that the error code is mysterious and cannot be interpreted (I must say I was a bit puzzled by this discussion on error codes).

NI has to fight with this problem themselves. For instance, here is the code you find in the NI_AALPro.lvlib:AAL Resample Filter Prototype Design.vi:

 

ScreenHunter_004.jpg

 

What is that "?!+Magnifier" VI , you'll ask (AAL Error Information.vi, in the same library mentioned above)? I am probably supposed not to post it, but I will nonetheless, considering what it REALLY does:

 

ScreenHunter_005.jpg

 

Yep, it simply returns the same numeric error code value (again) and the call chain for the VI generating the error (but it won't tell you that the real source is the DLL called in the "Kaiser" VI above). I assume (but I can't prove) that the codes returned by the analysis library are among those recognized by the Explain Error VI.

 

It is not only an annoyance to not be able simply connect VIs using an error cluster wire, it does not make error handling particularly easy (basically, the way I read the answers of Aristos Queue and Norbert_B in the thread I quoted above is: "reverse engineer our VIs if you really want to 1) get the complete list of error codes it can output, 2) understand their cause").

 

My suggestion: Hire a couple of interns to sift through NI's VI librairies and change error code outputs into error cluster outputs with proper messages.

 

Obviously, for compatibility reasons, open previous code with an added unbundle primitive which will return the old error code (with a list of warning after the first compilation). You've done that before and we have survived.

 

 

I have a large library of general purpose functions and I do a lot of OOP in LabVIEW, and as a result my preferred workflow involves dragging a lot of functions from the project explorer window onto the block diagram. This workflow is slowed down, however by the fact that the project explorer window is regularly hidden by other windows when I click on them.

 

What I would like to see is something like most development IDEs have, e.g. Visual Studio, where I can have the project explorer always visible in a fixed position on the screen. I suggest this would be an option, so would not affect those who like things the way they currently are.

It is currently possible to add space to the block diagram by drawing an area or line with the cursor while holding down Ctrl+Shift.

 

I often wish there was an equivalent opposite shortcut;  where you could draw how much you want the diagram to contract instead...

Message Edited by Mads on 07-03-2009 08:31 AM

This is minor one but it bugs me every time.

 

I create a new control and forget to change the type from "Control" to "Type Def.".

 

If I'm lucky I spot it after I drop it for the first time on the BD but sometimes I have to replace quite a few instances after I spot the error.

 

While there might be usecases for a custom control without it being a type def I think that most users want to use type defs when using custom controls.

 

Therefore please make the default type of new controls "Type Def."

Consider the following scenario:

 

You have a front panel with a fixed size and all controls are placed exactly as you want them.

Now you click a wire on the diagram and select “Create Control” or “Create Indicator”. In my experience this new control is created outside of the front panels bounds in 90% of all cases…

 

Now you need to resize the front panel, find the control, move it to the desired position, and resize the front panel back to its original size. And if you’re really lucky you also need to scroll around the front panel and set the origin back to its original position...


I’m aware that I could set the front panel and window bounds properties at the start of the program to set the size and origin of the FP, but that doesn’t help me much when I’m editing. I would need to start the VI once to set these properties.

 

Life would be so much easier if the control would just be placed in the center of the front panel…

The installer build spec dialog should analyze the components being installed and suggest what additional installers will be needed to allow the EXE (or what ever else is being installed) to function on the target machine.

Also, the 'Additional Installers' catagory screen should have detailed help explaining what each installer is for and why you might want to include it.  Just looking at the names is not obvious enough.  A good example are the following installer from the list:

 

LV Web Services

NI LV Web Services Runtime

NI LabVIEW Run-Time Engine Web Server 

NI LabVIEW Web Server

 

Can you tell me which one(s) of these is needed to support the RESTful web services on a target machine?  I cannot find this documented anywhere and when I called NI application support they could not either. 

I've often produced VIs with non-array controls and indicators only to find that by changing them to arrays I can increase the power and functionality of my VI. When this happens you have to create the array element, drop in your control and then if it is connected to a VI input or output pin, rewire the pin.

What would be nice is to simply have the Add Dimension capability available for a non-array control to instantly convert it to an array and conversely the Remove Dimension to convert a 1D array control back to a non-arrayed control.

 

Add Dimension.jpg

Event Sources can be time consuming in finding when you have lots of FP objects.

Like the idea with Right Click menu option on terminal to add Event Case if it is applicable. (Event Structure must exist)

 

Also it would be useful if we have option to search Event Sources in Edit Event Dialog Box. As you type the name of the terminal it sorts it self and display only names of event sources that matches.

Currently, the VariantDataType  are buried deep in VI lib but they are very useful when trying to program based on datatype. Can we bring some of those functions into the light?

 

https://forums.ni.com/t5/LabVIEW/Darren-s-Weekly-Nugget-10-05-2009/m-p/996866

https://forums.ni.com/t5/LabVIEW/Darren-s-Occasional-Nugget-03-25-2014/m-p/2791974

 

Get items from enum

I am not happy when I inherit legacy code where VIs have inconsistent alignment grid options, as shown in the image below.Inconsistent Alignment Grids.jpg

 

My team has coding standards we follow, and those standards include alignment grid options. It is labor-intensive to change alignment grid options on legacy VIs because you have to do it by hand, and clicks quickly add up. I wish I could automate such changes.

 

I’d like to see a few new properties to expose settings available in the editor, as shown below.Alignment Grid Property Nodes.jpg

These properties need to support both read and write.

It would be nice if the Error Ring would accept enums.

Enum in Error Ring.PNG

So the Error Ring does not accept an enum (A). Format Into String does (B). So now we need the extra step of putting a Format Into String before the Error Ring (C).

 

This would be more convenient in for instance state machines (D) or functional globals with a function enum.

 

While on it %s on FIS also accepts Booleans. Nice to have the error ring accept them as well, just for completeness.

While replacing the Property nodes with Invoke node, Call by Reference, Start Asynchronous call and Wait on Asynchronus call, the primitives are shifting the origin disturbing the wires. So a cleanup is reaquired all the time whenever the items are replaced. It would be very helpful and infact time saving if this is corrected.

 

Place a Property Node in BD with the Error in and Out connected

 

PN-IN-Replace-1.PNG

Replace the Porperty Node with an Invoke Node

PN-IN-Replace-2.PNG

Repeat the same with other primitives

PN-IN-Replace-3.PNG

PN-IN-Replace-4.PNG

PN-IN-Replace-5.PNG

PN-IN-Replace-6.PNG

PN-IN-Replace-7.PNG

The same behaviour is not found when the Call by Reference, Start Asynchronous call and Wait on Asynchronus call primitives are replaced with one another.