LabVIEW Idea Exchange

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

A common problem I run into is needing to know how many elements (items) are in an enum - I would like to see a primitive function that outputs this number.

 

Proposed syntax: 

CountEnumPrimitive.png 

 

Check out the Comments Section to see some current implementations and their drawbacks.

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 current implementation of flattening and unflattening from XML is quite noisy and includes information unnecessary for the users. Rewriting it or including Pretty Print functionality to LabVIEW would greatly simplify loading settings, exchange of data with other languages, dynamic configurations, visualizations of complex systems, network communication etc.

 

PrimaryKey_0-1573820513072.png

For community solution and examples of these features please go to -> https://forums.ni.com/t5/LabVIEW-APIs-Discussions/Tree-Map/td-p/3972244

 

This could include also Pretty JSON since XML and JSON are interchangeable -> http://www.utilities-online.info/xmltojson/#.Xc6XjVdKiUk

 

Additionally the XML parsing should be implemented without requiring Windows .NET platform components, so it can be done on a real-time system. Current XML parsing functions cannot be called on RT.

 

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

 

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

 

 

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

As touch screens are becoming very popular and limitation of using keyboards in the production sites, the OSK is becoming very popular requirement and in LabVIEW applications.

Add OSK as an in-built property to String and Numeric controller. Based on control type open the numeric only or full keyboard.

 

AdarshaPakala_0-1620737397931.png

 

 

The property can be set manually or programmatically.

Access to source code of OSK to customize the keyboard.

Multilingual keyboard option.

 

 

Thank you

Adarsh

CLA from 2014

This is not functional idea, but nevertheless - the point is that context help of boolean operation functions will contain not just text explanation of how does the function work, but also truth table. Thus it will be clearly seen all combinations of input values, and the resulting function output value - visualizing is always better than text description.

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

Now that the SSP package is delivered on USB instead of DVDs (good stuff!), I have a minor request: Could you have the USB label include a release/version name on its label?

It might add too much of a cost depending on how you get them customized, but if that is not an issue it would be very practical to be able to see what the USB contains by its label (as we could with the DVDs).Smiley Happy

 

On a side note: Many companies have strict regulations on the use of USBs, and the need for such has increased with weaknesses like BadUSB. Perhaps NI could state something about how the USB sticks they send out are protected, either in the delivery package, or just as a statement on ni.com? That way people who need to convince their IT departments to allow them to use the NI USB sticks will have something to show (I'm sure you will have to add some legal disclaimers there as well , but that's OK).

For as long as we've had tree controls, users have wanted to associate data with tree items.


To address this, we could add a new "Item Data" property to the tree, like so:

 

ItemDataDemo  FP fixed.jpg            ItemDataDemo copy.jpg


If we make it a variant type, users can store whatever kind of data they want in it.

It would be nice to have a keyboard shortcut to bring the unfocused BD or FP of a VI to be aligned with the active BD or FP by aligning top edges and distributing vertical edges compressed, like in the picture below. This would help to manage a collection of cluttered FP and BD windows.

 

CuriousSwede_1-1702722071766.png

 

And it would also be nice to "lock" this arrangement, in a way so that the two windows could be moved as one object, but still be individually rezisable.

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

 

 

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

 

 

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.

 

 

Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data. Like XML or JSON but smaller, faster, and simpler.

LabVIEW already has XML & JSON functions, why not ProtoBuf?  It is the default mechanism for serializing structured data used by gRPC.

If LabVIEW users want to create gRPC microservices, then LabVIEW needs to support ProtoBufs.

Under Web Services there is a conversion palette.  One of the functions here is to convert LV Image data to a PNG stream.  This is super useful when dealing with sending and receiving large amounts of PNG data over something like websockets.  I've used this in places where a web page can control a VI, and the image of some front panel controls can be sent to the web page.

 

However only recently did I realize this function turns the image into a PNG stream that is completely uncompressed.  This idea is to expose the Compression input to the VI.  Here is just one example where I get the image of a control then represent it as a PNG.  With no compression this file is over 64KB.  With just the most minimum compression that drops to 3KB, and down to 2KB under the highest compression.

 

Example_VI.png

When you right-click on a connector pane terminal, a context menu pops up -- but there isn't a good indication of which terminal you've clicked on:

carls___1-1593626658134.png

You could assume that selected terminal is at the top-left corner of the context menu, but (due to a bug, I'm assuming), the actually selected terminal is a few pixels down and to the right of where you clicked.

 

What if the terminal you right-clicked on got highlighted while the context menu was shown?  This would provide visual feedback of the selected terminal, giving you confidence that you clicked on the terminal you thought you clicked on (and avoid mistakes of configuring the wrong terminal).  I can't even begin to count the number of times I've set the wrong terminal to "recommended" or disconnected a different terminal than expected. Could look something like this:

carls___4-1593627315744.png

(which just piggy-backs on the appearance when you're wiring up a terminal:

carls___2-1593626739401.png)

 

Bonus points if the bug gets addressed where clicks are actually a few pixels off.

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)