LabVIEW Idea Exchange

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

I have a simple idea that would help me tremendously when I open LabVIEW on an unfamiliar installation. Just add plain text descriptions on the installed compnents under the icons. By the way, some of these are explained wrong, on purpose, to prove a point  Smiley Very Happy

 

NewSplash.png

 

 

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.

This happens to me quite often.

 

In scenarios such as replace "Equal?" to "Equal to 0?" the quickdrop should be able to avoid comparing with a constant, or prevent getting broken wires such as this:

JimChretz_0-1686144056731.png

 

 

The idea of overloading methods is wide spread in other languages. Labview already supports this in a way with polymorphic vis.

 

The code snippet below has 2 classes, parent and child

 

methods are described in the image below. 

 

The underline idea is that parent can define 1 method (poly.vi) that can handle multiple inputs (polymorphic) but does not have to implement the functionality for all the input types (it just needs to know about them) and the child class can override poly.vi and the interface it want to implement.

 

overloading methods.png

 

 

Even though the code above is correct, Labview gives an error.

 

"Dynamic dispatch VIs cannot be members of polymorphic VIs."

 

I dont see why not, since dynamic distpacthing will still have an entry point for both classes (poly.vi) and choosing which polymorphic vi to use will be define at design time.

 

 

Whenever I'm working on let's say a state machine I find that I need to resize the case structure now and then. Mostly make it larger, then I clean up my code and want to make it smaller again. Often when I do this, the constants (usually) pointing out the next case either get longer wires since they get further away from the border (when making the structure larger), become hidden (structure made smaller and no auto-grow) or prevent the resize (auto-grow enabled).

A solution to this would be to be able to lock BD objects with respect to the nearest corner of an owning structure, in the same way the loop index terminal is locked wrt to the corner of a for or while loop.

 

LockToCorner.png

Problem - Bundle by name causes unnecessary wire bends because the type specifier is on the top.

 

Make the type specifier terminal on the upper left and the output on the upper right. Also right clicking on an item will allow you to select "Change to Read" or "Change to Write".

 

Would look something like the following.

BundleUnbundle.png

Hello all,

 

This is a rather non-technical request.  When classes are created from Project Explorer, a color is assigned by default.  If that's a color you're fine with, you hastily modify the icon and move on to more important matters.

 

While the color assignment works well enough to serve its mundane purpose, I've noticed several weaknesses:

 

  1. The object "cube" icon is not so easily edited because of its pretty, blurred lines and several colors.
  2. As far as I can tell, there are exactly six color families that LabVIEW assigns to classes: "goldenrod," blue, green, red, yellow, and purple.
  3. Depending on the order you make your classes in, the colors can introduce confusion.  e.g. What if three layers of inheritence are all blue? Not a big deal, but confusing nonetheless.

 

My suggestion is this, and maybe there's a better way to do this:

 

In the class properties dialog, why not allow the user to simultaneously assign a color scheme to the icon and the class private data ("cube") icon, in one quick step?

 

This would adjust the hue of the "cube" icon and the VI Icon Template at the same time.  It could also optionally modify the wire color accordingly.

 

Leave everything else on the UI as it is - this would be a new feature in addition to that pre-existing methodogy.

 

Thank you as always,

 

Jim

 

Note: For the sake of simplicity I chose the color picker dialog that LabVIEW uses everywhere else.  Any of several other methods could be used, such as a pulldown menu with predefined color names and swatches.  (Say, a dozen selections)

 

suggestion.png

 

Related ideas I came across:

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Change-the-color-of-different-classes-in-the-project-explorer/idi-p/1958803

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Class-ICON-update-to-Class-wire-scheme/idi-p/2516440

Viewing this suggestion requires a bit of setup

  1. Forget you know what Silver controls look like
  2. Think about it from a user point of view
  3. Imagine a set of indicators including a sole boolean indicator show up on the screen. You have no comparison to other states of the boolean indicator.

New Bitmap Image.png

Is it True or False?

 

 

 

 

 

 

My opinion is that the gradient and lighter shade of green makes the state a little ambiguous. Not too much ambiguity, but enough to give me pause. Decreasing the gradient and darking the shade a little should help.

boolean.png

 

Yes, I realize this is a property you can set. This is more of a suggestion for setting the standard.

(this suggestion aside, my compliments to the designer of the Silver controls)

I often have code in my apps where some error-out nodes are not wired, simply because the errors are generally not of interest to me or the error wiring would clutter up my block diagram. Typically this happens a lot in UI handling code where a lot of property nodes are used. For these parts I would rely on the automatic error handling for debugging purposes. One of the drawbacks of this method is that program execution is suspended when the automatic error handler kicks in. Even worse if this happens for code that is in a loop. You're only option then would be to abort the app, which e.g. is no good for your reference-based objects, etc.

 

I would love to have the ability to just specify my own 'Automatic Error Handler', enabling me to decide what to do with the unhandled errors. Just logging them is what first comes to mind, but maybe also do some special stuff depending on the type of error, just like a 'normal' error handler. I want to be in control!

 

Added values of this is that your application then has a catch-all error handler which enables you to at least log every error that occurs, even if not wired through. (Everyone forgets to wire some error-out that they actually did want to wire one time or another don't they? ;-))

 

Ofcourse the proposed setting in the image would ideally also be available programmatically by application property nodes.

 

21-4-2013 22-55-19.png

Putting a comment next to a shift register item is something that I frequently do, and is frequently done in NI sample code.  (See Quadrature Decoder with Position & Velocity - NI 9505 (FPGA).vi as an example of this.)  The trouble is that when you move the shift register, the label doesn't go with it.  I would like a right-click option to add a label to a shift register.  The label should have a default position on the inside of the loop above the shift register, but options to locate it on the left or right, and inside or outside the loop.  It should also be able to be moved around like any label in labVIEW.  But is should stay in the same relative position to the shift register when the shift register is moved.  And if a labeled shift register is duplilcated, the label should also duplicate with an added extension number to make them distinct, just like duplicating a control or indicator.

It'd be great if when sorting a column of items (say in the Multiple Variable Editor, or a table of data), the values were sorted using a numeric sort rather than a literal sort (ie. DI10 should not come after DI1, and DI20 should not come after DI2).

 

channel_sort_wrong_annotated.png

 

There could also be a specialised string sort function which takes in a string array and provides an option for a numeric or literal sort.

 

 

What happens when you want to change a Border Node on an IPE? It is a manual process which I propose can be automated as shown in the two examples I have provided...

 

InPlaceReplace.jpg


 

 

 

 

When a control is disabled, especially a large table or string control, it would be nice if the scroll bar would remain active in order to view the contents of the control, without the ability to actually change it.

 

I am not asking that the default behavior be changed, however a right click property/property node "scroll when disabled" would certainly have some value.

It would be nice to add another dimension to the system exec.vi that gives the user the option to open up the “Run as Administrator” command prompt in Windows 7.  This would enable a system administrator to use LabVIEW to make certain, currently restricted, changes to the computer.  I don’t believe it would create a security risk because you have to be logged in as an administrator anyway to have the access rights

 

As far as I’ve seen, there really is no string that you can enter into the command line that will instruct an elevated command prompt to open.   With this added functionality in the system exec vi, however, you will be given more flexibility with what you can do through your LabVIEW program.

 

Elevated?

When NXG was released, NI added a button that you could click and send feedback to NI about things you liked and about things you didn't like about it.  I realize this is most helpful in a product that is in beta like NXG, but there are still times I'll be doing something and I think "Man I don't like how this works" but I often move on or forget to post an idea about it.

 

So this idea is to add a "Send Feedback" button in LabVIEW where the developer can then send suggestions to NI.

 

Feedback Button.png

 

Feedback Dialog.png

 

A valid criticism of this idea would be "Isn't this what the idea exchange is for?"  And I can agree with that.  But still I thought it was a cool feature of NXG, and if it was useful there, why wouldn't it be useful here?  I figured I would submit the idea and let the community to decide if this is a valuable feature or not.

Although I expect that it will take a while before this is implemented I would like to add the request so NI can start thinking about it.

 

As you might have noticed that Microsoft announced a few things on Microsoft build 2015.

 

Aside from the hololens and windows 10 for the raspberry pi they both share 1 common factor. They both run "Universal apps" (see http://www.engadget.com/2015/01/21/windows-10-makes-microsofts-dream-of-universal-apps-come-true ).

 

So it would be great if we can run LabVIEW programs as a "universal app" and run our code on all windows 10 devices..

Is it immediately obvious to you what the following code does?

 

SwapArrayElements.png

 

This rats nest simply swaps two elements in an array, a very common operation when trying to operate on a large array in-place.  The In Place Element Structure helps the looks a little, but I find the performance to lag when used in a tight loop, you know, the kind you encounter when you are trying to operate on large arrays.

 

SwapArrayElementsIPE.png

 

I would like a simple primitive (sorry too lazy for a picture) which simply swaps two elements in an array.  It should be similar to the Replace Array Subset function, except for two sets of index inputs and no subset input.  If you want to really make my day be sure to allow disabled inputs to swap rows and columns in one shot for 2D arrays, or pages or volumes or whatever in higher dimensional arrays.

When a build is in progress (Application Developer or FPGA*), the entire LabVIEW IDE is blocked.

 

Since some builds can take a long time, it would be far more productive if users could continue working in parallel with the build. Example use cases:

  • Initiate a build for an RT target, then work on code for the PC server
  • Initiate a build for one project, then work on code for another project

 

To prevent accidents, LabVIEW could reserve all the VIs/libraries that are part of the Build Specification:

  • The call tree of "Startup VIs"
  • The "Always Included" VIs).

 

*At least the FPGA build only blocks at the preparation stage, but that takes a while too. 

Situation:

You want to show a coworker or customer something "real quick" in the LabVIEW.  So you open a new VI, open the block diagram, and open the quick drop accidentally because you thought the palettes were already loaded.  

 

DANGIT you forgot that you haven't accessed the palettes since you started LabVIEW.  Now you have to resort to awkward conversation defending LabVIEW about how awesome it is, even though it can sometimes be slow, etc, etc.  If you decide to skip the awkward conversation and instead try clicking out of the window you see this awful image:

 

notresponding1.png

 

Oh No! Did LabVIEW crash?  Is it broken?  How long will this take?

 

Solution:

Cancel button on the windows in question that allows you to stop loading the palettes (or switch it to loading in the background) so that you can go back to work and find your function the old fashion way.  Save you time.  Save you annoyance.  Save LabVIEW some street cred.

 

cancel quick drop load.png

 

The world is a happier place...

 

Please add the two primitives "Text to UTF-8" and "UTF-8 to Text" to the standard palette, probably in the string palette. It is a pity to hide such a great "tool".

 

The primitives are included in the VI attached to this message:

http://forums.ni.com/t5/LabVIEW/undocumented-function-quot-text-to-utf-8-quot/m-p/1034616#M460673