LabVIEW Idea Exchange

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

Since LabVIEW 2017, the default build specification check the option "Allow future versions of the LabVIEW Runtime to run this application".

 

I don't undertstand why it is checked by default when you read the help that said "Disabling this option prevents any changes to the performance profiles and helps you avoid unexpected problems resulting from compiler upgrades."

 

Because NI and me doesn't know the future, NI will never garanty that your application will run with all the future LV Runtime. I know it well because I'm facing this issue with le LV RT 2020 that breaks the execution of different application that I have buid in 2017 SP1.

 

The behavior is a little strange too, because, even if you have the run-time use to build the application on your computer, the application will use the highest one present one the computer.

 

This options can be very usefull, and I appreciate it, but maybe we need to have more control on it. So my idea is to give to the user the ability to list supported or unsupported LabVIEW Runtime.

 

This will help us managing future LV Runtime without having to recompile the application which seems to be the goal of this option.

 

for Example :

 

[MyApplication]

ExcludeLVRTe = "2020,2021"

 

Regards

I like the "new" Review and Update Typedef feature.

 

What I don't like is handling the CASE structures I have connected to enums when the enums update. The constants for the enums update fine, but the selectors for the CASE structure are not included in this operation.  I really wish these could be handled as pseudo-constants for enums, allowing re-assignment of cases with a preview of old and new values.  I've started adding an enum constant to each case just to serve as a reminder which case it's actually supposed to be. And that feels kludgy.

 

Currently, case structures auto-adapt to enum indices. I'd like that to no longer be the case.

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.

 

A picture is worth a thousand words.

 

Listbox Control.png

 

Basically I'd like more control over the text in listboxes.  I want the same level of control that you can get from a string control, where each character in a string element can have custom font settings.  At the moment each line in a listbox must have the same settings.  This idea is to have more control over the font settings of listboxes, and multicolumn listboxes, as well as implementing the property nodes that allows for these settings to be controlled problematically.

Changing the connector pane of a subVI requires relinking to the subVI in all callers. Until we relink (right-click...), the subVI is bleached and the caller broken.

 

When refactoring old code, subVIs often contain odd connector panes and one might want to change to a more typical pattern (e.g. 4-2-2-4), and reassign connectors to established policies (e.g. error in/out at the bottom corners). Also, sometimes there was poor planning and we need just one more connector terminal.

 

Currently, relinking to a subVI clears all "subVI node setup" settings. This is unexpected and I suggest that these settings are retained instead.

 

Example scenario:

I was working on some very old code (originally from LabVIEW 4.0 :o), and there was a single instance of an interactive subVI that was set to show the front panel when called and close afterwards ((in the subVI node setup of the caller, not in the VI itself). This subVI was interactive and required user interaction to complete. It had some odd connector pane (four horizontal terminals all the way across the icon, top as input and botton as output) and I wanted to change it to the standard 4-2-2-4 pattern. After changing the pattern, I did some switcheroo on the connectors, correctly rewired in the caller, rebuilt the app and deployed it to the PC controlling an instrument. (I could not test run locally because it required the presence of the instrument)

Bam! Triggering the subVI call no longer showed the front panel and since the caller required the subVI to return before continuing, everything was locked up. I had to kill the build executable via task manager. Now the guessing game started, trying to figure out why the app would lock up. Since I also did a few minor changes elsewhere,  It took me a while before realizing that I should maybe look at the "subVI node setup". Sure enough, all settings were cleared. These settings were retained during 20 years of version upgrades and I did not expect them to change behind he scene and without warning :D.

 

Anyone can easily verify that relinking to a subVI will clear all settings in the subVI node setup. Would anyone expect that? Probably not!

 

IDEA SUMMARY:

Relinking to a subVI should retain the existing "subVI node setup" settings.

 

The existing settings are most likely also appropriate after the connector pattern has changed. This is the expected bahavior. There is no reason to clear these settings. Thanks for your votes!

 

Clipboard01.png

 

I often get this dialog when a class is locked because a VI is still in use by some running process. It might be a reentrant process that for some reason didn't shut down as expected, but in a system with 3000 VIs and lots of asynchronous processes it can be very hard to guess what code is still running. And this dialog doesn't give much information. It would be great if this dialog could show exactly which VI (with full information of what reentrant copy of the VI it is) is still using the class/VI. Even better if you could click on the filename in the dialog to open the VI.

When tabs are on the side, the text should be correctly oriented:

tabs.png

The current method override window is not very useful. My idea is to add a display for method ICON, CONNECTOR PANE and description so that I know what I'm overriding.

ice_screenshot_20151218-115416.png

idea.png

The In Place Element (IPE) is great and so are Data Value References (DVRs).... but... well sometimes I'm not such a great programmer and I will cause a dead lock in my code causing what looks like a "hang". Debugging can be hard in that case when trying to figure out which vi was trying to access the DVR. Also if I'm using the dvr for some sort of global storage, i may want an error to ocurr if some piece of code holds onto the DVR lock for too long. 

 

I'd love for the IPE to have a timeout when you have 1 or more DVRs and if ALL of the references are not available in the specified time, the structure returns an error. 

The Duplicate Frame method of the DisableStructure class in scripting currently returns error 1072 ("This property or method is not yet implemented"):

 

dupframe.png

 

If we could programmatically duplicate frames in Diagram Disable Structures or Conditional Disable Structures, Quick Drop and other G-based editor features could benefit.

I have just noticed a difference of 2 pixels in the width of the input fields of the Label and Caption.

 

Spoiler
Although they don't look like, in below example, the label and caption are the same.

 

Label_Caption Width.jpg

As seen here, the property pages are sometimes like swiss cheese, i.e. full of holes! Useful and often-used properties are missing, even though they are available via right-click.

 

One example is "Loose Fit". There is no logical explanation why it has been omitted from the scales property page. I suggest to add it!

 

Here's how it could look like:

 

 

 

IDEA: Add "Loose Fit" to the property page.

 

I'm currently doing a bit of UI wizardry with subpanels and wanted to use the Subpanel.Mouse enter event and was kind of surprised to find that it did not show up at all in the controls on my Events Structure.  I have to use a UserEvent to get any kind of activity going.

 

I would like the usual mouse and keyboard events available for a subpanel please.

 

If this is in 2012, please ignore.

 

Shane.

I often need to convert various date/time strings to and from a timestamp.

 

Every time I use the Time Stamp Properties dialog to create my string, I want to bang my head on the keyboard.

 

If you select Absolute time format codes and change the Format string to %<>T, then add an absolute specifier such as %b, the pulldown reverts to Relative time format codes and you have to re-select Absolute time format codes repeatedly for each element you want to add inside the format string for which you have already set the type to Abslolute.

 

Modify the dialog to recognize the overall formatting %t or %T and leave the pulldown to the appropriate setting.

 

LabVIEW DateTime formatting.PNG

Inspired by this discussion, I was wondering if control shortcuts could be useful.

 

A control shortcut points to a real control and looks and operates exactly the same (except in edit mode it could have a little arrow in the lower right corner indicating that it is a shortcut. e.g. similar to a shortcut icon in windows). There is only one terminal on the block diagram, but the control can be operated equally from the real control or from the shortcut. In run mode, the operator would not know the difference.

 

The same would also apply to indicators: only one terminal, but several indicators (one normal, others are shortcuts) showing the same information.

 

This can be useful for complex UIs with tab controls and would eliminate block diagram clutter.

 

LabVIEW logo.gif  + $2  =        LabVIEW logo.gif  +LM3S8962.jpg

 

 

This idea was actually thought of by falkpl as presented in http://forums.ni.com/t5/ideas/v2/ideapage/blog-id/labviewideas/article-id/18123/page/4#comments . I’ve taken the liberty to post it as an idea.

 

The concept is simple. LabVIEW Embedded for ARM has very few sales. But it’s an interesting product. Given the low level of sales, why not fold in LabVIEW Embedded for ARM into LabVIEW on a revenue neutral basis. That is, take the current price of LabVIEW Embedded for ARM multiply it by its unit sales and divide by the unit sales of LabVIEW (desktop). Take this amount and add it to the price of LabVIEW and include LabVIEW Embedded for ARM as part of LabVIEW. falkpl’s estimate is that this would add about $5 to the price of LabVIEW. My estimate is more like $1, so let’s take the geometric mean of $2 (why quibble when LabVIEW costs $4499).

 

The LabVIEW Embedded for ARM target board is a Texas Instruments EK-LM3S8962, which sells for $89 and is open source. That is, once you’ve got your application running you can cut-and-past the relevant portion of the board’s hardware and use it in your design. Or you can just use the development board. It’s up to you and probably mainly depends on volume.

 

I believe that folding in LabVIEW Embedded for ARM into LabVIEW (desktop) will increase the popularity of LabVIEW. What LabVIEW programmer wouldn’t like the possibility of programming a microcontroller  in LabVIEW, even if they never get around to it?

 

Wouldn’t it be great to use LabVIEW capable of programming a 32-bit microcontroller for just $2 more?

 

 

P.S. To make this truly revenue neutral, if LabVIEW sales increase more than otherwise projected, which I suspect they will, the LabVIEW price should be reduced accordingly. In the end, I believe LabVIEW would have more features and, because of more unit sales, a lower price tag. Yippee.

 

When a diagram grows during the development process it's a normal act to select a part of the diagram and call the function "create SubVI".

Doing it in the opposite way (LV 2009) is very time consuming: open SubVI, go to diagram, select the code, copy, going to the main VI, removing the original SubVI, increasing the space, paste the code, re-wiring everything

=> what I really would like to see is a simple function that replaces a selected SubVI by its diagram code.

In the Context Help for the Prompt User for Input Express VI (Functions palette » Programming » Dialog & User Interface), it says that you can use the VI to prompt the user for a password.  However, there is not an option for a "password" data type when configuring the VI, and thus any curious onlooker would be able to read your password if this VI was used!  Why not add a "password" type to the configuration options (see picture)?  Sure, you can build your own VI to do this already, no problem, but it still kind of makes sense to have the password data type as an option.

 

passwordinputdatatype.png

This idea is all about culling clicks.

Example:

 

I have created a subVI based on another VI and I realized that I needed some additional input from the calling VI to perform the task within the subVI:

 

ScreenHunter_001.jpg

 

Since I want to get the right data structure, I can't really create a Control within the subVI, add it to the connector pane and connect the corresponding data from the calling VI.

So I need to:

 

1) Go to the calling VI

2) Drop a dummy Sequence structure on the BD

3) Pull a wire from the data structure I want to connect to the subVI and connect it to the dummy Sequence

4) Create a subVI from that sequence

5) Copy the resulting control on the subVI's panel

6) Destroy the temporary subVI (that involves a "Do you want to Save this VI?" dialog, so it is really a two-step process)

7) Go to the target subVI

😎 Paste the Control

9) Connect the control to the Connector Pane

10) Go back to the main VI and connect the data

 

What I suggest is to replace all these steps by a 2-step process:

 

1) Pull a wire from the data source

2) Bring that wire OVER the target subVI and by a magic combination of keypress and mouse click (for instance "I" for "Insert" and a Right-Click), open up a dialog allowing me to connect that wire into an available connector on the target subVI (a Control being created in the process - I am fine with having to convert it to an Indicator later).

Basically, this "action" would provide access to the connector pane of the subVI with an automatic creation of a control upon clicking on the connector. Existing rules for Control name generation would be fine.

 

Something like that:

 

ScreenHunter_003.jpg

 

The interface could switch from the subVI icon view to the connector pane view, for instance.

 

I find myself wanting this alot for things as simple as passing a Graph reference to a subVI, where I want the reference to correspond exactly to the graph type.

 

I looked for a similar idea, but I didn't' find anything. I find that hard to believe, so I may have missed it somehow.

 

LabVIEW has arrays the dynamically grow. This is great. Love it. It makes it very easy to do things like Loop A below.

 

But that can lead to performance issues as LabVIEW constantly has to allocate new memory as the array grows. However, and this is important, LV is smart enough to over allocate so that not every append results in new memory allocation. Somewhere in the LV code NI is keeping track of the size allocated and the size used.

 

If performance is a concern, we've always been told to do something like Loop B. Preallocate a big array and use Replace. But there are problems here. First, a lot of the built in array functions will return 'wrong' values (Array Size, etc.). Second, what if the initial size is just a best guess. If we need something larger (say 5050 elements), we have to have a special case to Append instead of Replace once we hit the initial allocation. BUT, LV is already doing all this internally, it just isn't exposed to us in a way that we can take advantage of.

 

So, I propose Loop C. (sorry, too lazy to create a good icon). This new primitive would return an empty array (like Loop A), but with memory already allocated for a much larger array (like Loop B). LabVIEW already has the code to handle this. So, if we know the array will grow to ~5000 we can preallocate that amount, have all the built in functions work and not have to worry about going over 5000.

Allocate Array.PNG