LabVIEW Idea Exchange

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

Everytime I build an executable I have to provide a custom INI file just to disable the localized decimal point. Please add a checkbox for this important setting to the application builder, e.g. on the "Advanced" page.

Currently when you build an installer the current ini file in the destination directory gets overwritten. The user is generally unaware that this will happen and may lose configuration settings for their application. It would be nice if the user had the option to not overwrite the file during the installation.

When I have large projects with lots of classes, Labview's edit time environment slows down to a painful crawl.  Almost every meaningful action triggers a recompile that gives me a busy cursor for 3-10 seconds.  My productivity falls off a cliff and I avoid making important changes in favor of the cheap hack.  (The dev environment has high viscosity.)

 

I often wish there were a way to turn off the compiler while I make a set of changes.  I'm not interested in the errors at every single intermediate state of the code while I'm making the changes.  I *know* the code will be broken after I delete some nodes or wires.  Let me turn the compiler off, make my changes, and then turn it back on for error checking.

 

I'm sure there are lots of different solutions to address this problem.  My preference would be to make compiling faster so it is unnoticable.  I doubt NI will ship me a new computer with the next release.  My second choice would be to stop loading all of the class' member vis when any single vi is loaded.  I vaguely remember a discussion about that some time ago and it wasn't practical to do that.  That leaves me my third choice--more control over what automatically compiles when I make edits.

 

It could be something as simple as Ctrl-Shift clicking the run arrow to toggle auto-compiling at the vi level.  Or it could be a right click option in the project window that controls auto-compiling for an entire library or virtual folder.  Either would be okay; both would be nice.  

 

(For that matter, it would probably be a lot cheaper if NI just shipped me a new computer...)

The Combo Box is a useful means of linking "machine readable" strings and human readable text.  Unfortunately the current item editor lacks a key feature.

You cannot enter special characters (escape codes) or nonprinable characters \FF since any "\" entered is replaced by the "\\" escape  This means that if I want to add any non printable char to a value I need to write a vi to edit the strings and values property interactively and then type-def the control.   to edit the typedef I again need to disconnect from type def edit the strings and values from a vi, create a new custom control (no type def) and replace the original control in the type def with new control and apply changes.  Kinda a pain!  Again the values property will accept any string so this is only an items editor feature and does not change the combo box object in any manner

 

Many embedded applications use non printable characters in the commands. Most commands translate well into human readable text.  the combo box's auto completion feature allows an intellisense like feel to the UI but the difficuly mapping HRT to strings with non-printable characters seriouly increases the development and maintainence of these controls

It's pretty tricky to align objects on different cases or on different tabs. It would be nice if clicking the tabs or the case select didn't deselect the first control. The originally selected control could appear in a dotted outline.   

It might be nicer to have a simpler interface to read/write routines for class references.  The fact that the bundle/unbundle is now an asynchronous operation needs to be displayed as does some sort of error terminal.

 

ShortClassReferenceIdea.jpg

Don't have enough time to make any fancy pictures or diagrams, but the idea is simple. When cleaning up VIs, I find myself constantly switching my right hand between the mouse and the arrow keys. It would be really slick to be able to move highlighted FP/BD objects with a CTRL + Mouse Scroll combination. Here's my thoughts on what the combinations could be:

 

CTRL + Mouse Scroll Up: Move highlighted object(s) one pixel up

CTRL + Mouse Scroll Down: Move highlighted object(s) one pixel down

CTRL + ALT + Mouse Scroll Up: Move highlighted object(s) one pixel right

CTRL + ALT + Mouse Scroll Down: Move highlighted object(s) one pixel left

 

And to get really fancy...

 

CTRL + SHIFT + Mouse Scroll Up: Move highlighted object(s) several pixels up

CTRL + SHIFT + Mouse Scroll Down: Move highlighted object(s) several pixels down

CTRL + SHIFT + ALT + Mouse Scroll Up: Move highlighted object(s) several pixels right

CTRL + SHIFT + ALT + Mouse Scroll Down: Move highlighted object(s) several pixels left

We have cloud computing, virtual Machines, CPU virtualization etc. - There are numerous ways of achieving parallel and distributed computing, available at different architectural levels. The inherent parallel nature of the LabVIEW graphical programming means we can often achieve parallel computing without thinking.  

 

-But in cases where the programmer actually needs to make a decision we now have the Loop Iteration Parallelism option.
If an action is to repeated multiple times and the execution of each run takes longer than the overhead of communicating the input data, execution code and/or output data across to multiple targets, parallelization can reduce the total execution time, and/or reduce the load on each target. Now, in some cases the execution time can justify parallelization even across slow communication channels. 


What if we expanded the user-friendly loop iteration parallelization mechanism to also support remote processors?

 

  • On the targets we want to offer as execution hosts we will need to install a host service. This service might offer us the choice of offering all, or just a subset of the available cores.  Perhaps even decide this based on the current load on the target, or time of day(!). The targets can be of different platforms as long as the code is possible to recompile for it.

 

So how would this look like to the programmer? Well, we simply extend the for loop parallelization function dialog to something like this:

 

For Loop Iteration Parallelism Across Targets.png

 

  • The loops should also allow this setup to be changed at run-time. You could have a general VI to define the default targets and establish a link to them, and each for loop could have input terminals to specify the parallelism options to be used at the time of execution.

  • Another fun consequence of this functionality would be that you can really distribute *any* part of you code across multiple targets simply by wrapping it in a 1-iteration only loop.

 

With this functionality in place getting 10 machines to work on a heavy problem instead of just one would really be as simple as drawing a for loop...Smiley Very Happy

Whilst pondering Chris Relf's presentation on LVOOP based error handling for NI Week, it occured to me that it would be really nice if it was possible to define LVOOP methods that would be called automatically when LabVIEW needed to convert a class to a different (eg built in) type.

For example, imagine I have a class for handling errors - the obvious thing to do is to wire that class wire into a case structure selector and provide cases for error/no error. Of course that won't work, but if I could define a method that takes my class in and outputs an error cluster and was somehow appropriately marked so that LV would automatically call it, then the case structure could automatically do 'the right thing'.

The inverse functions that build a class from another type would be a form of constructor for the class that might be useful - e.g. I have a class that represents a measurement, wiring a path control into the class terminal causes LabVIEW to run a method that I have defined and appropriately marked that loads the measurement from disc and initialises the class.

There are a few problems I can immediately see - if one defines two possible conversion methods (e.g. class to error cluster and class to enum) one needs to have a way of defining which one is used (right click on terminal of node would seem the most obvious to me) and you'd probably want a specially covered coercion node as well....

Motivation: in my recent project I have got a request from the end user that it would be nice to store configuration data in the same TDMS file where we store measurement results. Of course, we can create this feature programmatically, like we parse through the typdef cluster, using label names and different data types, we can create a kind of API for a TDMS Cluster read/write. However, it is difficult to make it generic, and this is an extra work anyway.

So it would be nice to save my complex Typdef cluster into TDMS, where I store measurement results in a user readable manner (via the Excel plugin) inside different groups and channels. The stored configuration cluster does NOT need to be user readable!

Since TDMS does not have this feature, as a dirty and simple workaround, I will always produce two files during measurement/data processing sequences: a TDMS, and an INI file (via the OpenG Write INI Cluster), then programmatically ZIP them into a single file for data backup (for future reference, it is safer this way).

 

Would not be nice if we could just write a Typdef cluster to and read from a TDMS file directly?

Like what we can do with the OpenG Read/Write INI Cluster VIs. I understand there is a strong reason why TDMS files limit the data types we can write to them, and it is not allowed to use undefined data sizes, like Variants, strings. Well, we can write strings to TDMS files, but there are some issues/difficulties with this approach if we want to go through a Typedef Cluster->String->TDMS file storing route. Hoovahh had a post about these challenges 2 years ago, where he mentioned he might make it into an Idea, but I could not find it in this forum board, so I make it an Idea: https://forums.ni.com/t5/LabVIEW/Read-Write-Variant-to-TDMS/m-p/3334203 

 

I imagine, NI could implement such feature into TDMS in a similar way, like there would be an "internal part" of the TDMS file where the Cluster is stored as a Variant in binary format. I do not know how the internal things work in a TDMS file, but I imagine such new feature implemented as an extra data type for the TDMS Set Properties would not hurt the speed performance of the Group/Channel level things...?

enumsnap.jpg

If you create a enum constant on the block diagram, then right click and show label and show digital display.

When you move the label around, it will snap to the corners (and middle of the sides) of the enum constant.  However, when you move the digital display around, it will NOT snap to the corners like the label will.

It would be nice if the digital display would also snap when you move it.

I want to be able to add a dynamic tag like <my exe version> to the Welcome title and Welcome message the installer displays to the user when they run the installation.  That way, they can see what version of the exe they are installing. 

I am using LV 2012 DS2, I am building installers and want to use the Welcome message (in the installer) as a dialog to convey some information about the program to the user as I have various levels of installers.  The problem is that the screen pops up for 5 seconds and you can't read it, it goes away to quick.  There is room for a reasonable message, but not enough time to read more than 1 sentence before the screen goes away.

 

Sure, I can do work arounds, like loading a simple VI to display a message, but I don't think its as elegent as using what is already there.

 

Adding a settable timer and/or OK button for the welcome screen dialog allows me to keep my installer project information integarted hwre it should be in the installer portion of the build.

In LabVIEW 2009 we have the ability to ask LabVIEW to clean up the code of a selected part of the diagram. Unfortunately though the developers of this feature allowed themselves to do something the user would not expect at all - namely to adjust the surrounding code as well during this operation....One might say that instead of taking the selection as an absolute border - they feather the selection...This will typically produce effects that the user did not want...in fact, if he did - he would have selected that extended area of the code in the first place.

 

Let's say that I have made a perfectly layed out code...but in the middle of the data flow there is one case structure that is messy. So - I select the case structure and expect this to leave the surrounding code absolutely untouched...but what happens? It allows the "interface" between the selected code and the rest of the code to be modified, and messes up what was already good code - that was not marked for clean-up(!).  A very bad behaviour.

 

Please rewrite this so that it keeps the interface to the rest of the code fixed.

 

PS. This was initally added as a comment to the original idea for a selectable clean-up area that I submitted in 2009*, but on request I've subitted this here as a new idea... (*NI probably came up with that idea by themselves before that though, but at the time it was not known to the public).

Message Edited by Mads on 06-03-2010 08:50 AM

I think there should be an editor option to color the background of structures (while loop, for loop, case, event, etc), based on nesting depth (e.g. only at odd levels), that doesn't have to be saved with the VI, and therefor isn't forced on everyone, but is "opt in" based.

 

Rationale: I have occasionally seen people color the background of alternating nested structures. My annoyance with it is that there is no standard. One person colors every structure a different random color, another person carefaully uses a single shade of blue for the alternating diagrams, most people don't do either. I think that the option should be a local editor optiion. Like the "show constant folding of wires" option. That way, those that want it, can have it on all the VIs they look at, and those that don't care, can leave it off.

 

pic.png

Cleaning up block diagram always mess up my intention on placing blocks then I prefer to manually move around my blocks.

 

1. When I to move a function block, I want its inputs and outputs to move together with it.

2. True visible grouping like in "powerpoint" with relative position fixed

Strict Type Def Text Ring does not auto-update constants. Since NI support says this is expected behavior (http://digital.ni.com/public.nsf/allkb/46CC27C828DB4205862570920062C125) then the right-click pop-up menu item that is checked be default indicating that it will be updated automatically should be hidden, disabled (greyed out), or uncheckable so developers are not mislead to believe they will be updated. This has caused defects and when found requires much work to search for and replace all the constants, if a value is inserted for example. They did not want to create a CAR for this.

Steps to Reproduce:  

Given x.ctl on disk, create new VI, drag x.ctl onto block diagram, right click, Open Type Def. It opens x.ctl in its own window. Right click the control, Edit Items..., change the name, position, or add item. File Save, File Apply Changes, Close. Look at the block diagram constant. It does not contain the change just made. Right click, Auto-Update from Type Def. is checked and Open Type Def. opens the .ctl where the new values can be seen. Replace with and browse to the x.ctl does not update the constant. However, Change to Control or Indicator does update it and then after change back to constant it will reflect the right content.

Signing in Build Application Dialog.pngWhen I try to build a signed application or installer, the build fails at the end of the build because of bad signature data. This is unpractical because it takes a lot of time for building all data and the entire build must be rerun anyway.

 

When building an executable, the data is deleted when signing fails. (This can be observed when watching the output directory.) The installer is left in place and seems to be working. Not sure which behavior is better. Please unify it.

 

Please check when closing the build assistant and early in the build process

  • that the Personal store certificate exists
  • that the Timestamp URL looks valid (at least is not empty)

 

When the build will not be deleted, maybe a hint could be shown how the code can be signed manually.

When the build will be deleted, please fail early in the build process (when the basic checks mentioned above do fail).

 

 

The attached project shows the currentbehavior. Abuildwill failbecausethereisnocertificatewiththisname. And after a valid certificate is selected thebuildwillfailbecausetheTimestampURLisinvalid.

 

 

Until now I did not succeed in signing a build because I do not know how the timestamp URL should look like. Therefore I already reported that the Timestamp URL should be better documented as a documentation suggestion (from the feedback link in the help). (No link to the suggestion because the feedback form is not a forum, sorry.)

 

There seems to be a control missing in LabVIEW: an intensity plot that will accept data that has been sampled at a variable rate.

 

 It should be possible to specify the time stamps of each block in the plot (like with the XY Graph) so that you can present such data without having to resample it at a fixed rate. 

I have programs where I reuse code. Some of this code is old but work well. I would like it if I had an option to upgrade thing on a global basis.

 

Some things to consider:

Labels (set to transparent or some other setting)

Graphs and Indicators (upgrade to 3d or silver or classic)

 

It would just be nice to be able to make all of the diagrams look the same no matter old the code. I am sure it would have to be a little more complicated than that but sure would be nice.