LabVIEW Idea Exchange

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

So at the moment LabVIEW has the icon editor glphs stored in the following location.

 

<username>\Documents\LabVIEW Data\Glyphs

 

This is fine, until you login as another user.  Then you realize all of your icons are gone because LabVIEW installed the icons for the user that was logged in when LabVIEW was being installed.

 

Similarly a problem exists if I am distributing icon editor glyphs of my own.  I have a reuse package with a bunch of useful icons, and I have VIPM install them to that users folder.  The problem is if I login to a machine remotely, and perform the update as my user, then those icons are only installed for that user name, and not all users.

 

What this idea is for, is to have a shared folder for icon editor glyphs, which is used for all users on that PC.  Some place like

 

<LabVIEW Install>\Resources\Icon Editor Glyphs

 

would work, or...

 

<ProgramData>\National Instruments\Icon Editor Glyphs

 

Then icons can be installed in one folder, and be shared for all users.

The Open/Create/Replace file I/O primitive is pretty powerful.  It will check to see if the file is there for you, and, if not, create a new one.  I use the "Open or Create" option often when generating multiple delimited text files in long term tests.  When a new file is created, I need know so I can add a header, and I need to skip the header operation if the file is being appended.  Sure, I could check to see if the file exists before trying to open it, but then wouldn't that just make the power of the Open/Replace/Create function redundant?  Some operation took place based on my input to the "operation" terminal, and whether or not the file exists.  Unfortunately, I have no idea what that operation was, because the function doesn't tell me. Let me know if the Open/Create/Replace function created a new file so I can add my header.  

 

New File Feature.png

 

This is not without precedent.  For example, the "Obtain Queue" primitive has an option to create a new queue if a queue of the given name is not found.  It let's you know if the new queue was created:

 

created new.png

One of those little things that winds up bugging me over and over again.  In almost every type of control/indicator I am accustommed to some type of visual clue that a given object is a giver or receiver of data.  Usually it is some combination of shading, increment/decrement buttons, something.  For Refnums (and DVRs in icon view), there is nothing as you can see from the top two pairs of images.

 

DVR ControlVersusIndicator.png

 

Open question:  Should the terminal in the DVR icon glyph change direction to reflect control/indicator of the DVR itself?  I can think about it and say no, but my initial response is always yes.

 

In the lower two pairs of images I at least change the color to reflect the system control/indicator background defaults.  Not bad, but it loses some of the shading effects.  Also a bit light against the system default background so a frame may be desirable.

 

My suggestions:

 

1) Do something (even if it is not exactly what I want).

2) Change the default shading, tweak frames as needed.

3) Fold the opposite corner for indicator.

 

NewCtrlRefnum.png

(Ignore the fact that I was lazy and reflected the entire refnum icon, I suggest only the corner is switched)

 

Open question #2:  while I am at it, why does a VI reference control have an icon which also contains a reference glyph?  Seems like a strange Droste effect going on.

In common, the loops are divided into two categories: entry control loops and exit control loops. The entry control loop checks the condition first, and the code will get executed only if the condition is true. But in the exit control loop, the code will get executed first, and then the condition is checked.

So the "for loop" and "while loop" are entry control loops that will not execute the code if the condition is false, but the "do while loop" will execute the code (run) one time even if the condition is false because it is an exit control loop.

 

This is also the case in Labview, where the while loop will execute the code (run) one time even if we wire true to the conditional terminal, but in the for loop, if we wire 0 to the count terminal code inside the loop, it never gets executed.

So it is more meaningful to say the labview's "while loop" as "do while loop".Screenshot 2024-01-05 110311.pngScreenshot 2024-01-05 110320.png

When creating a class hierarchy, I find it repetitive to have to create a New -> Class, then go in the class properties to set its inheritance. It would be nice to be able to create a new child class directly by right-clicking an existing .lvclass in the project explorer, and selecting New -> Child Class.

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.

A simple request - Close Zip File should return the file path, in the same way that other file closing VIs do.

CloseZipFile.jpg

A Context Help annoyance: when I hover over an enum, it graciously provides a wealth of information about the datatype I have chosen for the enum. So much information, actually, that the information I'm after - the items - are cut off by the window. How about a shorthand data representation?

 

ContextHelpDatatype.png

Very simple idea that can make locating the basic comparison functions more efficient (first two lines). Changing the order putting each comparison function and his counterpart below him would make easier to find the desired one.

 

Now: Comparison palette.png        Proposed: Comparison palette - rearranged.png

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

Hello,

 

I would like to suggest that LabVIEW support HDF5 for data format, file storage and data transfer.   I would to suggest the support include maintenance to coincide with new and future versions of HDF5.

 

Thank you.

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.

Okay so lets say you have a VI that you developed, and works great on its own.  You have some nice scaling and control manipulation with panes and custom resizing code.  All works great.  Then you realize this might be handy to have in a subpanel.  So you insert it into a subpanel, which itself can be resized at runtime.  The only problem is, if code isn't written to handle the resize of the Subpanel properly, then the user could accidentally make the subpanel smaller than the minimum VI size that is inserted into it.  At which point the UI will get messed up and making the subpanel larger will not bring it back to the desired look.  Here is a thread where I post a simple example.  If the subpanel is set to fit to a pane, then you could programatically set the minimum pane size, to be the same as the minimum front panel window size, of the VI being inserted.

 

But if the Subpanel isn't in a pane, then there could be other issues.  So this idea is to have a property of a Subpanel that is "Minimum Subpanel Size".  Which will not allow the control to be smaller than a set size.  To make things even easier I propose a property that is "Set Minimum Subpanel Size to Minimum Front Panel Size".  Now when you try to make the Subpanel too small with a property node, it will generate an error, just like if you try to set the Front Panel too small with a property node.  And if the Subpanel is in a pane and being resized, this would prevent the control from getting smaller, and prevent the pane from getting smaller.

Right now, if you select to show the label of a wire connected to the output of a named cluster, the label is empty:

 

ScreenHunter_001.jpg

 

The white space surrounded by a box pointed to by the line is the location of the blinking cursor.

This is similar for all wire sources: controls, constants, function outputs, etc and should behave similarly for all.

 

Right-Clicking on a connector in the connector pane brings up a context menu.  This menu should have the same "Find Terminal" option as if you click on the FP object.  This will provide quick access to the Terminal especially if the FP object is hidden.

 

 Connector Pane Find Terminal.png

If you develop an application using functionality from the OPC UA Toolkit on a machine with a developer license covering the OPC UA toolkit you cannot run the built application to test if it works without having to buy a deployment license for that machine. 

 

Having a developer licens on a machine should allow us to run built applications as well the same machine to verify the functionality after build (alternatively the developer seat should always be accompanied by a deployment license).

It would be nice if the LabVIEW primitives for TCP allowed for the creation of a socket without actually connecting it to an endpoint.  My thoughts are that there would be two new commands added to the TCP palette:

 

TCP Create Connection (Advanced)

TCP Open Connection (Advanced)

 

TCP Create Connection (Advanced) would create the socket but not perform the connect() method on that socket.  I would imagine that it would otherwise look and feel quite like the current TCP Open Connection, except that the user would need to manually run TCP Open Connection (Advanced) afterwards that would perform the connect() method on that socket.

 

I have a need to access the raw socket object before it is connected, using the TCP Get Raw Net Object.vi in the vi.lib\Utility\tcp.llb library.  This VI works to get the handle that can be used by winsock and other Windows DLLs, however, it only allows for setting properties for a socket that is already connected.

 

Specifically I have a need to enable Windows FastPath for TCP to optimize the rate at which I can stream data between two applications.  Per the specification, this option must be enabled BEFORE the socket is connected.  Right now I can set this for the listener on the server side (TCP Create Listener creates a socket but does not connect), but I cannot set it for the TCP connection on the client side as the first method it calls is TCP Open Connection which returns a socket that is already connected.

A tool option on the  block diagram's toolbar, for creating 'VI Snippet' is very much desired. This is very similar to the 'snapshot' tool available in Adobe Reader software.

 

Provide option to create snippet on the tool bar

I love the new integrated structure labels! I will probably be using the free text labels much less in LabVIEW 2012. But they need a vertical scrollbar and probably a horizontal scrollbar as well. We can debate about whether or not it is a good idea to have hidden text in the labels. But regardless there needs to be some indication if there is.

 

This is closely related to another idea here.

 

vertical scrollbar.png