LabVIEW Idea Exchange

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

Problem: while handling file I/O functions , connecting the wires between File functions like Reference , Error etc. takes time.

 

Solution: some of File I/O function intelligent(auto) wiring by keeping function on top of one function and dragging the function.

 

File IO.JPG

 

I would like to watch the series of videos from 2012 about learning Advanced Architecture.  I would like to follow industry standards to ensure that I am building an architecture that will be understood by developers. 

 

I did a bit of research and somehow I managed to unlock the course as a student.  I went back to finish the course today and it switched to "you are not entitled to training courses".  I mean fair, but I feel pretty entitled to steer people away from LabVIEW if they come to me with interest in it...  

 

I'm not understanding how this model can possibly make more money than having more LabVIEW developers.  Easy access to training = more developers = more hardware purchases and certification puurchases right?  Am I missing something or is this model as bad for share holders.

 

 

I just noticed the Find VI's Callers option isn't available when trying to find callers for a vim file.

 

this_vi_callers_vim.png

 

So the idea is to allow this option for malleable VIs!

Hi community

 

"propose to extend hashing function to include string for hashing sensitive information (1-way)"

 

currently hash function is polymorphic and accepts only path as input, perhaps:

- input terminal can accept both string and path, determining type internally and change accordingly, and

- instead of polymorphic, enum terminal instead?

Sometimes it would be useful to get the index in the set. 

Could then replace Search 1D array in this :

gnilsson_0-1597300452773.png

 

The key input of the Map Get / Replace Value node of an In Place Element structure is not a required input. This can lead to bugs, where a developer may have forgotten to wire the key. All other Map primitives require the key input.

map_node_key_input.PNG

The idea is to simply make the key a required input.

 

(The map isn't a required input either, but has a documented default. It should probably be required too though.)

Please create a meaningful error message in case the application builder errors due to long path names.

 

The error below was ultimately fixed by shortening the output path in the build spec. It took me however more than half a day of fiddling around with alternative solutions to reach my end goal (https://forums.ni.com/t5/NI-Web-Technology-Lead-User/Hosting-WebVI-on-cRIO-following-KB-article/gpm-p/4061052/highlight/true#M282).

 

While explaining it to my colleague it hit me that the build output path could be too long, shortened it, built it, deployed it, and it worked.

 

 

Build error.PNG

When setting the inheritance of a class, you're only able to select classes that are currently loaded into memory:

carls___1-1590710186323.png

If you're not working within a project (which I do commonly to keep things zippy), chances are the class you're looking for isn't loaded.  It'd be great if there was a browse button on this UI.

 

(The workaround is to open the class you want to inherit, but that class can't be opened simultaneously because of the modality of this UI and that it'd need to refresh, so you need to close out of this window and the class properties window and then reopen both.)

The Clean Up Panel menu option in LabVIEW 2019 messes up the labels for Image Controls. I have only noticed this with image controls that don't actually show the image.  See the attached pictures.

Before Clean Up Panel is chosen:  Notice all this vi is is the two controls on a front panel.

CleanUpPanel Before.png

 After Clean Up Panel is executed.  (I had to scroll a bit to show where the labels ended up)

CleanUpPanel After.png

 I have only noticed this with image controls.  It may happen with others as well.

NXG needs an Idea Exchange.  The feedback button is a lame excuse for a replacement.  Why?

 

  • I can't tell if my idea has been suggested before.  (And maybe someone else's suggestion is BETTER and I want to sign onto it, instead.)
  • NI has to slog through bunches of similar feedback submissions to determine whether or not they are the same thing.
  • Many ideas start out as unfocused concepts that are honed razor sharp by the community.
  • This is an open loop feedback system.

Let's make an Idea Exchange for NXG!

There are some property nodes and methods that will fir the text in the indicator/control by resizing the control/indicator vertically.
This option is great but when you spend a lot of time organizing your front panel this option is not elegant nor suitable for your project and the user is not able to see the whole string

Like "Dequeue Element", but removes and returns the element in the back of the queue instead of the element in the front of the queue.

 

Like "Enqueue Element At Opposite End", but dequeues instead of enqueues from the opposite end as normal.

 

This would allow queues in LabVIEW to be used as double-ended queues (also called dequeues or deques, pronounced "decks"). It is already possible to enqueue elements on either end of a queue. It would make sense to also be able to dequeue elements from either end of a queue. 

 

It would also allow queues in LabVIEW to be used as stacks without having to use "Enqueue Element At Opposite End", which is useful when it is easy to modify consumer code but difficult or undesirable to modify producer code.

At present, using a malleable VI in almost any form alongside PPLs seems to be largely impossible.

 

Of course, a malleable VI is a template of sorts, and a PPL is the compiled form of some library. I can see this makes including the malleable VI impossible (at least without a predefined list of allowed types, at which point you could use the VIM as a private VI and define a set of public or private VIs, then call those from a public polymorphic VI).

 

However, it would be nice if we could define a VIM (either in, or alongside) a library in a project, and have it be placed in e.g. the Support destination (or specified destination via the Build Specification settings).

 

A quick attempt to do this resulted in the following:

  • Create a library with two VIs, one outputting a number and the other a string.
  • Create a VIM that has an input used only for type matching, and a Type Spec Structure for Assert Structural Match on string, int32, output the appropriate matching result type from one of the two (public, in this simple test) library VIs
  • The first case of the TSS is the string one (seems relevant to outcome).
  • Build the library into a lvlibp, with the VIM set to Always Included, and the destination set to Support.
  • The output files are A.lvlibp, Output String.vi, Get Value.vim.
  • A.lvlibp only contains Output Num.vi, not the string anymore.
  • The VIM is not loadable via project (although it opens broken alone), because it calls A.lvlibp:Get String.vi, which doesn't exist.
  • Get String.vi is unloadable, seemingly because it requires (perhaps it expects to be) A.lvlibp:Get String.vi...

 

Could this please be improved? 🙂

 

Ideally the VIM that is placed in the accompanying destination should link to the VIs in A.lvlibp, and none of the VIs should be missing in that PPL.

When you use Sort 1D array function, it sorts items but does not output sorted index numbers. This is a problem especially if a particular 1D subarray is used to sort an 2D array and if subarray has identical items in it. It makes it hard to rebuild the 2D array based on the sorted 1D subarray. If sorted index numbers are provided, 2D array can easily be rebuilt.

Our industry could use a function to export a VI as a text file, similar to how we can export a UIR file in LabWindows/CVI. We are only allowed to move certain file types off of the system, and .VI will never be one of them. The functionality (ie the nodes, parameters, and connections between the nodes) would be the biggest concern of the block diagram and not so much as the physical layout, and a second file could be used for the layout of the front panel. This would also allow us to perform a Diff between two versions of a VI using a 3rd party comparison tool.

From trying to make a malleable VI for some set/map functionality, I cannot seem to find a good way to cause the VIM call to be broken for when the input is not a set/map. It would be helpful to have a Asset Set and Assert Map method added to the Assert Type palette for this. 

Related post 

When creating a SubVI by selecting a piece of code from your block diagram, the "error out" indicator created is not the standard indicator with grey background as available in the controls palette.

On the contrary, it is similar to the standard "error in" control with white background controls.

To me it results  on a poor style and readability, and I use to replace it manually with the palette indicator.

 

I suggest using the default error indicator when creating a new subVI (and anywhere else if possible).Capture.PNG

I think it is useful if the installer automatically 'Force Re-install' if the same software has been already installed with the computer. This will omit the procedure to kick-start force re-installation via command prompt, some users may not be familiar with.

 

 

force reinstallation.png

It would be nice that if someone saved an VI with an earlier LabVIEW version (I.E. LV2013) and I open it with say LV2017, it would 'save' as the opened version and not automatically convert to my version (LV2017) and overwrite the previous file such that others can no longer access it.

 

Maybe this could be done with a pop-up window similar to when attempting to open a vi saved with a later version.  Request the user to determine if they wish to save with the previous version or new version.  Another option might be during the save  feature would be to mention that it is attempting to save an earlier version file to the current version and request user approval.  I spend way too much time using the save as previous for other applications on different machines.  Additionally, it can also inform the user when a save to the earlier version cannot be performed due to new functionality that is not compatible with the later LabVIEW versions.