LabVIEW Idea Exchange

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

When I was newer to LabVIEW, I found it hard to understand how people could identify front panel object styles e.g. NXG style string control vs System string control. 

 

leahmedwards_0-1648668143626.png

 

I believe it is the sort of skill that takes experience and experimentation, and it only gets more complex when the appearance of the string control is customised. For example, modifying the above controls so they are the same size, they are practically identical...

 

leahmedwards_1-1648668460012.png

 

I have never been able to find a good complete documentation of the differences in appearance and behaviour between different styles of front panel object - seems each style of each type of control has their quirks. So when presented with front panel objects that you did not make yourself, it is hard to 'reverse engineer' them if changes are needed. This makes it harder to learn how to make good UIs.

A potential solution would be to add a property which tells you which style a control or indicator was created as, or most recently replaced by. E.g. modern, classic, system, silver, NXG. An extension would be to add a 'reset to default style' which would behave as if replacing the customised object with an object of that style from the palette. A further extension would be to allow changing of style e.g. in this example from NXG to System via a dropdown box, although not all front panel objects are available in all styles so I can see this being more difficult to implement.


This is probably the ugliest UI mockup you will see all day but I hope it gets the idea across and sparks some conversation:

leahmedwards_2-1648669786430.png

 

This would be accessed via 'properties' on the right click menu of the front panel object.

leahmedwards_3-1648670215478.png

 

 

I'm not very experienced with XControls, QControls etc. so would welcome suggestions about how these should behave. Perhaps there is some nuance to do with styles that I am missing.

This idea is related to this one which talks about setting style for the whole front panel.

Let me know your thoughts!

I frequently perform operations on Maps of Objects which hold private data where I do not intend to alter the structure of the Map.

Existing Solution

However, Maps are a bit clunky to work with when operating on all Elements. You must first get the list of all Keys, then use an In Place Element Structure within a For Loop and Shift Registers to operate on each Element as follows:

Map In Place Element.pngPotential issues with this:

  1. Unnecessary branch of the Map which may not be optimized by the compiler
  2. Excessive block diagram editing which slows down the development time involved when working with Maps
  3. Potential for syntactical errors due to complexity of this operation

Proposed Solution

It would be great if there were some kind of auto-associating tunnel available to For Loops:

 

For Each Element in Map.pngNote that the Key is not modifiable, nor is it even available within the For Loop.

 

 

Perhaps the tunnel icons must be changed so they are not confused with shift registers.  I just copied the association icon from the map datatype icons.

 

 

 

 

This level of functionality is similar to the syntactical abbreviations available in most languages which support maps as a standard data type.  I originally wanted this kind of functionality for Sets as well, however modifying the values may result in structural changes to the set itself due to the uniqueness constraint.  As such, this is only applicable to Map Values within For Loops.

 

It may not be obvious, but this kind of tunnel would not be available to While loops.

Selection

AutoAssociation Context Menu.pngThis option would be available on the block diagram through the context menu items of the Map datatype Input Tunnel to the For Loop.

 

 

 

 

 

 

 

 

 

 

 

 

 

The IDE would be more consistent if all the toggle-able features were collected together under the "Visible Items" submenu. Photoshopped example of a FOR loop below, but I'm sure there are others. "Show Dynamic Event Terminals" comes to mind...

 

OneOfTheDans_0-1647968497756.png

 

Unlike building a Packed Project Library, source distribution builds will succeed even if a contained VI is broken. For my use case this is undesirable - a broken VI being included in the source distribution is always user error, and I would like to be notified during the build process.

 

It would be helpful if the build specification for a source distribution could be configured to fail if an included VI was broken. By defaulting to false this could be added in a backwards-compatible way without breaking any existing build specifications or workflows.

 

RyanZoeller_0-1646668674035.png

 

I could write a post-build step that validates the VIs are not broken, but this wouldn't provide feedback until the build is complete. A native solution could abort the build early if VIs are broken.

If you happen to put something that LabVIEW doesn't quite like in folders like "~\LabVIEW xxx\project"
LabVIEW will crash at launch and give you a very helpful crash report as shown here : https://forums.ni.com/t5/Discussions-au-sujet-de-NI/Crash-de-LabVIEW-%C3%A0-son-lancement/m-p/4215135#M35349

 

In order to avoid being told by NI support that you have to re-install LabVIEW

Please add a "safe mode" that will ignore whatever was added by the user (or VIPM) in the subfolders of the LabVIEW folder.

 

And also fix CAR 732888

Problem
Using the "Disconnect This Terminal" and "This Connection Is >> Required/Recommended/Optional" menu items can be tedious due to it being too easy to right-click on a different terminal than intended. This is especially true in VIs whose connector pane is densely populated with many inputs and outputs, or VIs that use one of the connector pane patterns that have more terminals than the standard 4-2-2-4.

 

To check that I applied the change to the terminal I intended, I often press Ctrl+S and Ctrl+H to quickly bring up Context Help and check that the terminal is indeed required, recommended or optional.


Solution

It would be useful if the two menu items would also be available in the shortcut menu that pops up when right-clicking the control or indicator in question, as shown in the screenshots below.

1 (edited).png

2 (edited).png

Notes

  • The new menu items would be in addition to the current menu items. I'm not suggesting removing the menu items from where they are now, just adding a second way of accessing them.
  • The two items should appear only in the menus of controls and indicators that have been connected to the connector pane.
  • I'm aware that the functionality can probably be implemented with a shortcut menu plugin, but it'd be nice for it to be built-in.
  • This idea is similar to Disconnect Connector Pane Terminal with ALT + Left Click, which I support. The two ideas are not mutually exclusive. I'd use both.


Thanks

I use an electrical drawing package and on different pages of schematics it is nice to have copied components e.g. potential lines to be in the same position so when flicking through pages you can easily see the differences and it looks prettier.

 

In an event structure or case structure when I copy and paste an object from one case to another I would like to be able to also copy the position of the copied item. I like to be able to scroll through event structures and see any identical components in the same location. 

 

I propose that the X and Y keys on the keyboard be used to trigger this auto alignment so that after pasting, pressing Y will move the copied item to the same Y position and then X to move to X position.

 

 

I've used NI Packages over 5 years now. Early on in my time with NIPKGs, Allen Hsu said that NI's recommendation was to have  "Pool" directory where all ni packages are located. Then have a separate directory for each feed. In effect, feeds act as "views" of the pool. I've adopted this model and used it with success.

 

However in the Build Spec, there is no option of where to place the built package. The build package always is placed in the same directory as the feed files.

Chris_Cilino_0-1645456274680.png

 

Package Output directory under "information" is where the instance of the package is temporarily exported before it is moved to the location referenced by the feed. 

 

In the same way NI Package Feed Manager allows you to specify a location of the ni package different that than the feed I'd like to see the same option exposed in the build spec ui. The NIPM api already exists... it just need to be exposed in the UI and persisted to the Project xml.

 

Chris_Cilino_1-1645456447751.png

 

an insider program for LV for signed up users to be able to access and pretest current or next version LV and all its module for non-academic/commercial/industrial applications; so that signed up members can help NI detect bugs for the free access? that can further improve LV during release in addition to just being a communication channel

 

interested members can sign up with active SSP as entry requirement

Support the loading and use of dotnet core libraries.  They are cross platform and could provide functionality for both Windows, Linux and Mac users and there is so much code that we could begin to bring into the ecosystem.  

Hi,

Following this forum thread, I post here my idea:

https://forums.ni.com/t5/LabVIEW/Modern-embedded-web-browser/m-p/4209271?profile.language=fr#M1219530

 

Is it possible to update the embedded web browser in order to comply with HTML5 ?

 

We uses external web pages to improve the user experience in out LabVIEW applications.

 

Regards,

 

Amaury

The Problem:

When storing many builds of installers, currently there is no easy way to find out the version number of the exe that the installer installs.

 

In the past I had tried to work around this by programmatically setting 'Installer Product Version' to the same as the exe in my build script. Installer Product version can be found in the installer's nidist.id file under [Volume Id]>DistributionVersion, and the setup.ini file under [Distribution]>Version. This works nicely until you want the build number, or major/minor exceeds 255: 'Installer Product Version' is stored in the format major.minor.fix and the max values are 255.255.65535 i.e. u8.u8.u16. This is a limitation of MSI installers. See:

Version Information Page (Installer Properties Dialog Box) - LabVIEW 2018 Help - National Instruments
ProductVersion property - Win32 apps | Microsoft Docs

 

 

Executables have Version Numbers in the format major.minor.fix.build, with max values 65535,65535,65535,65535 i.e. u16.u16.u16.u16


I would expect the installer's setup.exe's File version (under Properties>Details) to be settable as major.minor.fix.build, but this is not the case. File Version seems the most appropriate as it is 4 digits and this is used in built exe's. I would like this to be settable via property nodes (in the same way as .exe's) as it does not have the u8 limitation and does not omit the build number. Currently property nodes do not affect it. If numbers larger than the u8/u16 limits are set via property nodes, they max out in nidist.id and setup.ini. Another acceptable workaround would be to include another key/value pair in nidist.id or setup.ini that allows u16 major.minor.fix.build to be set via property nodes.

 

 

Proposed Solution:

Property nodes affect the installer's Setup.exe version number under properties, with max values of u16.

leahmedwards_0-1644830421412.png

 

Or there is a new key/value pair in nidist.id or setup.ini that allows u16 major.minor.fix.build to be set via property nodes, in addition to the existing key/value pairs that have some u8 max values and omit build number.

 

Perhaps this will no longer be an issue if NI moves away from MSI installers...

LabVIEW contains a mechanism for storing custom metadata of any type inside of VI files as "tags" (e.g. the path of an Express Source VI's associated config dialog VI) but the methods for manipulating them are marked as private. I think this could be a useful thing to have as an officially-supported feature.

cbutcher_0-1644062153495.png

The top For loop + Unbundle is the current method to get the Keys and Values of all elements in a Map as arrays. If you need both, this is ok, but I'd prefer the second option, with a native node.

 

If you only want one (e.g. the Keys), then the For loop and Unbundle takes quite a bit more room than a similar-type of node (here the size is taken from the Collection Size node, and the paired outputs in the second row are from Matrix Size).

Can we have nodes to access the keys in particular, and perhaps the Keys + Values of a Map without requiring the For loop?

nvb.png

 

More often than not, I just Create Constant on that terminal and leave it at zero, either cause the diagram isn't going to be seen anyway or because I'm just going to call Clean Up Diagram afterwards. I think it would make sense if this terminal was merely Recommended rather than Required.

Wouldn't it be nice if Probes window had a drag'n'drop reorder functionality, maybe even a Sort?

 

Often you (I) place a couple of probes, maybe add some in another VI and then go back and add one earlier in a block diagram. 

Is this a problem? Well, it's not breaking, but i'd like probe 1 to be the earliest executed probe and so on. Often execution order can easily be something like 13, 19, 3 and drag'n'drop #3 below the #19 would the shift them as 3, 13, 19. (Similar to how Reorder Case works)

 

It'd be nice if you could drag this probe in the probe window and it'd change numbers accordingly (switch/reorder within the VI).

Maybe even have Sort button that simply renumbers all as they're shown in the probe window.

 

 

It's somewhat similar, but different, to Altenbachs switcheroo idea: https://forums.ni.com/t5/LabVIEW-Idea-Exchange/Probe-switcheroo/idi-p/3126138

SoftWEng_0-1643899774915.png

It would be very helpful if there was a way of seeing the full lists of two different enum type defs at the same time and edit both lists simultaneously.  Right now if you click the button to edit elements in a enum it locks out LabView so that you cannot see the list of elements in another enum.  It is also really frustrating that in the edit window there is no way to increase the size so that you can see more than 6 elements or make the Item column larger to see long enum elements.

SoftWEng_0-1643899774915.png

 

Then there is no way to add more than 6 items easily to the bottom of the list.  You have to hit insert and it puts the element second from last and then you have to move down.  It should be more like an array or table where you can just type and hit enter and add a lot of elements easily, resize and see as many as you want without having to scroll if you want a full window of the enum.

SoftWEng_1-1643900278037.png

 

 

Batch message class should have a public static method to build a batch message that can be sent to the Time-Delayed Message.vi.

tkendall_0-1643323757644.png

 

I would like to wait xxxx ms then send three messages in order.

tkendall_1-1643323849848.png

Yes there are twelve other ways to do this but this would be much cleaner and it is an easy one change.

This is a really basic thing, but it would be helpful if the qualified name (as seen in VI Properties) was enabled so it could be copy and pasted into documentation.

 

When I'm writing detailed documentation to tell other developers how the software works I often use the qualified name as opposed to VI name. For example "Send Creep Command.vi" doesn't tell the developer where to find it, but "Motion Control UI.lvlib:Motion Card 2 Data.lvclass:Send Creep Command.vi" does.

 

McQuillan_0-1642064820004.png

 

I would be happy with the string being enabled (so it can be selected and copied), or a button that copies the string into clipboard.

 

I was almost certain this idea already existed, but I couldn't find it. If it does exist, please cross-link and disable this idea.

 

There are a coupe of functions which could really benefit from backwards propagation of data types. By this, I mean the ability to change a functions input datatypes based on a wired output.

 

Some functions already do this (like Variant to Data). However, that implementation has its flaws (as far as I can tell, the backwards propagation only works if wired to an indicator terminal).

 

Functions like Select, Obtain Queue, and Create User Event would benefit greatly from this (as well as many others).

 

Essentially, what I would like is a Type Specialization Structure that works backwards.

 

To implement this using today's technology, I guess we could create express VIs which have scripting function calls whenever the outputs are wired??? But that's janky and not practical for everyday development.

 

Simple example of SelectSimple example of Select

 

 

Here's a previous idea I posted, for this post, I'm proposing a generalized version of what I suggested there.

Sidenote: here's a plugin I created to make working with Select easier.