LabVIEW Idea Exchange

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

Case structures should have an easy to use Navigation like multiple grouped windows have in Windows 7. If a window is grouped in Windows 7 you will get a nice window that allows you to view what is in each window and navigate to the one that you want.

 

This would be very beneficial in LabVIEW for case structures.

 

It would look like the attached:

17469iE27B0A3BAAC5664F

It would be useful to have something similar to C#'s LINQ in LabVIEW. Basically a way to "query" array of clusters/objects (and for some nodes even array of strings/numbers/whatever) without needing to use loops. I imagine nodes similar to invoke nodes, something like the below examples:

Query Nodes.png

If one wired an array of clusters one should be able to choose from the elements in the cluster, like an Unbundle By Name node. For the Where node one should subsequently be able to select how to filter based on the data type of the selected element. For example: Equals, Greater Than, Less Than, Greater or Equal to, In Range, etc. for numbers. Equals, Contains, Starts With, Ends With, etc. for strings.

I would like to be able to group decorations on the block diagram. In the attached simple example, I have to keep up with nine items - always selecting the entire area to move it.

 

 

BD_Dec_Grp.jpg

 

The current work-around for this is to place the items in a structure, such as a single frame sequence.

 

Strict typedefs and non-strict typedefs differ significantly.  There's too much of a gap for me.  Sometimes I'd love a control to be somewhere in between.

 

There have been times where I wanted to force a typedef to have a constant size or colour or other parameters without having to force all other parameters to be identical.

 

It would be nice if a typedef could simply be gradually converted to strict by selecting which parameters are locked.  That way we could shoose to long only boolean text, width or colour but leave the other properties free.  VI Server would need to return an error that the type definition does no0t allow that change, but that is kind of already there for when you try to change properties of a strict typedef.

 

So by default a typedef would refer to data only (See HERE) but any further cosmetic changes (to which the datatype does NOT belong) we could simply select which parameters are locked and be done with it.

When working with queues is useful to have quick access to queue VIs with a right click:

 

Queue.png

 

It would be wonderful to have the same feature for a class, showing public member VIs:

 

deviceclass.png

Changing the radix of a numeric control from decimal without showing the radix is often reckless and sometimes downright cruel.  Why aren't the two options side-by-side on the Control Property Pages.  I am tired of switching Tabs, I would like the 'Show Radix' checkbox to be either copied or moved from the Appearance Tab to the Display Format Tab.

 

MoveRadixControl.png

We've been saying it for years now.  Enums should be typedefs.

 

Why not make EACH and EVERY dropped Enum into a typedef automatically.  Drop a new Enum from a palette, it is a typedef.  Copy it, it's linked to the original.  For my taste, even ask for a save path after dropping the enum but for the sake of our sanity, just make each and every enum a typedef already.

How about the ability to "dock" the iteration terminal?  Docking it will keep it from moving around when when you resize the loop and keep it out of the way; plus it spells NI!

 

 Docked I.png

The title say it all.

 

If you try to undo / redo in the VI Properties >> Documentation window, it does not work and instead you get "z" / "Z" respectively.

 

5-7-2010 8-02-47 AM.png

When I build a web service in LabVIEW, there is no version number updated for each build.  If I then install that web service on my target, I have no way of determining what build has been installed.

I have solved this by creating some scripting VIs that update a VI control's default value when the build is run.  This VI is available via my web service so I can ask it what version it is.

 

I think everything that can be built from the project should have a version attached to it and that version should be accessble and reportable.  Also, it should be possible to auto-increment it.

When I need to access project-related non-LabVIEW files in my VIs, I usually write code like this

File path relative to the VI path in LabVIEW 2019File path relative to the VI path in LabVIEW 2019

I can't afford to use absolute paths because my collaborators don't set up source code control on their computers the same way I have it on mine, and I am fine with that.

 

Writing this type of code is tedious. I have to place four nodes and three wires between them to get one path. On top of that, coming up with the relative path requires either browsing the absolute path, and deletion of the portion of that, or copying and pasting paths from the OS.

 

I would like to express this with a single node. It could be a mode on the path constant, with some visual difference to convey that it's doing something else. Here is one idea

Path relative to the directory that contains the VIPath relative to the directory that contains the VI

You'd be able to browse the path the same way you do today, and change the mode with a right-click and/or configuration dialog.

 

This idea was inspired by TestStand, where you can typically indicate whether you want a path to be stored as absolute or relative.

In "Case Structure", when we use "Linked Input Tunnel" and select one end of the tunnel, is it possible to highlight the opposite end? as is the case with "Shift Register".

 

case.pngWe have crossed the wires on purpose, because it isn`t always possible to make a straight line. 

 

As already mentioned here long ago, there is a need for system containers.

 

Most of my front panel uses system controls/indicators and I often use arrays and clusters. The currently available containers (modern, classic) simply don't match the overall system style.

 

The system palette needs a "System Array, Matrix & Cluster" sub palette.

 

A quote from my old comment says it all:

 

For example, there is no "system" array container (with a correctly colored frame and a system spin control as index control) or "system" cluster container (could look similar to the system radio button control).

"Find Items with No Callers" could be a useful function on the project, but currently most items it reports are in Dependencies. Why is an item even under Dependencies if there is no caller? It seems if I call one function from an .lvlib the whole library is in dependencies, and all other functions have no callers. This floods my "Find Items with No Callers" window with useless entries.

FindItemsWithNoCallers.png

 

Suggestion: add option to hide items from dependencies in the "Find Items with No Callers" window (or even hide them by default).

 

I often have a situation where certain code parts don't really need to be recalcuated, because their inputs have not changed from an earlier encounter.

 

For example if a function is the sum of two different complicated and slow calculations where each of the two depend on a different subset of parameters, often only one needs to be recalculated, while the other intermediary result could be grabbed from a cached value. (This occurs for example during the calcuation of partial derivatives).

 

In some cases, the compiler could probably recognize these situations, but I think we should have a special structure to allow caching of intermediary results.

 

I typically use a case structure and two feedback nodes as shown in the example on the left. If the value is different, the code in the TRUE case is executed, else the value stored in the SR is returned immediately. (If the code depends on several values, I bundle them all before the comparison operation)

 

I propose an simple Caching Structure as show on the right that retains that same functionality with less baggage.

 

 

Details: The containing code is calculated at first run and stored in the output tunnel. In later calls, it is either (A) recalculated, or (B) the previously stored value returned at the output tunnels. Recalculation only occurs under some conditions (.i.e. usually when actually needed)

 

The structure has the following features:


  • Two possible types of input tunnels (the functionality is indicated by a different look).
    1. One where a value change triggers a recalcuation of the containing code
    2. One where a value change does not trigger a recalculation of the containing code
  • A special boolean terminal to force a recalculation unconditionally
  • output tunnels that retain data between calls

There can be an unlimited number of input and output tunnels of any type described above. A recalculation of the inner code occurs if any of the triggering tunnels have a changed value.

 

We can think of it similar to "short-term folding". 

When debugging labview application. If we use lot many probes at a time then it becomes to complicated to understand which probe is which one.

The main reason for confusion is probes are named by probe number and its data type.

 

  1. In LabVIEW we can label the wire by right clicking on wire and selecting the visible items>>label. However this label name is not used in probe. This name should be used as probe name.
  2. Naming each and every wire is not possible, so in probe window user should be able quickly edit the name of probe (using F2 as shortcut key) to give name of his choice

Probe Naming.png

Also when I manually name the probe it should update the label.text property of the wire

Whenever you use multiple scales in a graph and use autoscale the grids usually don't match. See left graph.

 

One simple solution is to show only one grid, however the ticks on the other scale(s) wouldn't match the grid. ๐Ÿ˜ž

 

Wouldn't it be nice to have a autoscale with matched grids in multi axiy plots? At least as an option?

 

Nice autoscaling is tricky ๐Ÿ˜‰ and marking the ticks is tricky (scale size/font size/...), so my simple approach only works with larger scales (and only uses the major grid) ...

 

match grid FP.png

match grid BP.png

I have a large base of compiled executables. One computer is encountering a "not enough memory to complete this operation" error. I'd like to drop a debug version of the executable on their computer and see if I can monitor which VI is using all the memory similar to DETT's remote monitor abilities.

 

New profile tool2.png

All service packs should be useable for the version you own, regardless of your SSP status. Currently, service packs are only good if you have a SSP active or had enough forethought to buy it in the middle of the year between versions.

When reviewing old projects or VIs, the "VI changed" title bar star is always only a few mouse clicks away. And beware of accidentally opening an old project with a newer LabVIEW version!

 

You all know the "vi has unsaved changes" dialogs that follow when just wanting to close the windows, and who has not at least a dozen times saved an old VI in one of these situations just out of a misplaced click or the habit to save your code whenever you you are prompted to...

 

 

This is why I propose a new file menu entry: open (locked)... or open (read-only)... or an "open options" control in the file dialog.

 

Its functionality would be to open the selected file or project in a similar way like the locked VIs: you can look at them, browse through case or event structures, but cannot change a thing...

 

Even better would be the option to allow changes (e. g. move/delete some portions before selecting the rest for copy&paste), but to prevent re-saving the file under the same name. For this case, trying <CTRL-S> or closing the file would open a dialog stating that the VI was opened as "read-only" and that you may either discard the changes or save the file under a new name.

 

Of course, this "read-only" flag would be inherited to all subVIs, typedefs etcetera that would be opened from the original project or VI.

 

And to make my whishlist complete, a color coding of the VI window / project frames would signalize the read-only state of the code:

 

 

By the way: Wouldn't it be nice if VIs in vi.lib featured this opening mode by default?

 

Best regards,

Sebastian