LabVIEW Idea Exchange

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

This may have been proposed before but here goes anyway.  I don't usually watch the probe window over periods of a day or more.  I know that there may be some rare occasions that this might be beneficial, but it would be much more useful to see milliseconds in the Last Update column.  This would allow for quick but rough performance testing by placing a bunch of probes inline on an error string for instance.

 

Probe Window No Date

Say I've got 4 U8s that I want to join into a U32 - right now, I have to build 2 of the U8s into a U16, then build the other U8s into a U16, then build the 2 U16s into a U32.  I'd like to see these primatives growable to each datatype width.

Here is a simple idea. The picture says it all. Clicking on the Idea Exchange link in the getting started window brings you right here!

 

getting started.PNG

 

[Edit: Nothing really confidential in the recent files but...]

The static VI Reference has the ability to be made strict. A strict and static VI reference shows the icon of the target VI (static part) and a small red star (strict part). This allows a strict, static VI reference to be wired directly into a CBR node.

StrictStaticVIRef.png

However, the new async CBR feature does not work with strict, static VI references because it also requires option 0x80 or 0x100 to be wired into the Open VI Reference.

 

There should be a way to specify an async call inside a strict, static VI reference. That way, an async call can be made by way of a reference returned by a strict, static VI ref and not just with an Open VI Ref.

I don't know why LabVIEW does this, but when you copy and paste (with ctrl-c and ctrl-v as opposed to ctrl-drag) certain items on your block diagram, they do not act as most would expect.  I think copy and paste should make an exact copy of what you are copying instead of changing the functionality/behavior.  Examples

 

Local Variable:  

 

variable copy.PNG

 

If you copy a local variable, it creates a new control and makes a local variable out of that.  I really just want a copy of the local variable that's already there.  If I wanted a new control, I would have made one, no?

 

Property Node:

 

property node copy.PNG

 

 Copying an implicit property/invoke node changes it to an explicit node.  Why wouldn't it just make another copy of the implicit node that I already had?

 

I'm sure there's other examples of this behavior that I can't think of now, so feel free to add them to the comments.  If you have a good reason why this behavior is here, please let me know as be happy to be corrected...

 

When set to "Arrange Vertically", clusters are always left justified.  I would like to be able to right justify the cluster contents while still keeping them verically arranged.

 

Left Justified.png   -->  Justify.png  -->  Right Justified.png

We can specify custom markers for axes, but even if we do so, there will be two additional markers that cannot be hidden: the Min and Max!

 

 

 

I would prefer an option to get rid of these two extra markers. Often they are distracting and not desirable for a clean look. For example we might want the x-axis to start at zero, but we want some padding to the left so data points (e.g. small circles) are not cut off by the other axis. Here we might want the x-axis min to be e.g. -0.02, but we still want the first maker to be at zero with no markers to the left of it.

 

If I specify custom markers, these are the ones I want, nothing else. 😉

Message Edited by altenbach on 06-10-2009 04:22 PM

I, like many others I am sure, have multiple LV versions installed on my computer.

 

I have often wished for a small launcher program (linked into Explorer.exe under Windows) which has a peek to see what version a VI (or ctl or whatever) is BEFORE calling the respective LV version.

 

It could also have an option to show a dialog whenever a VI is double clicked in a version different to a version of LV which is ALREADY open asking if it should be opened in the native version or in the currently opened version.

 

An alternative would be to treat VIs opened from a different version as locked (read-only), forcing either a manual setting of write permissions or saving under a different name.

 

Shane.

Hi,

 

I suggest adding a jog-wheel (unlimited range knob) to the palettes:

 

UnlimitedRangeKnob.png

 

The current knob you set the minimum and maximum range, and can then select inbetween those values by turning the knob from one endpoint to the other.

 

A jog-wheel you configure with only the range for one complete revolution of the knob, but you will then be able to turn it as many revolutions as you wish and it'll continue to increase or decrease its value (depending on if you turn it CW or CCW). This'll work like the jog-wheel on a video-player; configure it for a range of 10/revolution for instance, if you then want to move 30 upwards, you just turn the knob three full revolutions CW. It should support the mouse scroll wheel on top of it of course, for "quick jogging".

 

Cheers,

Steen

Some resizable primitives (Build Array, Compound Arithmetic) have an option in their right click menu which allows you to add or remove elements:

 

Compound.PNG

 

The Index Array primitive is notably absent from that list. It would be very useful if we could add or remove elements like this:

 

Add Element.gif 

 

Currently, all setup (any any other configurable items) for LabVIEW is stored in the LabVIEW folder hierarchy.  I would like to see it moved to the User folders.  This would provide several advantages:

 

  1. Multiple users can use LabVIEW without having to worry about reconfiguring someone else's setup.  This can be especially nice for the pallette menus, if different users like to "tweak" the default layout and create personal custom palltte menus.
  2. For people who use roaming profiles (such as me), whatever station I sit down at and log into will have the LabVIEW configuration I use on every system.  Any modifcation is automatically updated in my profile and "moves" with me from PC to PC. 
  3. It would provide an easier way to backup settings, since all customizable settings will be in one place, and not mixed in with LabVIEW installation files which aren't customizable.

There are many times when I need to grab the last element or last n elements of an array.   This usually involves a call to Array Size and then a subtraction, costing me time and block diagram clutter.  Array reversal is essentially free, but again costs clutter and clicks.  For common array types I have personal VIs to do the job, but that is just a band-aid with the proliferation of data types that I use.  My idea would be to treat negative values input to the index array or array subset VIs (for example) as counting from the end of the array.  The last value would have index -1 and so on.  To get the last n values I would put -n into the Array subset VI and that's it.   For expanding the Array Index VI, my preference would be that it counts down (-2,-3,-4,...).

 

 

 NegativeArrayIndex.png

I'd like to suggest that the clean up tool behave the same for loop iteration and conditional terminals as it does for other block diagram objects.  I frequently end up with a little jog between an item and the conditional terminal.  I like that there is an attempt to move the terminals to their corresponding default corners, but they ought to have the same spacing from the loop frame as they do by default.

Clean Up Conditional Terminal.png

what about multicolumn listbox with drop down menu?

 

m_listbox.JPG

A typedef control has no block diagram.  When you modify an existing typedef, block diagram instances of that typedef are updated; but any block diagram display customization is lost. This can seriously affect the appearance of a block diagram when the typedef is inside a state machine.

 

I suggest that a typedef control should have the ability to define the block diagram appearance, and that it should have it's own flag for regular or strict.  A typedef could be defined as regular for the front panel while the block diagram could be set as 'strict'.

 

The typedef editor could display the front panel and block diagram appearance in adjacent panes (see image below).

 

 

bd-typdef.png

 

 

Who has ever made a cluster typedef, then added some elements, then added more, then a little more? Have you noticed the "typedef explosion" of your block diagram as a result, with constants overlapping other code? Make a right-click option to "link" a bundle by name to a typedef. Note that the two pieces of code below would be identical, but the bundle on left would not suffer from typedef explosion. In addition, have a selectable menu

LinkToTypedef.png

 

Another idea is to link the bundle to the destination:

 

LinkToDestination.png

 

 

When using extensive numbers of property and invoke nodes (for example, using the TestStand API) it's very common to end up with many references that need to be closed. This leads to structures like this:

 

closeref.PNG

 

It would be very convenient if we had a Compound Close References node that we could wire multiple references into. Since order often matters with closing references, the node could execute top-down once all references are available at the inputs. This would substantially clean up block diagrams and make API code a bit easier to follow. For example, the above code could just be replaced with:

 

compoundref.PNG

 

It would be nice to have the option for showing the radix on the index display of an array. This would make it easier to look at an array when dealing with addresses in hex.

 

For example, if you have a large array representing the contents of a flash, and want to look at specific addresses, you need to convert the hex address into decimal to be able look at the corresponding value in the array. This can get tedious and time consuming (although I will admit it does force one to learn how to make the conversions a little more quickly in your head... as long as you are not making mistakes!)

 

index display.png >>>>> index display new.png

When using Block diagram constants wired to Sub VI's, some times we prefer them to be placed exactly below or above the sub VI when they are connected to the bottom and top terminals respectively. This is just to compress the code, so that block diagram looks neat.

 

 

Idea_2.png

When using LabVIEW Code Cleanup


Idea_1.png

Prefered - would make code cleaner

 

For this it will be great if we have terminals for constants from top and bottom also. So every constant will have three terminals top,bottom and the ususal one to the right. When user wires to any one of this terminal the other two can become disabled, this will make sure user connects only one wire to the constant. I guess people wont prefer  left terminal.

 

So our new constants will look like this: Idea_4.png

At any time only one of these terminal will be active like this: Idea_3.pngIdea_5.pngIdea_6.png

Hope I'm not duplicating ideas already in this forums (couldn't get to read all the ideas)

 

 

I have seen a few posts online indicating a couple of changes here and there for LVMerge and LVDiff.  I think the main problem is that we just want it to work with third party SCM tools like Mercurial / TortoiseHG, SVN / TortoiseSVN, RTC (Rational Team Concert), Surround, ect.  The ability to check in and out from project explorer is not quite cutting it.  With more and more developers using distributed SCC products like GIT or Mercurial the ability to merge and diff becomes really important.  Here is a list of what I would like to see in newer versions of LabVIEW and the LVMerge and LVDiff tools that would give us more time to develop code and less time spent managing software.

 

1. Both LVMerge and LVDiff work ok with a single vi, but not that well when hierarchies are different.  Most SCC applications will only download one file or the files that are different between change sets when merging or differencing change sets.  The basic problem is that in order to diff or merge LabVIEW requires the vi to be loaded which requires loading dependencies.  If the merge and diff tools didn’t require the vi’s dependencies to be loaded into memory then many of the issues just go away.

 

 I understand the technical challenges in order to implement this feature, but I think it would be a far better approach then trying to write a huge amount of code in order to handle multiple SCC tools.  Even if that code was written the workaround solutions are not pretty.  For example you would have to download both change set’s entire hierarchies to disk and then compare them.  How well will that work with very large projects?  Or with a merge where you need three version of the hierarchy?

 

I think the better solution is to just make LabVIEW files act like text files when diff and merges are performed.  The information in the LabVIEW file points to dependencies, and if those dependencies’s attributes change then flag them, but LabVIEW should be able to generate the LabVIEW "file" in a vacuum for differencing and merging.  May require caching more information about dependencies then what is currently saved in the vi, but I think that would allow a better merge / diff utility.

 

2. Support differencing and merging of all LabVIEW file types (projects, xctls, classes, libraries...).  Sometimes the text merge features in some programs don't take into account the complexity of the relationships between LabVIEW files.  It would be nicer to have a visual diff in terms of how LabVIEW treats the file (e.g. how TestStand differences sequence files).

 

3.  This is more of a bug fix, but improve the merge windows.  I have found a couple of situations where the code being merged is not even shown in the three windows (base, theirs, mine) and I cannot scroll to that location in the code to intelligently perform the merge.

 

4. LVMerge exe exits right away before the merge is complete.  TortoiseHG thinks the merge is complete for a file when the exe exits so it blows right past all of the other file merges so only the first file is merged.

 

5. Cover these use cases as differences between change sets when merging and differencing (item 1 solution should cover these):

Setup: use TortoiseHG to difference an entire change set in the repository with the local drive, or merge two change set in the repository.

  • Moved files (not just vi's) in the hierarchy
  • Deleted files in the hierarchy
  • Files added or removed from classes/libraries/projects
  • File 1 changed and dependency File 2 changes it's connector pane connection to work with the changes in file 1
  • Both new change sets add the same file that the base change set does not contain
  • Same as the last item, but added file has a different location on the hard drive between the change sets

There are probably more that I am not thinking of, but that would be a good start.

 

6. Simplify the entire process by providing a real IDE for merging and differencing files.  I am envisioning something with a hierarchy of views like Beyond Compare.  It would allow you to simplify some actions at a high level, but would give you the power to perform advanced actions.  For example, present a list of differences, types of differences, and the types of merges possible. 

  • Maybe some files can be auto-merged
  • SCC thinks the files were different but there are only cosmetic changes
  • User could choose between a deleted file or a changed file
  • Two versions are different but the user knows which one to choose without performing a merge.

The user should be able to have a quick view (no loading dependencies), or double click on the item and a new tab comes up that allows an actual file merge (vi, class, project, ect.).

 

 I think a tool like that that has the ability to interface with third party SCC tools would be a huge timesaver especially when dealing with distributed environments where merges occur more often.  It may need to stream all of the changes from a tool like TortoiseHG before performing a merge (probably easiest implementation), or rewrite the GUI for managing Mercurial or GIT change sets directly.

 

 The other option is to say "just use a check in check out central repository SCC", and I would say Phooeey! to that. Smiley Happy  After using Mercurial with TortoiseHG for a while I would not switch to anything other then another distributed SCC application...even with the difficulties with the merges and differences, using another system still poses similar problems (sometimes even worse) and the software management in those programs just stifles productivity.  Has anyone ever tried to move a class and its members to a different directory after the code has already been checked into an SCC tool like Perforce?  How about managing a multi-branch project where stable release updates are not only applied to the trunk but to a major feature branch?  Painful...

 

I think that these changes to the LabVIEW development environment will move us from “writing LabVIEW code” to “software development using LabVIEW”.