LabVIEW Idea Exchange

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

I would like to see the Join and Split Numbers function to be expandable and polymorphic. I’m not arguing big vs little. Just accept there are two Endian worlds and work with them. Have you ever joined two or four numbers from a data stream in Little Endian? You have to change the order and cross wires as shown in figure (1).

Join Numbers Figure 1.GIF

This is not that clean and it gets worse when you need to split numbers and send them back to a device. Because I join and split a lot of numbers I created a library of vi’s that are clean on the diagram and visually indicate Big vs. Little Endian. A simple arrow works for me to indicate Big vs. Little Endian shown in figure (2). This Library is also attached.

Join Numbers Figure 2.GIF

I know the Join and Split two numbers in Big Endian is the same function in LabVIEW. This provide visual consistence on my block diagrams. An example of block diagram code that shows the difference between Big and Little Endian form is shown below in figure (3).

Join Numbers Figure 3.GIF

Here is what I would like to see National Instruments create. Make the Join and Split Numbers function to be expandable and polymorphic. The words are only going to get bigger and there will always be two Endian worlds. Make the Join and Split Numbers vi’s expand like the build array function. Click and drag possibly in groups of 2 i.e. 2, 4, 6 and 8 inputs or outputs for the Split Numbers vi. Of course the output data type would correspond to the number input connections. The polymorphic examples are shown below in figure 4.

Join Numbers Figure 4.GIF

To take the polymorphic function one step further it could include the data type. There are times when I need to join numbers and convert to a signed integer or a double floating point. A demonstration of the polymorphic data type is shown in figure 5 and 6 with before and after examples.

Join Numbers Figure 5.GIF

Expanding the functionality of the Join and Split Number vi’s will reduce block diagram clutter, increase coding speed and maintain visual readability. What do you think?

 

You can right-click on a While Loop and select "Replace with For Loop", and vice-versa:

 

loops.png

 

Neither of these operations is currently available in VI Scripting. If they were, Quick Drop and other G-based editor features could benefit.

I suggest NI include a native feature to serialize LabVIEW objects in an interchangeable form.  (Alternatively, NI can at least provide enough access to allow a third party to develop such a framework.)

 

By "interchangeable" I mean in a manner that allows sharing object data between platforms (e.g., between LabVIEW and Java).  (Hence having "default data" without specifying the values of the default data is not allowed.)  Moreover, using a more common format (such as "Simple XML") is appropriate.

 

Of course, including the object version number is only meaningful within LabVIEW, but this is useful within LabVIEW thanks to the capability of LabVIEW objects to translate between versions.  (Note: I recognize the versioning can't avoid all possible issues, but in practice I think that is rarely a practical issue.)

 

I understand that for security reasons a developer may want to turn off the ability to serialize an object.  To support that, I envision a checkbox to allow serialization (default = True) in the class properties dialog.

 

I think XML is the best option for this for several reasons:

1) It is a common way to serialize objects in different environments.  This means that I can exchange serialized data with Java applications, for example.

2) It is readable, albeit not easily readable, by human beings.  (I actually don't want humans to read serialized data very often--and really never the operator, but it is good that they can on the rare occasion when they need to do so.)


Why I think NI should implement this:

1) This is relatively straightforward for NI to do since NI can already serialize a class to the current (noninterchangeable) LabVIEW XML format.

2) Having this capability could greatly expand the application space of LabVIEW, since it would make it orders of magnitude easier to interface with nonLabVIEW applications.  This is especially important in large systems, in which it may be advantageous to implement some system components in one environment and other components in another environment.  This is, I think, by far the most compelling reason to include this feature.

3) That there is a need for this seems obvious, given the number of lengthy discussions just on LAVA about this topic.

4) The current situation, in which each class must contain specific code for serialization, is patently inefficient and nonsensical.

5) In other major languages meaningful object serialization is a given, and LabVIEW should include (indeed, must include) this functionality to be competitive.


For the record, to serialize LabVIEW object data for communication within LabVIEW we use either the methods to flatten to string or to XML, and this works fine.  I realize it's not theoretically 100% fool-proof, because of potential issues across different object versions, but in practice we use version control, so that we build applications using the same versions of interface code (usually), and we only have one large system, so we can pretty easily control our deployed applications.   (I think that versioning an application could achieve the same.)  In practice, we've never experienced a version problem with this approach, and it avoids having to write any class-specific code (which, again, a developer should definitely not have to do) to support serialization.

Searched the exchange and found a similar idea but it didn't contain pictures so maybe that's why it didn't receive very many kudos. So here is another attempt at what I think would be a very useful addition to the LabVIEW IDE.

 

Occassionally, I would like to find where a specific enum value is used throughout a project. If I use the right-click Find | Callers popup menu, I obtain a list of VIs that use the enum but no indication of how many times it's used or what values are associated with an instance.

 

Very simple example:

ProjectWithPopup.png

The project subVI front panel and block diagrams:

VIs.png

Find caller results:

FindCallersPopupResults.png

 

It would be nice to have some way of knowing what enum values are being used and have the ability to jump directly to the instance. Maybe a Find Callers that displays enum values:

FindCallersWithValue.png

For arrays of strings or numbers, either on the front panel or diagram, it would be cool if you could simply tab from cell to cell when entering data, just like in Excel. Today you have to mouseclick every single cel..

 

Carsten Thomsen

I rarely use boolean operators to solve logical problems. Instead, as I would suppose the majority of users, I use them to respond to a set of conditions and perform actions in response to different cases.

The current set of operators:

 

ScreenHunter_002.jpg

 

is, to say the least, quite difficult to use. For instance, for the third operator, the help window provides the following explanation:

ScreenHunter_003.jpg

 

Now if you invert one of the inputs, good luck to figure out at first glance, when you revisit your diagram, what the outcome of the comparison will be.

In fact, what we need is some kind of matrix operator for which we type in the output of the comparison of A (input 1) and B (input 2) for the different cases:

 

ScreenHunter_005.jpg

 

Here I have supposed the inputs are "modified-booleans" with an "undefined" case, and the output of the comparison is an integer value, just to illustrate that operators for non-booleans could be treated the same way.

In the strict boolean operator case, there would be no "U: case and the output would be T or F. It would be a simple matter (I guess) to let the boolean operator icon show the outcome of the comparison in a way similar to something like that:

 

ScreenHunter_009.jpg

In general I find useful to have non-boolean outputs (as in the matrix above where integers were used) to be able to handle complex situations. Of course the icon would have to reflect the values selected by the user...

Which brings the issue of the configuration of this operator. Considering that the interface for this operator would be quite sophisticated, it would make sense to provide it as one of the Express VIs (such as the "Formula" or "Comparison" functions).

 

If you have multiple projects open, the "Error list" window lists all errors across all opened projects. Oftentimes, I'd only like to see the errors in one particular project. It'd be nice if it'd be possible to filter the "Error list" window by project:

 

Screenshot - 10-May-12 , 11_57_15.png

It would be very nice if we could tell the installer script to synchronize its version number with the version number of a specific executable.

 

12-29-2009 2-38-53 PM.png

 

Additionally, it would be very nice to have this version information (once they are synchronized) displayed on the installer wizard (for instance in the title window or on the wizard first page).

 

PJM

TestStand provides the extremely useful Label step type.

 

1 (edited).png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

It would be extremely useful if the LabVIEW Project Explorer provided a similar Note project item. The Note would serve as a documentation and annotation tool inside the project. Project notes would serve to explain the purpose of a group of lvlibs or lvclasses, or to provide short descriptions inside an lvlib, lvclass, or virtual folder.

 

As a workaround I currently use virtual folders to add notes to the project. By convention I name these virtual folders starting with "_Note:". The underscore helps the Note appear first (near the top) when the items are arranged by Name or by Type. By convention I never add any item inside the _Note virtual folders.

 

2 (edited).png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

The implementation of a Note item could be quite simple. A Note item would essentially be just like a virtual folder with the following modifications:

  • Different icon. An icon that resembles a document would make sense.
  • The Note item would not be able to contain any other items.

Pretty simple idea.  When you are creating installers, you are allowed to install files in many different locations.  Including lots of system locations.

 

But for some reason, Public Documents is not one of these destinations.  It should be.

 

Because its not in the list, I need to go through some annoying workarounds which I don't totally trust.

 

 Untitled.png

When you want to make a resizable front panel there are only few possibilities, especially if you don't want all your front panel beeing resized.

 

Splitters are great but you can't always use it, in a tab control for instance it's impossible (and someone already suggested this idea here, sad it's not implemented Smiley Sad).

You can do it programmatically (lot of work!), maybe with an XControl depending on your application (lot of work too!) or you can also Scale Object with pane with only ONE object.

 

There's still one option: Scale all front panel objects when resizing

yuk.png

 

Why not improving this method by adding an Ignore Resize property?

woohoo.png

It might be easier to implement for developers compared to modifying tab control and would be really easy to use !

I have often wished that LV have some easy way to display simple text with parts of the text marked BOLD, Italic or different colour in one display.

 

I think there has been an XControl created fror this, but it's be nice to have a proper "formatted Text" indicator / Control in LabVIEW.

 

No picture as I think everyone knows what is meant.

 

Shane.

During implementation of code, the algorithm and its implementation has to be tested and debugged in most cases many times. For debugging, probes are a very useful tool. But probes can only be created on existing wires.

If, for any reason, the developer wants to probe values which are not on a wire already (e.g. iterator of a loop), he has to create an indicator (or tunnel) in order to have a wire. Once the debugging is done, the terminal/tunnel and the wire should be deleted.

 

I find it would be much easier, if i could right-click the data output and select Create >> Debug Terminal. This terminal is part of the code, but once i close the probe, the items created by this option (terminal and wire with probe on it) are removed automatically.

 

Norbert

 

PS: I know that there was a suggestion specifically for the iterator of a loop. I understand the reason why it was declined, but i find that using VI Scripting, the above mentioned functionality could be provided. As i WANT to have the information of that wire during debugging, i require that terminal/wire in any case. Using some automated tool would ease the debugging process with the hope to decrease time required to identify the software anomaly.

Unlike the other growable functions (eg Build Array, Concatenate Strings), the output of the really appreciated new Merge Errors function shouldn't be centered to avoid a bend in the error wire.

21768i5CB00D8CCFE3352A

It's great that the native "Random Number (Range)" VI was added to LabVIEW relatively recently (LabVIEW 2020 I believe).

Currently the VI has instances only for U64, I64 and DBL, as seen below.
1.png

 

It would be great if it had instances for all integer types, especially for I32 which is probably the most common integer type. I am aware that we can easily convert from U64, I64 and DBL to any desired integer type, but it would be nice to remove the need to convert the output.

Thanks

I've encountered a programming situation where I may need to call 'Match Regular Expression' where the regex is selected at runtime, and where that regex may potentially have a variable number of submatches to return.  Unfortunately, right now, the submatch count is a compile-time decision based on how far out I grow the node.  I can grow the node to some maximum number of submatches ever expected, and thankfully the node doesn't throw a runtime error if there are fewer, or greater, submatch expressions in the regex.  I'm building the individual returns into a string array for further processing, but it would be much more versatile if the node could return the submatches with a properly-sized string array.

When doing a global Search and Replace we often get an "Authentication" dialog box prompting for a password (most often these VIs are third-party VIs to which we don't have passwords), so the search stops until the user clicks "Skip" and perhaps selects "Skip remaining password prompts for this operation."

 

(See attachment)

 

Similiarly to the option to "Ignore VIs in vi.lib", there should be an option to skip password protected VIs because, most likely, we won't be able to replace anything in them anyway.

The palette API VIs (Read Palette.vi & Write Palette.vi) return built in function and control items as "BUILT_IN_FUNC_xxxx_x_x..." paths. There is no easy method to fetch the item name or icon for built in items. The private invoke node method APP : Palette : Get Palette Item Icon only accepts the Item Name.

 

This idea is to either:

    Idea 1: Add an application method to return the Item Name given the palette's Item Path (and vice versa).

-and/or-

    Idea 2: Extend the App : Palette : Get Palette Item Icon invoke node to accept either the Item Name -or- Item Path when fetching the palette item's icon.

 

New Idea Get Palette Icon.png

Arranging clusters horizontally and vertically using the autosizing feature is nice, but it leaves much to be desired.  It only aligns objects on the left vertically, and top horizontally. I often find myself switching to "size to fit" of "none" if I want to align the objects on centers.  But then I have to do a little dance when I add an element.  I propose 6 arrangements: three vertical, and three horizontal, using the familiar arrangement icons as shown below:

 

newauto.png

 

The autosizing algorithm in LabVIEW should also ignore element labels when arranging/aligning the elements to make life easier.  

Sometimes you might have a cluster constant, indicator or control on the block diagram or front panel without the labels shown. When you have a large cluster it's not immediately obvious which element you're editing/changing.

 

When you hover over a SubVI, the connector flashes on the Context Help window and eventually a tooltip appears on the block diagram under the mouse cursor as shown below:

2014-10-14_16-25-28.png

 

I propose that, just like when you hover over an input/output of a SubVI it does the same to show the element name on clusters on the front panel / block diagram, as follows:

2014-10-14_16-28-05.png

 

I know it's not the most exciting of suggestions but I think it would be good for usability.