LabVIEW Idea Exchange

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

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.

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

I was told by a NI engineer to use DETT and, although it should have been clear that I was using LV 64 bit, I had to discover by myself that the version I downloaded was 32 bit only. The engineer recommended I installed LV 32 bit (to debug the performance of my 64 bit app, seriously?)...

Same for the VI Analyzer folks. Provide a 64 bit installer. I never was able to get it work in 64 bit despite the supposed workaround suggested by the developer.

 

Although it's already possible to programmatically edit items in an enum or ring control using the strings[]  and StringsandValues[] properties, it might be much easier and user-friendly if it were possible to directly copy and paste an array of items and values  (i.e. from and Excel file) into the editor itself.

If you install anything (anything!) from NI on a computer that runs windows 8 or newer, you will get bugged by a dialog to disable fast startup. The option is enabled by default, no matter what you install. It will popup with every single install, even minor patches, and even if this option has been intentionally unchecked in the original installation to be patched. If you don't want to disable fast startup, it is a never-ending whack-a-mole of these dialogs. (... but the need to disable fast startup for some scenarios is a more general problem that NI needs to address. It could be a new idea, but I think NI is aware of this problem. It might even be something that Microsoft could address such that devices don't get lost in the scenarios where fast startup causes problems)

 

This idea is centered around executables that we built and distribute via installers..

 

While this option (=disabling fast startup) can be useful when certain DAQ hardware is used, it makes absolutely no sense for other LabVIEW programs. Most of my programs don't use any DAQ hardware and it is not reasonable to globally cripple every single computer that has them installed. People tend to click [next] without reading, assuming that the defaults are typically reasonable.

 

Currently, this install query can be silenced by editing the setup.ini and changing the entry "WinFastStartup=1" to "WinFastStartup=0". I have built dozens of applications over the last few days and it is becoming seriously annoying to constantly remember to do that.

 

I suggest that the installer builder should get another checkbox that allows us to set that option permanently. Here is how it could look like.

 

 

  • Checking that box will give the current experience where the installer asks to disable fast startup. (it could even be checked by default to mimic the current default behavior)
  • Leaving the box unchecked will skip that dialog and will not disable fast startup.

 

IDEA SUMMARY: Allow us to configure the fast startup dialog from the installer builder tool.

 

 

CVI allows for color modification of the sweep line in a sweep chart (ATTR_SWEEP_LINE_COLOR), but LabVIEW does not allow any modification of the sweep line.

 

It would be nice if the developer could change sweep line width and color to make the sweep chart fit better visually in a customer-facing UI.

Add the ability to zoom in and out of any section of a graph using the mouse scroll wheel natively in LabVIEW. Today when we want to see more detail on a computer, we simply move our mouse to a section of the screen and then holding a modifier key like Ctrl we roll the mouse to zoom in for more detail.

 

I've created an example that performs the actions I would like LabVIEW to do natively.

 

Mouse Zoom Example