LabVIEW Idea Exchange

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

There should be an option to fully enable optimization when building an application as to automatically remove performance impacts caused by diagram elements that shouldn't cause any.

 

As summarily declined by NI, this idea

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Improve-Diagram-Disable-performance/idc-p/3253939#M34372

 

shows that unless you manually go over ALL your VIs disabling debugging, Diagram Disables (that are supposed to not avoid executing some code!) you'll suffer a performance impact.

 

It is preposterous to expect the users to manually disable/reenable debugging on every single VI when building an application.

 

Please add an option to enable full optimization.

 

Untitled.png

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.

FPGA code allows I/O references to be used so that code can be re-used/abstracted, like this

FPGA-SubVI.PNG

This could/should be extended to cRIO C-modules so that code can be re-used on multiple modules. This would require the 'cRIO Device' property node to return an array of I/O Refnums that could then be passed to subVIs or other modular code.

 

For example, if I have code for an analogue input module (say, NI 9205) which filters and processes the data, and I wish to re-use that code in multiple experiments I have to manually change the module name in each IO constant or node (Mod1/AI0 to Mod3/AI0) if the module moves or I need more than one of the same type.

 

Conversely, if the cRIO Device property could provide the I/O references, the code could accept a cRIO Device constant and the reusable code extract the I/O references. The code would then adapt from Mod1/AI0 to Mod3/AI0 as the cRIO device was changed from Mod1 to Mod3.

 

It would be added to these properties.

FPGA-cRIO-Prop.PNG

 

Thanks,

Richard.

 

When searching for text in LV 2014 (from 2015 DS1), it appears that the Window Title text isn't picked up by the search. 

 

To verify this, I created a new VI, and modified only the Window Title (File -> VI Properties -> Window Appearance -> Window Title, Click OK, Save VI).  Then press Ctrl + F, Select Text, type in a word in the Window Title.  Not found .

 

We should be able to search on any text saved anywhere in the VI (in cluding VI properties like Window Title).  Please expand the find capability to search Window Title and any other relevant fields.

I really could do with the Ethernet/IP toolkit to act as a scanner rather than just an adaptor. As an adaptor you can write code that will allow a PLC to scan and request data from you, which is fine if you only want a PLC to request data, but I have the requirement to have my Labview app act as the scanner and request data from several different adaptors.

Capture.PNG

User Colors 1-16 are now pre-defined by the default LabVIEW.ini file  that leaves us developers with only two.  Why 18 total?  This needs some adjustments IMHO!  It should be easy to implement but, can't be done without hacking the ini editor

TensorFlow is an open source machine learning tool originally developed by Google research teams.

 

Quoting from their API page:

 

TensorFlow has APIs available in several languages both for constructing and executing a TensorFlow graph. The Python API is at present the most complete and the easiest to use, but the C++ API may offer some performance advantages in graph execution, and supports deployment to small devices such as Android.

Over time, we hope that the TensorFlow community will develop front ends for languages like Go, Java, JavaScript, Lua R, and perhaps others.

 

Idea Summary: I would love to see LabVIEW among the "perhaps others". 😄

 

(Disclaimer: I know very little in that particular field of research)

 

I created an application that talks to a SOAP webservice. Unfortunately the NI HTTP does not support https behind a proxy (using the connect method). See this thread. It is unfortunate, since the curl library underneath is much more powerful. I have to overhaul my code to implement another solution.

Encrypting http transactions with configSSL.vi is cumbersome as well. The documentation on this VI could be much better. 

 

HTTP Client.png

Starting in LabVIEW 2015 we got a neat new function that can create a unique file path, and allows to not overwrite a file that might exist with a similar name.

 

Increment file.png  

 

 

This is such a cool function and I could think of a ton of places where I needed to save some temporary data and just wanted a unique name expecteing files to be cleaned up later.  Or give the user a checkbox which wouldn't overwrite the existing data, and then not need to worry about generating my own unique name.

 

Alas this function fell short of my expectations.  Why?  Because it creates the stupid file, and returns a reference to it, instead of just generating a path that I can use.  What if I want to use this with the report generation toolkit and generate a unique file name?  Well you can but you need to close the file reference it made, and possibly delete the file.  Same with if you want to use this on a TDMS file, or a Configuration INI file, or a zip, etc.

 

I suggest either adding another function (polymorphic?), or making an optional input to this function, which does everything it currently does except don't run the Open/Create/Replace function there by making the file, and returning a file reference.  Every time I've used this function to date it has been followed up with a Close File, then a Delete function.

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

tabs.png

 

                                            "Build Path" should be Growable

 

                              something like this,

 

 

toto.png

There has been always the need of opening the file/folder location in windows explorer, but I guess every application uses the trick of doing it through "System Exec.vi" or "Open URL" or Win32 API.  There is no LabVIEW native function to directly open folder/files in windows explorer directly.

 

Below threads discusses various methods to achieve this...

http://forums.ni.com/t5/LabVIEW/Use-LabVIEW-to-open-Windows-Explorer-to-a-certain-directory/td-p/898...

https://lavag.org/topic/11395-opening-windows-explorer-to-a-specific-directory/

https://lavag.org/topic/18444-open-windows-folder/

https://decibel.ni.com/content/docs/DOC-14633

https://decibel.ni.com/content/docs/DOC-22461

 

It would be nice if LabVIEW comes with some native function like below

 

File Folder Idea Exchange.png

What if you need to run exe as admin mode?

 

Currently Build Specifications is not enought for doing it.

Here you are what you need to do:

 

1. Built the executable

2. Install mt.exe (https://www.microsoft.com/en-us/download/confirmation.aspx?id=8279)
3. Opened cmd as adminstrator and ran mt.exe -inputresource:"Application directory\application.exe" -out:application.manifest
4. Opened application.manifest and changed input="asInvoker" to "requireAdministrator".
5. Saved application.manifest
6. ran mt.exe -manifest:application.manifest -outputresource:"Application directory\application.exe";#1

 

Is it an effective method?

 

It would be better the following:

1. Create Manifest

2. Easy modification in My Application Properties

Capture1.JPG

 

 

Hope it helps to do a more effective LabVIEW!

 

Álvaro

Currently enums can not be in a cluster that you want convert to JSON. It would be great, if this could be added.

 

Either the enum value could be converted to its internal representation (e.g. u16) or the value could be saved as a string (make it easier to read the JSON and parse it outside LabVIEW).

 

The unflatten should be able to handle the u16 easily to convert back to enum or take the string and search through the enum of the datatype that one has to connect to the vi. If there is no match the VI can issue an error.

 

I would like an autoscale option on XY graphs that would autoscale both axes under the restriction that the resulting grids be square. That is, there are three parameters, not four - X offset, Y offset, and pixels-per-unit-for-both-X-and-Y.

 

So, if I graph, say, a bunch of points along (x/5)^2+Y^2 = 1...

 

Presently, if I graph that, it will look like a circle.

 

It would be nice if the resulting ellipse would look 5 times wider than it is tall.

I've already made a post on extending File I/O operations so I figured why not make a post on my most commonly used OpenG palette, the array palette.

 

There are so many good nuggets of Array manipulation code in OpenG.  This stuff isn't perfect, and could be optimized, but the convenience of it makes sense especially when you realize there is so many things you can do with arrays.  Lets start with the Index Array, one of the most commonly used functions.

 

index.png

 

Here we see the native function allows for an N dimensional array to be indexed.  The OpenG function only supports 1D and 2D arrays.  And when using a 2D array, the OpenG function must specify both a row and a column, you can't index an entire column or row.  Both of those are very useful features of the native index, but there is something the OpenG function does, that the native doesn't, and that is index multiple indices.  You can pass in an array of indices and pull them all out in the order defined.  This can be used as a reorder function that takes an array and scrambles it the way you like.  Adding this feature is already on the idea exchange.

 

Delete.png

 

Again when it comes to polymorphism the native function beats OpenG.  The native delete supports deleting from N dimensions where OpenG is just 1D or 2D.  But OpenG allows for deleting multiple indices from an array, and if it is a 2D array you can specify if you want to delete rows or columns.  This would be a nice addition to the native function.

 

cond index.png

 

A conditional auto index function doesn't exist natively in LabVIEW.  You can perform a similar function with the conditional auto index tunnel on a for loop but having a single function would be useful.  This idea is on the exchange in multiple places, Link 1, Link 2.

 

Remove filter.png

Ever need to remove duplicates from an array?  Or remove all zeros or NaNs from an array?  These two functions do just that and on the forums all the time are requests for functions like this with no direct replacement on the native palette.  A nice feature of the remove and filter are they output the indices that were removed.  Combined with the fact that the delete, and index accept multiple indices make these very useful.  Also the items to filter for the filter can be a scalar or array which is nice.

 

sort.png

Ever want to sort an array and know how it was sorted?  This OpenG function can do that along with specifying what order, ascending or descending to use.  The OpenG sort also supports 2D arrays where you can specify if you want to sort on rows, or on columns.

Index Array with type conversion function like “Scan from String”

original.png

Currently there are only limited key's that can be pressed, some of which don't show up on some keyboards (like mute and play)

 

Toggle.png

 

It would be useful to have letters, numbers and arrows added for more adaptable controls.

(This is different and less controversional than  this related old idea)

 

Arrays of timestamps only contain legal values and can even be sorted. We can use "search 1D array" to find a matching timestamp just fine.

 

As with DBLs, there might be a very close array value that is a few LSBs off, but well within the error of the experiment so it is sufficient to find the closest value. We can always test later if that value is close enough for what we need or if "not found" would be a better result.

 

If we have a sorted input array, the easiest solution is "threshold 1D array" giving us a fractional index of a linearly interpolated value. For some unknown reason, timestamps are not allowed for the inputs, limiting the usefulness of the tool. One possible workaround is to convert to DBLs, with the disadvantage that quite a few bits are dropped (timestamp: 128 bits, DBL: 64bits).

 

Similarly, "Interpolate 1D array" also does not allow timestamp inputs. In both cases, there is an obvious and unique result that is IMHO in no way confusing or controversial.

 

 

 

IDEA Summary: "Threshold 1D Array" and "Interpolate 1D Array" should work with timestamps.

 

 

 

Remote front panels are easy to get working and do a great job of viewing and controlling front panels for existing LabVIEW programs. It is not the best approach for providing LabVIEW functionality in a web page, but can be up and running quickly. The problem is that there is very little security built into the LabVIEW Web Server. Years ago, when it was using the G Web Server, you could use simple HTTP authentication via htaccess.txt files. That feature is no longer supported. You can embed the control in a web page hosted by another web server and have the control point to the LabVIEW web server. This provides an outer shell of authentication and security, but still exposes the vulnerable LabVIEW Web Server to potentially malicious actors. The existing locks on IP address do nothing to protect against other users behind the same firewall.

 

So, my request is to simply provide better security and authentication features for the LabVIEW Web Server that is serving up remote front panels. Just re-implementing basic HTTP authentication and restricting access to folders via htaccess would go a long way with (I presume) not much effort. NI could even switch to an open source web server with existing authentication capabilities and customize it to serve front panels. Or provide a custom module/handler/action for Apache (or similar for IIS) to serve front panels.

 

For a feature that has been around for so long, I am surprised that security and authentication functionality has not been improved or updated.