LabVIEW Idea Exchange

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

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

 

 

I searched reentrant in this idea exchange and didn't see anything on it so here goes. I would like some sort of indicator showing that a VI is reentrant. Right now, as far as I know, you have to go into the properties and check. It would be nice if there could be either something on the icon, or a small label that would show if the VI was reentrant. Or maybe a slight "halo" around the VI, something to that effect. Any other ideas on how to do this are welcome.

 

 

 

Message Edited by for(imstuck) on 02-24-2010 10:00 AM

Who doesn't like dumping data to CSV files? But there is a few pain points unless your data is already a string array or the same data type.

 

The usual way I end up doing it is formatting data to a string, then concatenating it with a delimiter. Then have to figure out if its a new file and prefix the header string. (Its also annoying open file doesn't return an empty file flag (True if New, or Replaced, or Existing AND empty)). 

 

Then you need to add a new column of data - now there is a problem of keeping format specifier strings and header strings in sync. And then you end up with a stray delimiter so your column headers end up offset from the columns... And your format string breaks if you don't get the format code in the right place. And the data you want to dump increases until you have over 60 columns and its a nightmare maintaining long format and header strings, concatenate strings etc!

 

 

Format Cluster to String.png

 

It would be nice to format a cluster to a string. Optionally include the header row. For a 1D array could take its name and append the index to it. 

Named Format into String.png

I16 is currently the only output representation of this function, and it is particularly unhandy - I typically end up typecasting it 90% of the time. I propose the output representation of this primitive can be changed via Right-Click Menu.

 

BoolOutputRepresentation.png

For most functional blocks on the Front Panel, the wire anchor point is very near the edge of the block (reference this idea for an exploded view of the wire anchor point). This lends itself very well to a trick I use to achieve neat parallel wire routing (until this idea is implemented!😞

 

WireRoutingTip.png

 

Step 1: Wire up a bunch of parallel wires, and you've got a mess!

Step 2: Grab one of the functions, and drag it all the way up and down so that the parallel wires all bend along the same line

Step 3: Grab the wires one at a time, and using Shift+Arrow Left or Right and distribute so that the vertical wire runs are evenly spaced

 

Here's the problem: Bundle by Name, Unbundle by Name, Property/Invoke Nodes, Local Variables etc. have the "wire anchor point" in the center of the node. This makes the above trick difficult, and it also presents more problems:

 

HiddenWireBends.png

 

Frame 1 shows erratic spacing of tunnels, and a highlighted wire that lands in the center of the large Unbundle by Name. I have drawn a red line that shows the center of the wire run as currently implemented, and the green line shows where I propose the wires should bend. Frame 2 shows what you see when check "Hide Full Names": the wire bends are clearly evident and easy to fix, as shown in Frame 3.

 

Another problem is "what you see is (maybe or maybe not) what you get":

 

WiringIllusion.png

 

The three tunnels appear to be wired to 6, 7, and 8, but indeed they are actually wired to 1, 5, and 7.

 

In a nutshell: When the location of a wire bend is calculated, it should bend halfway between the edges of two nodes. This could be accomplished by placing the wire anchor point at the edge of the node instead of the center of the node.

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

 

 

Clusters allow you access to the decorations inside the cluster but you can also drop decorations on a custom .ctl file too but there is not way to programmatically access them.

acaracciolo_0-1691284677389.png

 

DVRs are references, and are automatically released when the VI hierarchy that created and "owns" it goes idle (stops executing).  Commonly, the DVR just contains by-value objects, or LabVIEW references that are also automatically released, but an important use case of DVRs is wrapping a non-labview reference that must be properly cleaned-up.   An example is an SQLite Connection pointer that must have a dll method called on it in order to release the database file it is holding open.  Many dlls have similar pointers/handles that need to be properly closed.  This is a headache for Programmers, who cannot rely on a stopped VI releasing its resources, often requiring restarts of LabVIEW to unload the dll.

 

A clean and easy solution to this problem would be to allow a "DVR Cleanup Callback VI" to be registered with the system when the DVR is created.   That VI would be called if and only if the DVR is release because its calling VI hierarchy goes idle.   This VI would contain the code to cleanup/close the contained non-LabVIEW references.  Could have other uses, such as debugging. 

 

I have developed multiple APIs that wrap non-LabVIEW dlls, and this feature would be a very significant help.   Please consider it.

Whenever I place a Bundle By Name (or Unbundle By Name) function on the block diagram, it is configured to Show Full Names. But while creating the cluster, I provide descriptive names to each element and so I want that every time when I place the Bundle By Name (or Unbundle By Name) function on the block diagram, by default it must be configured as Hide Full Names.

 

Unbundle function

 

I know, my wish is not what everybody else wants to have, so better solution to this could be a selectable option (perhaps categorized in Environment setting).

Simple idea is to make the icons found in the palettes, the block diagram and help all match.

 

MissMatchedIcons(larger).png

The icons in the columns are all the same function, however, there are some significant differences. It is reasonable to expect the help menu icons are expanded to show additional functionality, but there is no reason why the palette and BD icons should be different. The core of the icon in the help menus should be the same too.

These icons screen shots are from LabVIEW 2018.

It is fairly common to build applications in LabVIEW that are useful to run as a service (monitoring software e.g.) , however to do so today you need to "cheat" and use srvany, and write and run batch files to get it installed. 

 

It would be great if we could build real services, and the installer would take care of the installation process. You could even have a nice template for services with an accompanying user interface client, with notification icon and everything.

 

LabVIEW everywhere...Not just on different targets, but in every part of the system. 🙂 

 

I think it would be useful if you could double click on the items in "Referencing Items" to open the VI on the resolve conflicts dialog.

Resolve conflicts dialog.jpg

As an aside, the dialog should also remeber its last position and size. I have to expand it every time to see the full path.

 

The ability to define a mask for a string control to simplify data entry. Useful for any type of data including zip codes, phone numbers, IP and MAC addresses, formatted serial numbers etc...

 

Similar to Microsoft InputMask property in Access (http://msdn.microsoft.com/en-us/library/bb215691.aspx)

 

 

 

 

In LV 2011, an asynchronous Call By Reference feature was added to LV. This feature added a new node called the Wait on Asynchronous Call node. This new node has a timeout that is configured way way of a right click menu option.

 

It would be nice if the timeout was specified by way of a normal input that can be wired. This has several advantages:

    • The timeout can be specified at run time
    • The timeout value can be visible on the diagram without right clicking and showing a dialog
    • The timeout would be more discoverable by users

It would be nice to have a keyboard shortcut to bring the unfocused BD or FP of a VI to be aligned with the active BD or FP by aligning top edges and distributing vertical edges compressed, like in the picture below. This would help to manage a collection of cluttered FP and BD windows.

 

CuriousSwede_1-1702722071766.png

 

And it would also be nice to "lock" this arrangement, in a way so that the two windows could be moved as one object, but still be individually rezisable.

This is just an idea I had while working on a simple application.  I often find myself wanting to replace multiple objects on a block diagram in a repititive manner.  As an example, I have an application that uses a queue requiring an enumerated value as an input - when I started the application I didn't use a type definition, but I (of course) quickly arrived at a point where I needed to replace all of my constants with a type definition.

 

Right now I have a few options:

1) Delete the type definition and drop a new one down and wire it up

2) Right-click and select 'replace' and point it to the ctl file

both of which take a considerable amount of time to do over and over again.

 

Here's my idea...  I create the type definition once, and press CTRL+C while it's highlighted on the block diagram.  Then I select one (or multiple) items that I want to replace with this type definition and when I press CTRL+P it automatically replaces and wires the item in the copy buffer.

 

It's hard to illustrate, but I just wanted to throw it out there to see if anyone likes the idea.

The one button dialog is a great tool when debugging code. It's very convenient to wire a string to the dialog to probe data when regular debugging techniques are not available. There are times when it would be handy to wire a non-string data type and not have to either convert a number or a boolean to a string. Formatting should be limited (for simplicity) such that data types like arrays and clusters would need to be handled by the user.

 

onebutton.jpg

The Tree- Control and the Multicolumn Listbox support the presentation of a Symbols per row. But there are a lot of cases where there is needed more than one symbol per row. One very common scenario is the display of various states (Calculation completed: Checkmark; Results written to file: Checkmark; Assigned Application to open file: App-Icon...). NI does this already in the "Example Finder" window, so it is obvious there is a need for this feature.

I think it is a good practice to hold a pool of symbols, attached to the control, like NI does currently with the Trees and MCLBs. And for performance reasons there could still be the possibility to determine the columns to be capable to display symbols.

So from the LabVIEW programmers point of view there could be added the following properties / methods:

  • Symbol-Displayable Colums (property, read/write), (1D Array I32): Gets or Sets the indices of colums, which can show symbols and reserve space when the property "Visible Items->Symbols Visible" is set to true
  • Active Symbol- Column (property, read/write), (I32): Gets or Sets the Column-No which has focus for the next "Item Symbols"-property operation.
  • Set Column- Symbols (method, takes an I32 as Index for the Column, takes a 1D-Array of  I32 as Symbol-pool indices): shortcut for setting the Property "Active Symbol- Column" followed by setting the Property "Item Symbols".
  • Get Column- Symbols (method, takes an I32 as Index for the Column, returns a 1D-Array of  I32 as Symbol-pool indices): shortcut for setting the Property "Active Symbol- Column" followed by reading the Property "Item Symbols".

This should provide compatibility to the current handling of symbols since the property "Symbol-Displayable Colums" defaults to [0], so if "Item Symbols" is read or written to, it is meant to use the first column, which is status quo.

Here's a dumb mistake I think many of us can relate to:

bundle_by_name.gif

It would be really nice if the VI were just broken in this situation. But I can understand why it's not necessarily simple to mark node *outputs* as required.

 

 

But maybe there could be a way for the editor to *hint* that there is a problem here. Maybe the bundle nodes could change color when the output terminal is wired, so you could get a little more obvious feedback if you screwed up like this.  The same could go for any other primitives that have a "for type" input (e.g. unflatten from string, variant to data, to more specific class, etc).

 

Granted, VI Analyzer could report bugs like this, but having a little more immediate feedback would probably be a big win.

 

(Let me know if this should be cross-posted to the NXG idea exchange, too).

Consider how CTRL+E toggles between the BD and FP, back and forth. Likewise, it would be nice if CTRL+Shift+E toggled between the VI and its corresponding Project Item.

 

Currently, when viewing a VI window, CTRL+Shift+E will highlight the Project Item -- but this action is unidirectional -- pressing the same key combo again does not take you back to the VI (it just does nothing).

 

Oh, and, Reflexive... is that the right word? Bidirectionality? You get the drift. Here's an illustration:

 

CTRL-SHIFT-E-Reflexive.gif