LabVIEW Idea Exchange

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

I envision a structure much like a case structure, in which you select your event for evaluating the code inside the structure and the values become constants at the node. The interior would allow code that may normally not be able to run on the host for example, on fpga it might allow the use of doubles and strings and resized arrays, because it isn't actually going to be executed on the host just evaluated and stored as a constant. This would allow for more configuration for fpga and even have some benefits at the traditional desktop environment. For example you could set the structure to evaluate on app build and produce a string constant that is the build date so the build date could be shown on UI to help distinguish builds. 

image.png

Is anyone at NI paying attention to this thread?  https://forums.ni.com/t5/LabVIEW/Extremely-small-cursors-on-both-the-front-panel-and-the-block/m-p/3748065#M1055219

 

It is a very serious problem and it needs a solution fast!

LabVIEW's HTTP Request client currently does not support the PATCH method. This method is becoming increasingly more popular within RESTful API's and has been an officially recognized verb since 2010 (RFC 5789). It should be fairly simple to integrate, since LabVIEW runs cURL under the hood and cURL implements it with curl --request PATCH

 

Okay so lets say you have a VI that you developed, and works great on its own.  You have some nice scaling and control manipulation with panes and custom resizing code.  All works great.  Then you realize this might be handy to have in a subpanel.  So you insert it into a subpanel, which itself can be resized at runtime.  The only problem is, if code isn't written to handle the resize of the Subpanel properly, then the user could accidentally make the subpanel smaller than the minimum VI size that is inserted into it.  At which point the UI will get messed up and making the subpanel larger will not bring it back to the desired look.  Here is a thread where I post a simple example.  If the subpanel is set to fit to a pane, then you could programatically set the minimum pane size, to be the same as the minimum front panel window size, of the VI being inserted.

 

But if the Subpanel isn't in a pane, then there could be other issues.  So this idea is to have a property of a Subpanel that is "Minimum Subpanel Size".  Which will not allow the control to be smaller than a set size.  To make things even easier I propose a property that is "Set Minimum Subpanel Size to Minimum Front Panel Size".  Now when you try to make the Subpanel too small with a property node, it will generate an error, just like if you try to set the Front Panel too small with a property node.  And if the Subpanel is in a pane and being resized, this would prevent the control from getting smaller, and prevent the pane from getting smaller.

Hi,

 

The Event Structure is able to catch the information when Windows is shutting down is the event "Application Instance Close?".

That event don't work in Linux OS. It exist a workaround in Linux with CIN code, but since CIN has been deprecated with LV 2011, the is no actual workaround.

http://digital.ni.com/public.nsf/allkb/C2470DFFFC71D47F86256F70005891C6?OpenDocument

 

So you have a giant trace, and you're looking for something specific. You CTRL+F and look for it.... ok... wait... which one did it find.

Search highlight.png

(hint, it's the light grey)

 

 

You really need a bolder color for that. For instance, if I click, it does this.

Search highlight 2.png

Now THAT is a highlight

When running LVCompare from the command-line (i.e. from my Tortoise SVN shell) it will try to open the compare tool in the last context which was active.  Unfortunately, the code required does not run in RT or FPGA contexts.

 

I would propose that LVCompare, when called int his way, should ALWAYS run in "My Computer" Context.  Or even better, in a context all of its own (new Project).

NI LabVIEW allows VIs with invalid characters such as "?" in the filename inside an LLB file as shown below:

LLB.png

 

However when it comes to building a Source Distribution / TestStand Deployment that uses this file it returns an error as shown below:

Build Error.png

 

This inconsistency within LabVIEW is quite frustrating where one part allows invalid characters in the filename and another part will return an error. Since the invalid characters are allowed in VI filenames within LLB files I would suggest that the LabVIEW build tools also handle them graciously.

 

During the build process it could quite easily rename the file "pi40iv Can Connect Channel?.vi" to "pi40iv Can Connect Channel_.vi"  and link the VIs that use it to the newly renamed file. The build tools already contain the ability to rename files by adding prefixes so something like this would not be that difficult.

 

While people may argue to just rename the filename within the LLB and be done with it, the fact that the LLB is a perfectly valid file in the Development Environment but causes problems when trying to do a build is a problem that should be rectified.

 

The LLB in question is one that is not developed by us but is part of a Pickering Driver Installation obtained from the following location:

http://downloads.pickeringtest.info/downloads/drivers/IVI/

Therefore every time we install a new version of the driver we would need to rename the VI filename within the LLB file.

Add "Find All Instances" for polymorphic VIs. Right-clicking a normal VI's icon in the upper-right displays a pop-up menu with quick access to a "Find All Instances" item which helps greatly when navigating code to find all callers, then their callers, etc. However, when a caller happens to be polymorphic "Find All Instances" is not available and the work-flow is broken. Ctrl+F or Edit, Find can be used but the Find dialog must be manually configured: "Search for" Objects may have to be selected if Text was last used; "Select Object" must be set from a looong list of VIs. By that time, concentration is lost.

These context menu items should be swapped to be intuitively ordered so Before is before After and After is after Before. With a Case Structure, Diagram Disable Structure, Conditional Disable Structure, and Flat Sequence Structure, the right-click pop-up menu items to Add Case, Subdiagram, or Frame After are first and before the Add ... Before items. These being opposite intuition always make me pause and think to pick the right one. Help us be more productive, please.

I find the new Channel wires very useful things! However, I really miss one type/variation which would make a real many-to-many lossless message sending possible, but also with total control over where the msgs end up in case of multiple readers! Imagine that we have a Channel wire which can be branched, and you can also specify a "destination label" (could be a number, or string, etc.) at the Write nodes. This new Channel type would allow multiple Write and Read nodes. At the Read nodes, we could also specify the "destination label", so ONLY those Reader nodes would get the actual message which are subscribed for that particular "label".

 

I can program this functionality, but it would be great to have such features in a single Channel wire...

What do you think? Is this a good idea or you see some caveats/downsides of such Channel?

When setting up In Place Element structures, the current work flow is:

 

  • Drop the structure
  • Right click, add the node you want
  • Wire the reference / array / variant in

It would also be nice to wire the references I want to use to the border of my IPE structure, right click on the tunnel (c.f. for and while loop auto-indexing context, or shift register/tunnel) and select from a sensible list of incoming element types relevant to my incoming wire.

This would be fantastic to see alongside similar ideas such as this or this.

dvr-rcm.png

I've been programming in LabVIEW for a decade.  Yet, there is still an issue with type def'ing a cluster.  If one of the goals of LabVIEW programming is documentation, why does NI still make it the process difficult?   

 

After creating then 'type def' a cluster, I then have to more spend time unhiding and repositioning labels. This gets extremely inefficient with large cluster.

 

Why not add an option to hide or leave labels untouched when 'type def'ing a cluster?

 

2017-10-25 10_40_31- LabVIEW issue.png

 

The LabVIEW Task Manager is an outstanding tool for debugging LabVIEW Applications. It should be included in LabVIEW in my opinion.

 

a345fe65cbe713b29f505a851e0fe597.PNG

The Match Regular Expression is worth it's weight in gold, once you get used to it. There is some functionality missing though:

 

1) The begin\end positions of the capturing groups are not available. These positions can be more useful than the matching strings.

2) It's unnecessary slow when the string results are not needed.

3) The results are output terminals, making it hard to adapt to dynamic inputs. A results array is sometimes more convenient. For example a pattern is entered in a GUI.

 

I use the attached VI (based on the same API) a lot, to bypass these limitations. I think it would be useful in the LabVIEW palette, under String>Advanced String Functions.

Match Regular Expression (VI Version).png

When you do a text seach, you can use a regular expression. For example "(cat|dog)[0-9]" will match all strings beginning with cat or dog, followed by a number.

 

In the search and replace function, we can use "$1" to replace the match with any of the capturing groups (or e.g. "$1$1$2" to replace with several). Can we have this in the replace text results dialog?

 

So "(cat|dog)[0-9]" with replacement string "$1-$1" will have the following results:

 

cat1 -> 1-1

dog9 -> 9-9

 

It could save a lot of work... In this case 20 search and replaces can be done with one.

It's kind of annoying that replacing text with an empty string is not allowed.

 

Let's say you have 50 controls, all formatted tagname_tagnumber. You want to rename them to just tagnummer (or just tagname).

 

Finding them all is easy (regex ^.*_).

Renaming them all to A_tagname is easy.

But renaming to just tagname is not allowed...

Empty String Not Allowed.png

(I know I can use scripting...)

 

 

Bookmarks should NOT be created unless the first character after # is an alphabetic character. http://zone.ni.com/reference/en-XX/help/371361N-01/lvhowto/manage_tasks_lv/ says "hashtag followed by text is called a bookmark." Although it says # followed by text, it is not only creating them from alphabet characters but also numbers and symbols, e.g. "ID #132", "(###-###-####)". The number of unintended entries in the Bookmark Manager can render the feature almost worthless, especially when upgrading from 2012 or earlier. There are so many non-bookmark values that the presence of any real bookmark (e.g. code to fix) is lost like a needle in a haystack. I know others (e.g. QFang) liberally use "#" in controls, indicators, descriptions, comments, etc. as shorthand for "number" or "number of". There should be few objections since digits and symbols can be in bookmarks after the first character following #.

DO NOT treat references to controls and indicators as bookmarks because bookmarks cannot be used in control or indicator labels! http://zone.ni.com/reference/en-XX/help/371361N-01/lvhowto/manage_tasks_lv/ says "You cannot use bookmarks in control or indicator labels." However, LabVIEW DOES treat a hashtag (#) in the label of references corresponding to controls and indicators as bookmarks. The problem is that the reference to a control or indicator supports bookmarks but should not. Service Request #7710815 said according to R&D, “this does appear to be an intended function”; In other words, they expect for a hashtag bookmark to be created from the label of a reference to a control or indicator whose labels themselves cannot be bookmarks! Who expects the label of a reference to support a bookmark when what it refers to is an object that does not support bookmarks especially when their text values must be identical? I certainly do not. It seems to be an oversight by NI developers. Is an NI customer going to want to put a hashtag in a control or indicator knowing that bookmarks are not supported there but actually want it references to be bookmarks? Certainly not.

 

Steps to Reproduce:

1. Create new VI, create control, set label to “#1”, open block diagram, create reference; the label is a bold bookmark.

2. In LabVIEW 2012 or earlier, create new VI, create control, set label to “#1”, and create a reference on the block diagram. Open the VI in LabVIEW 2013 or later. The reference’s label shows bold “#” instead of plain text “#1”; note that it is cut off despite “size to text”. Our label names have been customer visible for over seven years; renaming them is unsatisfactory. See hashref.jpg.

 

Title says all. Can't believe it was never proposed; if it was, I couldn't find.

Missing that, I have to that programmatically, but it's always a detour:

2017-09-28_11-42-52.png

Should be quite easy to change the property page like e.g:

LabVIEW_2017-09-28_11-02-36.png

(6 colors for system booleans, 4 for all others, as known)