LabVIEW Idea Exchange

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

Using the quick-drop with a wire (typically the error wire) selected, one can insert a vi.

It would be awesome to select two wires (say the error, and a tdms refnum), and insert a single vi that consumes both wires, as opposed to creating two vis - one for each wire.

When you update a value in a control (specially something as large as a table with hundreds of values changed) on  a VI, LabView doesn’t know or tell or warn you when you exit the VI that there are changes to the values (IT SHOULD AT LEAST WARN YOU)!

 

If you change the slightest wire/diagram/etc., it warns you to save and has the "*" on the end of the UI/VI title!

 

WHY NOT do that on the controls? Rather than having to always remember to Right Click, “Save Current Values as Default”…

 

We LOST HOURS of work/typing (after saving many times, thinking it saved the values – specially in a table)!

Granted, this is a distant couisin to THIS Idea and we have IDE hooks for implementing our own flavours but I think it's easily implemented and I feel like posting.

 

When we create an Override VI we get a nice parent VI call but the Error cluster is missing!  I keep having to add the thing after creating an OVerride VI.

 

If we have a dynamic dispatch parent VI it looks like THIS

 

Dynamic Dispatch VI

How it is Override.png

 

 

Override VI

How it is Dynamic.png

 

Correct Override VI

How it should be Override.png

 

 

Seeing how most will NOT change their default Override templates, this should IMHO be implemented despite the IDE hooks for implementing the same thing.

 

That's all.

Shane.

I am in the VI camp (that is VI vs Emacs, not virtual instrument) and I love the command mode.  Fingers on the keyboard, zoom zoom all over the file.  And I like Darrins quick drop shortcuts.  I can assign shortcuts to things and ctrl-space zoom zoom I have what I want.

 

I notice though when I am editing a block diagram that pressing keys usually has no effect unless part of a ctrl-key combos...  but LabVIEW seems to already spend most of its time in a sort of VI command mode anyway, so why not exploit that?

 

George

Alphabetically ordering the pop-up local and global variable lists was a boon to those of us with dozens of controls and indicators in a VI. Something similar should be done for the Edit Event Case screen: order the list of controls/indicators alphabetically.

 

thanks,

Dan

I've been working with LabView since 1995, and love it. Currently I write and maintain a pretty large program that is distributed to end users as part of a commercial product, and so have run into difficulties around two main issues: nice GUI's, and dealing with dozens, if not hundreds, of variables. Some of these items may have already come up in discussion forums or other's idea posts, but here they are:

 

1. Tab splitters - would permit properly resizing a GUI based around tab pages by creating internal panes on each page. And yes, I have already tried out and rejected some of the workarounds described in the discussion forums.

 

2. Array element properties - I would really like to be able to programmatically change the properties of individual array elements, and especially of individual cluster elements within individual array elements.

 

3. Cursor legend - the LV 2007 cursor legend was fine, but I hate the current one, mostly because it takes up too much space vertically.

 

4. Floating graph elements - It would be nice to be able to define elements like plot legends, cursor legends, etc. as floating, so that when they are turned on they do not require extra space in the window. The user could turn them on, make changes as needed, then turn them off again.

 

5. Edit Event Case dialog - alphabetically ordering the pop-up local and global variable lists was a boon to those of us with dozens of controls and indicators in a VI. Something similar should be done for the Edit Event Case screen: order the list of controls/indicators alphabetically.

 

6. Case Structure chaos: I often have three or four cases per subdiagram, and especially when tied to an enum ring with actual phrases, I get the dreaded ellipses between cases:

 

 

Then I have no clue as to which cases are indicated by ellipses. An 'edit case' dialog would be really helpful, or at the very least, showing the entire list when the text edit tool is placed in the text field.

 

7. Control position display/setting - add fields to view/set the position of a Front Panel control in the Properties dialog, next to the view/set fields for size. Add increment/decrement buttons for all four fields (width, height, top, left).

 

8. Tagging controls - some means of creating groups of controls that could be addressed en masse. For example, all the controls on one tab could be in their own group. Then, the pop-up list of controls that appears when you right-click a local variable would not be one long list, but would be organized as a tree; each branch would be the controls from one tab page. Same for the Event Case dialog.

 

thank you, NI and the entire development community!

Dan

In my experience it's extremely rare that you want to see the boolean text for a checkbox or radio button, so it would save time if the default was Boolean Text = Invisible

This is an idea where I'm not sure if I like it but....

 

I often see code with functional globals and booleans used as command, 99% with FALSE as Get and TRUE as Set.

Code1.png

 

I don't like this and normally you use typedefed enums instead. But if you want to use those VIs created from someone else you have to use these boolean commands.

In most cases these FGVs where created this way because you don't want to create an enum for only two states (laziness) and time is money... Bad style I know 😞

 

My idea is to add an additional boolean constant with only changed appearance, quasi a mask: get.png and set.png

 

Afterwards the code will look like this, which is more intuitive than the first one:

 

Code2.png

 

Thanks,

 

Peter

Is it better if the front panel and block diagram togather open up while opening a VI??

Iam not telling that pressing ctrl+T or ctrl+E is a very difficult task.But it will be more convenient if both the frontpanel and block diagram appears Tile up/down or Tile left/right while opening a VI.

 

I recently submitted (as a bug) the fact that, when I have a control that is type defined (or strictly type defined), the 'Value' property node does not propagate the type definition. The documentation for the 'Value' property states that the data type is "Labview Variant". But... when I use the 'value' property, the data type is always the type of the underlying control, *except* for that, if the control was a type-defined (strict or non-strict) control, the resulting value (indicator, control, or constant) is disconnected from the typedef.

 

I *never* get the purple line and data type 'variant' that the documentation would suggest.

 

It's my belief that the disconnectiion from the type definition is both incorrect behavior, and a bug... and that the correct way to document the value property is that it returns a data type that matches the underlying control, not the Labview variant data type.

 

This is especially egregious when you pass a control reference to a SubVI and create a local copy of the indicator, constant, or control that you can use in the SubVI, perhaps with the intent of updating the control passed by reference before returning to the caller. If the control happens to be a cluster that is strictly type defined, and the structure of that contents is changed, the created controls, indicators, and constants derived from the reference will have the OLD cluster definition if the 'value' property disconnected from the strict type definition. This means that the SubVI not only needs to have it's logic updated to match the new cluster definition (if required, it could use elements that didn't change in the cluster definition), but it also means that you have to go back and update each and every control, indicator, and constant because even if the 'value' property now returns the correct contents, the containers you created to hold those contents are now incorrectly typed.

 

I was told by Labview tech support that:

 

"this is the way LabVIEW is currently programmed to function. Because of the generality and flexibility of property nodes, they do not maintain their strict type definition once passed through the property node. While the strict type definition and the characteristics of the front panel control/indicator may not be maintained by the property node, the integrity of the data is still intact. The property node coerces the data to fit a type it understands and then writes the data to the control. The data will still be the correct type, will have the correct data, and will have the same looking controls/indicators."

 

This supports the notion that the documenation ("'value' property returns Labview variant) is simply incorrect. It also support my contention that the type definition disconnection is a bug, is erroneous behavior. I've noticed that *sometimes* the type definition is NOT disconnected, although I have not been able to determine what controls that behavior; but note that in the response to my question from tech support, they state that the "strict type definition ... may not be maintained by the property node" (emphasis added). I think this is a flat-out bug; that the data type MUST propagate; that the connection to a type def (if there is one) is in essence part of the data type, and MUST be maintained.

 

I want this treated as a bug with an action item to get it fixed.

 

What do you think??? Should the 'Value' property return typed (and type defined) data, or should it return a Labview variant, as documented???

Hello!

 

I hold many different revisions of my projects on my PC, and am not currently using Perforce or any other source control.  As the mass compile tool stands now, if I were to mass compile a directory which contained the latest version of my project, it would search through all of the files on my hard drive and link or relink VIs to the first version of files that it finds.  My project would basically link some Vis correctly and to old or outdated versions of VIs or DLLs in some cases. 

 

I would like to suggest that the mass compile feature in LabVIEW allow the user to specify the folder or hard drive location where the desired source should be located.  Currently we're only able to point towards the directory where the broken links exist.  It would also be nice to have a checkbox feature to include the subdirectories below the top level desired source directory.

 

Cheers!

 

Shawn S.

When you create a User Event and add it to an Event Structure as an Event Case, you have new event data nodes available: the reference to the event and the data generated by the user event. Similarily, if you add a Control Event to the Event Structure, you have event data nodes available such as the old value and the new value. See the example of the User Event below: 

 

UserEvent.png

However, when you add two events to the same Event Structure Event Case, the UsrEvtRef and Demo Event Data Nodes are no longer available. Only the data nodes that are common between the User Event and the Control Event are available, as shown below: 

 

MultipleEvents.png

Merged.png

 

This behavior has been observed in LabVIEW 2011 SP1. Customers have expressed interest in being able to access user event data in Event Structure Cases which contain multiple events. 

In LabVIEW 8.0, customers had the ability to modify the default connector pane. However, in LabVIEW 2011 SP1, the default connector pane is fixed to the 4x2x2x4 pattern, and the defaultConPane INI token no longer changes the default connector pane. Customers have expressed interest in being able to modify the default connector pane to prevent needing to change it manually when they are consistently using another connector pane pattern.  

I have two identical VI that take DAQmx signals and put them into a waveform and then use two different methods to select the signals for display in charts on the display. One VI uses the split and merge VIs while the other VI uses the select signals express VIs. They both work the same; however, the split and merge VIs obviously select the signals based on the output index which supplies the signals implicatly, while the express select signals VIs rely on a popup menu to show the signals configured in MAX in a list where the user can then select the needed signals. The idea is great except the VI does not do this all the time!  When the properties dialog box is displayed the first time that the sub VI is used the popup list shows a sort of default list of signals: signal 0 thru signal 7. This is amazing since the input waveform comes from MAX with 11 channels in MAX! The channels in MAX are named in MAX as voltage_0 thru voltage_10 and this should be what pops up in the dialog box!  Looking at the interior code of the select signal VI gave me the impression that the list in the display needs to to stored internally into a local variable and that until this VI is run at least once the pop up display would not populate the list of MAX channels so I went and ran the VI containing the select signals VI once to populate the list from MAX.  The first time I did this some of the select signals VI (there are 6 in the VI) did show  up with the list populated as configured in MAX but not all of the select signals VIs did! And when I exit out of the project and come back the next day and do this all over again the list always start up with the default list and even when I run the VI to populate the lists the default list still shows up!  If I go back into the tool menu and select the same select signals express VI and install it on the block diagram the list always gets populated once the code is run one time!  I think that NI has some work to be done on getting this VI to work correctly

It would be nice if UnitTests could be grouped into categories, so only a subset of UnitTests can be run (like it is in Visual Studio 2010) at any time. Or if the UTs are displayed in a list and one can choose which to run.

As you can see in the snippet I've got 4 UTs two read and two write. Those are grouped into tests for DeviceUnderTest 1 and DUT2. Now I can run UTs for e.g only DUT2 (as this is the one currently connected to my hardware). Or I can run only the read UTs and so on...

Capture.PNG

 

I know: normally you run all UTs but during development it might be nice to run only a subset of them...

Though it is possible to embed the front panel of a subVI into the main VI's front panel, it is a rather awkward process IMHO.

Here and here an idea was discussed how to make it easier (if I understood it correctly). I propose a somewhat different way.

After an subVI is put into your diagramm, you would get an option in the context menu: "Embed the front panel of this VI". By selecting this option, you so to say cut a hole in the front panel of the main VI and fix the front panel of the subVI behind it. From the functionality point of view, you may achieve a similar result by manually opening the subVI and putting it above the main one.

We may go a step further, an have following options:
- to disable those controls which are wired from the main VI.
- to "disconnect" the controls which are wired to the connector inside the subVI, but not connected from the main VI (otherwise they are reset to the default value each time the subVI is called)

Those would be not options of the subVI on itself (it may be called from a different environment in a different way), but the options for this specific call of the VI.

I find cluster constants to be nearly unusably because the values must be specified positionally rather than by name.  What I find myself doing, and I guess this is the common idiom, is to do "create constant" to get a constant, then fill in the values using bundle by name.  I'd much rather have an option to have the cluster constant look something like the cluster control, with tips, etc.  This could be another view option, like icon.

 

For standard Labview data types (I32, string, etc.) I'd like to see another class of item - we have control, indicator, constant, reference - we need 'types'.

 

The idea is that for Type Cast and other functions that require you wire a primitive datatype regardless of content,  it's a pain to have to allocate an instance of a variable just to get type.

 

I end up creating variables called 'I32 type' etc just to accomplish this, because it is much more correct and clear than wiring some other variable of the correct type that has no real reason to be involved. 

 

Another way to accomplish this would be to have a property of each function that requires a 'type' variable that... "Use output datatype". It's already wired...

 

And the compiler wouldn't have to allocate space for the variable that is required only to get type information...

 

In C I can specify a type without allocatiing space, why can't I do that in Labview?

 

            (char *) p;

 

I'm linking to THIS post where for the first time I've heard of someone suffering from the same problem as me.

 

Basically, the "This VI claims to be part of a library, but the library is being stupid about it" (I may have paraphrased) is solved by selecting the offending VI intruder and selecting "Disconnect from Library".

 

Problem: If you're programming in LVOOP and are trying to put together a library, this can lead to not only disconnecting from the library but also all of the VIs from their respective classes.  This is a major problem because it breaks a whole load of code and takes literally AGES to fix depending on the extent of LVOOP in the project.

 

I know Classes are Libraries on the inside but PLEASE give us the ability to view and control membership in a more intuitive way and most importantly independently from each other.

At the moment I have to add a simple text label to each case in a case structure, for the better readability of the block diagram for other programmers. A helpful innovation would be the ability of adding a label to each case.