LabVIEW Idea Exchange

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

I didn't find this idea immediately, perhaps something similar has been posted already?

 

I would like to propose an extension to the Index Array function, to accept an array of numbers or booleans on the index input. The picture below illustrates the idea. The new Index Array function would replace the for loops in both cases, making for a neater and more readable diagram.

 

Index Array proposal.png

According to the increasing number of questions about this communication protocol, it would be time to rewrite the MODBUS library. I also suggest to add it to the NI device drivers installer.

 

This could be the place to list the expected modifications. Some comments and bugs are already listed in above linked page.

Once in a while NI updates a system VI (new features, fewer bugs, etc.) but retains the old one for compatibility.  If we open an old VI containing any such VIs in a new LabVIEW version, we typically find a special marking on the icon (e.g. obs). It does not tell us directly what the newest version is and where to find it in the palettes.

 

(for example the context help for the obsolete 2012 riffle.vi does not mention the obsolence and opening the full help simply points to the newest help version (this might be an oversight, though. Some other obsolete VIs have appropriate help if I remember right)).

 

I suggest a "right-click...replace" option for such legacy VIs that directly point to the newest version so we don't need to endlessly search the palettes (well, I know where riffle.vi can be found, but I don't think the majority of LabVIEW programmers will find it on the first attempt, so this could be frustrating ;))

 

Idea Summary: I suggest to add a "Replace...with newest version" to the right-click menu of obsolete VIs.

 

Here's a picture how it could look like.

 


If I have a path control on my front panel for the user to interact with, I will always show the browse button.  This button makes selecting a path easy from a user perspective, and from a developer I know that the path they selected has some level of validity.  So for instance I know that the path they selected must exist and be a valid path otherwise Windows won't let them select it, and the value change won't be triggered for the control.

 

But the user can manually type in text into the path control, and when focus is taken off the value change event will take place.  The problem with this is the path they entered might not be valid, or may contain characters my platform doesn't support.

 

I doubt a user will manually type in text in the control often, they will use it as an indicator showing the path they selected using the browse button, but on the off chance that they type somthing and it isn't valid, my code might crap out throwing errors.

 

I can add code to check for a valid path, and I can add code to check for illegal characters in the path, but I'd have to do this for every path control on every UI the user sees.  I could also write an XControl for this with a decent amount of work and hopefully meet my needs, but it would be nice if this were a native feature.

 

So what I'm suggesting is that the path control have an option, possibly in the browse options dialog, which makes the interaction with the control, only available by using the Browse button.  This would ensure that any value change event will be from the user picking a valid path with the browse button.

This is a follow through for Zekasa's Idea posted here. It was suggested that the function be a separate one, which I agree. I would like to see this in LabVIEW's basic package, without adding things onto the install, or coding it.

 

Search 1D Array Until Done.png

 

When right-clicking on a control or indicator from the block diagram, there is no replace option:

carls___0-1590685761815.png

Instead, you need to go to the front panel and then replace from there.  It'd be useful if you could replace directly from the block diagram.

 

(This is particularly useful in situations where controls/indicators are hidden on a GUI)

For about a decade and a half I have consistently changed the default block diagram grid spacing to 4. Why, to match the shift arrow moves.  Hold it!  Why not make the shift arrow moves equal the grid spacing?  

 

Yes, I a genius!  The Kudos button is lower left!

Recently I've talked to companies that are already using LabVIEW and their organization has standardized on tools such as JIRA for bug tracking/project tracking as part of an organization-wide initiative.  JIRA connects to other IDEs/programming tools such as VisualStudio, Eclipse, IntelliJ, etc.  Atlassian (the company that makes JIRA) also provides tools that can part of a larger Agile process and can facilitate code reviews and other software development processes.

 

JIRA.png

 

The idea up for vote is to offer more comprehensive LabVIEW interoperability with industry standard tools such as JIRA, or other software as part of an internal software design process.  (feel free to specify a certain tool, if you have a preference)

When I Right click a wire and tried to insert a "Replace array subset" its getting inserted properly but the same doesn't work with the delete from array and I had lot of instances where I have to insert a "delete from array". I am proposing this after searching this forum but If already proposed then I'll try to give Kudos for that.

 

Replace array full.png

 

So without broken wire it would be nice to insert a "Delete from array" function.

                   SR1.png

                                                   BUT,

 

 

                      SR2.png

Be also able to change a group of constants to Controls or to Indicators.

 

and, why not,

be able to change Controls and Indicators ... to Constants

 

(And as usual with me, sorry for bad english, i do my best.)

Propertyreduction.png

Why all the redundant .lvclass everywhere? Please remove this from the property node, it makes the property node longer than it needs to be.

This is a small thing but it drives me nuts.  Whenever I place a case on the diagram, I always need to move the case seletor up or down so it aligns with the source output that will be driving the case.  But, the newly placed case always has the seletor right in the middle of the left side.  This is also where the drag hover control (?) is located.  I seem to at least 50% of the time grab this drag control when I want to grab the case seletor and move it.  If the selector was just placed above or below the middle of the left side, this issue would go away.  I suggest placing it 1/4 of the way from the top, since most of the time the source of the selector is above the midpoint of the case block (at least in my code).  YMMV.

 

I know it is a nit, but it is low hanging fruit to fix and it is annoying.

A couple of recent ideas regarding the VI Hierarchy window are good, but do not go far enough, in my opinion. I would like to see the VI Hierarchy window annotated with a lot more status information about VIs, including:

 

  • A glyph showing if Execution Highlighting is enabled
  • A run arrow on any VI that is running top level.
  • A path from the top level VI through any currently executing subVIs (the path may be forking as there may be multiple subVIs running in parallel)
  • That path would have temporary lines going to VIs that are invoked using the Call By Reference node (as opposed to reordering the hierarchy tree to put such VIs as subVIs of the caller)
  • A glyph showing any VIs that have breakpoints on them and a different glyph if the VI is actually stopped at a breakpoint.
  • Reentrant clones of VIs, so that call chains can actually be seen, including the ability to double click on a particular reentrant clone to open its front panel
  • Any other execution state information that can be easily expressed as glyphs and highlighted connections among VIs and/or other file types shown in the hierarchy window (open to brainstorming).
  • Whether debugging is enabled or disabled on each VI

The VI Hierarchy window has already been updated in LV 2009 and 2010 to show all the connections among different files and resources. Finishing it out to show the full state of the system would make it a powerful debugging tool.

I've been using block diagram cleanup extensively over the past year in an attempt to speed up my LabVIEW programming.  I am definitely faster as a result of using the feature, but there are still some VIs that I have to arrange myself, because diagram cleanup's arrangement is unacceptable.  So the feature still has a ways to go in making all my diagrams acceptably clean.  It's my understanding that there are many more configuration options in diagram cleanup that could potentially be exposed to the user, but I think an easier way to conform diagram cleanup to my standards would be to point it at a folder of VIs that I have personally deemed "clean", and have diagram cleanup mimic the arrangement in those VIs when cleaning up other VIs.

 

As an example, I am ok with input tunnels into a case structure overlapping somewhat, if those tunnels are coming straight from subVI output terminals that are close together.  Diagram cleanup insists on adding space between the tunnels so that they don't overlap, which results in unnecessarily crooked wires.  Ideally, I would have VIs in my "clean" folder that have slightly overlapping tunnels, diagram cleanup would discover that I'm ok with this, and subsequent cleanups would allow this arrangement.

Traditionally LabVIEW has treated Strings and Unsigned Byte Arrays as being the same. This is nowadays a little unfortunate as all UI systems use some kind of encoding so Strings are not generally interchangeable with Byte Arrays anymore.

In trying to stay for binary data as much as possible with Byte Arrays instead of Strings, since that would be the sensible thing to do, the Unflatten from String (which should rather be called Unflatten from Stream) puts a totally unnecessary wrench into this.

I always had hoped that LabVIEW would change the default binary data stream format to a Byte Array at some point but this while it would be possible, is a fairly pervasive change that would require many backwards compatibility decisions that I unfortunately don't see NI going to spend time on anymore. This change however would be a very small change that has zero backwards compatibility concerns and almost no work to add to the existing LabVIEW software.

This same change has been for instance made to the TCP Write node some versions back already and could be also applied to the VISA Write! Smiley LOL

There is a small bug in the sorting of VIs by Name in Project Explorer.

 

If a virtual folder or an auto-populating folder contains VIs named "abc", "abc def", "abc def jkl", when the folder is set to "Arrange By >> Name" Project Explorer displays the VIs in the order 1. abc def jkl; 2. abc def; 3. abc. In other words, when there's a tie the longer name is displayed first. Breaking the tie in favour of the shorter name seems more logical, and is what Project Explorer does when sorting virtual folders.

 

The screenshot below shows the issue.

Screenshot 2.png

 

This was noticed in LabVIEW 2022 Q3. Please excuse if it's already been fixed in 2023 Q1.

After applying my own subjective intellisense (see also ;)), I noticed that "replace array subset" is almost invariably followed by a calculation of the "index past replacement". Most of the time this index is kept in a shift register for efficient in-place algorithm implementations (see example at the bottom of the picture copied from here).

 

I suggest new additional output terminals for "replace array subset". The new output should be aligned with the corresponding index input and outputs the "index past replacement" value. This would eliminate the need for external calculation of this typically needed value and would also eliminate the need for "wire tunneling" as in the example in the bottom right. (sure we can wire around as in the top right examples, but this is one of the cases where I always hide the wire to keep things aligned with the shift register).

 

If course the idea needs to be extended for multidimensional arrays. I am sure if can be all made consistent and intuitive. There should be no performance impact, because the compiler can remove the extra code if the new output is not wired.

 

Several String functions have an "offset past ..." output (e.g. "search and replace string", "match pattern", etc.) and I suggest to re-use the same glyph on the icon.

 

Here is how it could look like (left) after implementing the idea. equivalent legacy code is shown on the right.

 

 

 

Idea Summary: "Replace array subset" should have new outputs, one for each index input, that provides the "index past replacement" position.

 

 

 

 

I would like if there were a default value for string controls that would be greyed out, but the string value would still be a blank string. This could be useful in showing example text for text that should be entered in a specific format. I have shown an example of the (visual) functionality and the code that goes along with it. This code could be greatly reduced if there was a key focus event added, but even in this case, the string control value itself is still not an empty string. I could also see this being beneificial in listboxes, multicolumn listboxes, tables etc.

 

I find myself wiring errors out of the loop using auto-indexing and then immediately using a merge errors on the array of errors.  With the addition of the Loop Terminals for concatenating arrays and conditional arrays, please add one on error wire terminals that can do the merge errors in one step.  

 

For Example, current implementation:

 

Merge Errors.png

What I would like to have but would do the same thing in one step:

 

Merge Errors New Terminal.png

 

 

facf.jpg

 A picture is worth a thousand words.

This new button should finish the actual VI and close it instantly.