LabVIEW Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea
This would allow you to drop complex bits of code right on the block diagram just like you would a sub-vi.

I'd like to be able to switch the project explorer view to show actual VI/CTL icons instead of generic icons, very much like the function palette displays available methods.

The icon view should be possible to set for all items and/or only a subset of the project tree.

 

This would be very nice, since LabVIEW allows us to draw pictures that represents the code hidden in a VI, and a picture tells more than a thousand words...

 

/Jonas

Message Edited by Mellroth on 08-12-2009 12:59 PM

When I was developing an option I thought it would be good if we have an option of hiding the close button instead of simply hiding. Since even when we hide the close button the tip strip is still available. I am proposing this idea after searching the forum.

 

Hide Close button.png

 

Option for hiding the Close, Minimize and Maximize buttons.

 

hide close button-1.png

 

Once this option is enabled the other option releated to the windows will get disabled.

 

So the window finally looks like this.

 

hide close button-2.png

 

It would be good if it gets appreciated.

In a standardized  architecture,   there are some cluster that need to be specfic  to  the current project.

 

In labview 2013 the reference to these clusters was automatically  done without preserving default value.

 

In newer version of labview we have  to review and update each specific cluster contained in the  common part of the code .

 

It would be great to make an exception on some  type def, on which  the default value doesn't really matter.

 

 

 

 

 

 

 

 

 

.

For the most part coersions can be broken down into two classes: lossy (e.g. 64L to I8) and safe (e.g. U8 to U16). Why is there only one color option for coersion dots?  Could the vi analizer have seperate settings for max allowable safe and unsafe  coersions?

Hi 

when using the shared variable multiple variable editor to bind shared variables between the PC and cRIO its an annoying UI experience when doing more than a couple of bindings.

 

While the dialog can be resized, the new size is not remembered when binding the next variable, and its current size / layout is not useful for showing trees.

 

Also it doesn't remember your last position in the tree - so every time you wish to bind a variable you have to click to expand cRIO, click Chassis, scroll and click Module then scroll and find the variable by luck as you can only see the first few characters then click again. 

bind shared variable.png

 

Cheers

INTRODUCTION

 

Dealing with arrays that are passed by reference (using control RefNums) to a SubVI has much more utility if it is NOT necessary to extract a local copy of the array in order to play with it. In additiion, there are some properties missing from arrays and clusters that would make it much easier to write code, and which seem to be consistent with other objects' property offerings.

 

Note: All proposed properties are IN ADDITION to existing properties. The behavior of existing properties is NOT changed.

 

NEW PROPERTIES

The following is a list of the proposed new properties:

NEW ARRAY PROPERTIES

ArraySize

ElemIndex

ElemRef

ElemRefs[]

 

NEW CLUSTER PROPERTIES

ControlLabels[]

 

DISCUSSION

 

Array Sizing 

CURRENT:       If you pass an array reference to a SubVI and want to know the size of the array, you need the wire the array "Value" property to the reference (which allocates space

                         and creates a local copy of the array) so that you can then wire the array to ArraySize to find the number of elements in the array.

 

PROPOSED:    I propose a new array property "ArraySize"  to return the number of elements in the array. This would have identical functionality as ArraySize.vi, but would be implemented

                         as a property where it can be used with array RefNums.

 

Deriving References to Array Elements

CURRENT:       If you want to traverse an array and generate a list of references to all elements in the array, you have to first set the "NumCols" and "NumRows" to 1, and then use IndexVals

                          (to set which element is indexed) followed by "ArrElem" to actually get the reference.

 

PROPOSED:   It'd be a lot sweeter if two more properties were added to arrays; the first would (obviously!) be an index function that is NOT related to the visibility properties of the array (as is

                        "IndexVals"). Let's call this new property "ElemIndex". Of course, in order not to break existing code, you cannot let the "ElemIndex" property cause damage to programs that currently

                         use "IndexVals", so we also need a new property (let's call this one "ElemRef") that returns the reference to the element in place of "ArrElem".

 

Obtaining References to Multiple Array Elements

CURRENT:     Currently the "ArrElem" property returns a reference to a single element.  it would be nice to get an array of references to elements in an array in the same manner as you can get

                        an array of references to all controls in a cluster using the cluster "Controls[]" property.

PROPOSED:  So let's create another array property called "ElemRefs[]" that returns an array containing a reference to each element in the array.

 

Identifying Cluster Members Obtained Using "Controls[]"

CURRENT:    The "Controls[]" property of clusters suffers from the problem that you have to know the order of elements in the cluster if you are looking for a specific cluster member. If you write

                      code using "Controls[]" then you are dependent on the order of elements in the cluster. When the cluster is a strictly typed control, this defeats the advantages of strict typing. The

                      effect is that when you change the type definition of a strictly typed cluster so that either (1) the order of elements change, or (2) you insert or delete an element, you have to rewrite

                      code that used the "Controls[]" property if that code needed to identify specific cluster elements and not just process all elements identically.

PROPOSED: A new property,  "ControlLabels[]", alleviates this problem and adds significant utility to clusters, especially those strictly typed. The ControlLabels[] property when added to clusters

                      allows the references returned by the "Controls[]" property to be matched to a specific cluster element using that cluster element's label. The ControlLabels[]  array returned would

                      be the labels of all cluster elements in the same order as the references returned by the "Controls[]" property (which is in the same order you see with "Reorder Controls in Cluster") .

                      This means that code written for a type defined cluster will still work if the type definition is modified either in the order of controls in the cluster, or if new elements are added or deleted

                      (so long as the deleted element wasn't one that was handled specifically in the code!).

 

 

 

 

 

Hello,

 

when you want to create a constant cluster using the context menu item "Create constant", the new constant is created by default in "Big", not iconified.

This can cause problem if the constant creation takes place in a structure ... because the structure is then automatically resized.

It should be nice to use the new LV2010 feature which allows to transform a cluster in an iconified way.

 

Manu.

Wish there was an “inspection window” showing the block diagram of a sub-vi on mouse-over. (double-click & open to edit). Perhaps, it can even appear below context help.

 

(Not sure if someone has already suggested it) 

Hi,

 

My idea is as simple as the title states - an additional Compound Arithmetic function that works like "Equal?", but with multiple inputs and single boolean output.

 

I believe it is fairly easy to implement such functionality, and I can see no other single block that could compare multiple values, and offer easy expansion as well.

The easiest way to build similarly working VI (that comes to my mind right now) below.

Przechwytywanie.PNG

 

 

 Add a printer selection dialog (option) for the print VI functionality (yes I know there are ActiveX alternatives etc. but this should definitely be included "out of the box").

Of course there are many other desirable improvements (found by a simple search for "Event Structure" in the Idea Exchange forum).

One of them though would be a priori easily implemented with the floating Help Window (contextual Help): show the source (control) type as a basic help for the programmer to figure out whether "Binning" is the Boolean which select a binning option or the actual I32 value of the chosen bin increment (in the example below taken from what I am working on right now):

 

ScreenHunter_001.jpg

 

From that so-not-graphical list of control names, I have absolutely no clue. Sometimes the list of events might give me a clue, but not always.

 

This is just the beginning of a long list of additional information that would be helpful, but let's start with something really simple.

 

 

Extend on the concept of the termchar to include a multicharacter termination string for VISA reads.

 

Ideally, the termination string could be defined as a regex.

 

When I establish a connection with a linux based Device Under Test using a terminal server or TCP socket, the device ready prompt is the typical username@hostname:#

 

I currently read the VISA session in a tight loop a byte at a time and buffer the characters to compare to a regex of \n%s@.+?:[~|(/(\w)+)]+?# 

 

The time required depends on the length of the response from the device under test, so I have to keep track of the total time myself; I can't use the VISA timeout.

 

If NI-VISA supported a regex based multicharacter termination string, I could set my VISA session to look and wait for the prompt.

 

NI-VISA TermString.png

In the old days when VISA was first designed, I'm guessing that this sort of functionality would have been taxing on the memory and CPU. With today's 64 bit GHz multicore processors, abundant RAM and common regex libs, I don't hink this would affect timing.

 

 

Currently we can only search and replace specific nodes, it would be beniciiary if we could search and replace for specific code segments.

This would be usefull if we placed some very often used structure in a Sub-VI and want to replace all those instance very quickly.

I am doing this right now for a 'sent event'  piece of code and it's quite a lot of instance (>40) that I have to look up (by a specific node) and select, replace etc.

 

The search should be intelligent and ignore wire routings, just looking at all of the connected nodes and wires.

 

As part of the base package in the LabVIEW Developer Suite, include an integrated SCC in the IDE. We are using a third party SCC program right now, and it has it's quirks when integrating with LabVIEW. Our group is comfortable with the quirks now, but for a new group starting a new project, the hurdles might be big enough to nix SCC. If a LabVIEW-specific package was maintained with the IDE, those quirks could be reconciled for the LabVIEW-specific style (i.e., a file is "modified" when compiled, diffing two VI's, ...)

 

NI has been really promoting SCC recently, and I think they should officially develop (or adopt) an integrated package with the LabVIEW IDE.

In addition or extention  to this idea

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Graphs-and-Charts-with-semi-transparent-fill-option/idi-p/1530960

 

I would like to have a transparency control/property in the colour selection for plots in graphs and charts.

 

 

  • I like to make plugin tools that work on items in the project e.g. Libraries/Classes.
  • I like implementing these plugins using the Quick Drop plugin framework.
  • And I normally always work with the LabVIEW Project in my standard workflow. 

 

 

If I want to act on a Library, obviously I can just open a Member VI and get a reference to the Parent Library to do this.

However, I feel it would be more natural to Quick Drop on the Library in the Project itself!!

I also feel that it would be faster...

...And isn't that what Quick Drop was invented for?

 

I don't know if native options would ever exist, I am looking to call my own shortcuts - but there is alot of scope to implement custom plugins.

I have only given one example above.

 

Cheers

 

-JG 

 

Quick Drop on Project Window.png 

Hi,

 

I sometimes could've used a VIT that maintained its connection to the VI you create from it, in the sense that if you later update the VIT any VI created from it update equivalently. Here I suggest such a "linked VIT", I call it a VI Definition here (.vid?), but it could be named something else if you have a better term. I envision something like this:

 

Consider a VIT containing code like this (just a small stupid example, often VITs are more complex), except this is a VID:

 

VID.png

 

Then you create a new VI from the VID, and fill in some additional code:

 

Filled_in_VID.png

 

To illustrate which pieces of code comes from the VID, I've dimmed those parts (since they have a couple of special properties I'll explain in a moment):

 

Highlighted_VID.png

 

What you may not do to the objects originating from the VID:

 

1) You may not delete or replace any of those objects.

2) You may not unwire any originally wired terminal.

3) You may not delete any existing cases from case structures, event structures etc. Special situations arise when a referenced typedef changes for instance.

4) You may not change any control labels (if the VID can identify the original controls by other means you could perhaps be allowed to change their labels?).

5) You may not insert any object onto an existing wire (if this can be done while maintaining the autoupdate functionality from VID to VI then it maybe should be allowed?).

 

What you may do:

 

a) You may resize any existing structures, as well as move any objects and wires.

b) You may wire to any originally unwired terminal.

c) You may insert any number of new objects.

d) You may add new cases to case structures etc, and you may reorder cases.

e) You may change structure labels and control captions.

f) What about original free labels?..

 

What the above makes possible is that if you later change* the VID all the VIs created from it will update as well (when they are loaded into memory and checks their changed .vid file). Only what was changed in the VID will propagate into the VIs, nothing else is changed including the custom code added to each.

 

You should be able to unlink a created VI from its VID, possibly with a password protection.

 

What do you think about this?

 

Cheers,

Steen

 

* When a VID is changed a lot it's probably not possible to detect 1:1 what was changed when LabVIEW later compares it with each instantiated VI, so some change history inside the VID should probably be maintained to enable LabVIEW scripting the same changes into each instantiated VI.

Currently if you're using some VIs with the 16 contact pane (five columns, 1st & last with five contacts, middle ones with two) and some with the very common 12 contact "4-2-2-4" pane, if you try to line things up horizontally with an error cluster along the bottom and a refnum or such along the top, you get all sorts of messy looking kinks in your wiring.  This could easily be fixed:

 

The edge contacts on 5-2-2-2-5 shouldn't be uniform in size.  Instead the top and bottom ones should be the same height as on the 4-2-2-4.  The middle three will still be decently large, the same size as the edge contacts on the 20-contact 6-2-2-2-2-6 pane.  And now everything will line up nicely.