LabVIEW Idea Exchange

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

Via this link, I learned, "If automatic tool selection is disabled, you can use the Wiring tool to select the control or indicator first and then select the terminal."

 

I happen to like using the automatic tool selection, so can this be an option when automatic tool selection is enabled?

 

SelectControl1stIdea_JoB.png

E.g. if one (and only one) control/indicator is selected, clicking on a connector pane terminal will connect the control/indicator.

 

(I can't count the number of times I've *tried* to do this, even though it didn't work.)

-joeorbob

As part of a review of a shipping product, I want to make sure that all of our LabVIEW-built executables are using the same version of LabVIEW so that we also only have to ship one version of the LabVIEW Run-Time Engine. Everyone I've talked to has given me advice on things to change at export time, build time, or even run-time to know the version of LabVIEW it was built in (e.g. the App.Version property), but what if I want to know the version of an EXE I have already built?

Here are the methods I've tried so far:
1. I created a set of VIs that does it crudely by reading the EXE file in as if it were a text file, finding mention of lvrt.dll, and then scanning back a few hundred bytes to try and find a version X.Y token in there. (Of course this could be done in any language, not just LV). This solution can be automated for my product release's review process, but it would be prone to failure if the EXE format changes or my assumptions aren't correct. I wrapped the solution in one that searches our installation directories for all EXEs and returns all LV EXEs with versions (as they are detected here) and all non-LV EXEs so I can verify that my tool is not giving false negatives on LabVIEW-based executables.

Parse EXE as text for Version

 

(See attached .zip file for my LV implementation)


2. Run the EXE on a machine with no LV RTE and read the version from the error popup that you get when it launches. Obviously this requires user interaction, and requires launching the executable.
3. Install all LV RTE versions you think the EXE most likely requires. If it launches without incident and stays in memory, you can use Process Explorer to figure out what libraries it has loaded and see which version of LV RTE was called (since the lvrt.dll will be under "<NISHARREDDIR>\LabVIEW Run-Time\<Version>"). Obviously this isn't easily automated either, and requires launching the executable.
4. I tried using Dependency Walker to see what lvrt.dll dependency was found, but it didn't show me anything useful. I'm guessing it's dynamically loaded somehow, and DepWalker can't tell me?

What I'd really like are two things:
1. An LV Invoke Method like "Get VI Version" and "Get VI Editor Version" that works on built applications -- "Get App Version" with the same types of inputs and outputs as (file path input, string version output and U32 version output). An added output to determine platform and/or bitness would be nice, too.

2. An LV RTE property that tells me the Run-Time version in the file's properties. I could potentially automate checking of this via .NET calls or something like that

GetAppVersion.png

 

Embed_LVRTE_Version_into_EXE.png

Renaming files with F2 or the context menue entry "rename" is easy - as long as the file is a LabView or NI-File. But if it is just a simple *.txt, *.pdf, ... file it is not possible. Please add this function! - thanks.

 

Interpolate 1D array is very similar to index array, except it accepts a fractional index and will return a linearly interpolated value. (For integer indices, the results are the same). As the name suggests, this only works for 1D arrays.

 

I suggest that the functionality should be expanded for higher dimension arrays. The equivalent function for 2D arrays is bilinear interpolation and for 3D arrays it is trilinear interpolation. In the past I have written simple drafts for replacement code, but I think the "Interpolate 1D array" should be renamed simply to "Interpolate Array" and made polymorphic to accept up to at least 3D arrays.

 

An example of bilinear interpolation of a 2D array can be found here.

An example for trilinear interpolation of a 3D array can be found here.

(SInce I wrote both, they would need to be verified for correct operation and enhanced with exception handling, etc. ;))

 

These functions are useful to e.g. extract a profile along an arbitrary line in 2D (example) or 3D, or an arbitrary cutting plane in 3D.

They can also be used to resample an existing array (1D, 2D, 3D) at a different grid spacing.

 

Here's an example for resampling a very coarse 2D array at 10x higher rate (posted here).

 

 

 

(True, we also have the interpolation palette and some of the above 1D or 2D functions could probably be achieved with a detailed reading of the help and some extra code. None have the simplicity of "index array" with fractional indices.)

 

My suggestion is extend the functionality of interpolate array in the array palette to also accept at least 2D and 3D arrays.


I'd like to see the 3rd mouse button (scroll wheel button) activate the scroll window tool and allow me to move the window while held down.

Check the images for explanation:

 

Front Panel

 

Block Diagram

When you create a library, its banner (the strip on the top of the icon) is 12 pixels high. This is pretty useless. NI is taking 10% of the icon's height (3 pixels) more than is needed to have a line of text using the default font in the editor. These 3 pixels can be very useful for the rest of the icon, which is what actually shows which specific VI you're dealing with.

 

I suggest that this be changed to be 9 pixels high, as shown on the right side:

 

Banners.PNG

I wish to have the option to pin the (relative datatype) pallette opened thro' short-cut menu, like inthe attached snapshot.

 

The use-case I feel is, most of the times when I want/need to navigate to the related datatype pallette in search of something, suddenly I find that I need more than one function to be used in my next steps of coding. So during those times, pinning is a viable & useful option.

 

Hope some of the folks would agree with me... Smiley Happy

Download All

When working with arrays, it is convention that search functions output -1 when element is not found. There are several functions using this logic. I find myself quite often using "Equal" function to compare this value to -1. While not being overly complicated, considering I do it very often, it would still be nice to have function "equal to -1" which would work similarily to "equal to 0", having only one output.

Current approach:

Rashek_0-1575453021315.png

Suggestion ("equal to -1" icon is only illustratory):

Rashek_1-1575453212574.png

Purpose: Speeding up programming routine

Currently, if you select a tunnel, you can only move it along the border of the structure - attempting to move the tunnel perpendicular to the structure border is just a no-op. Instead, I'd like to see this action resize the structure!

 

The first video demonstrates current behavior, how tunnels cannot affect structure boundary sizing. The second video shows a selected tunnel resizing the structure boundary as it is repositioned.

 

 

  1. These demonstrations reposition the selection using the Keyboard, but the same principle could apply repositioning a selection with the Mouse.
  2. A side perq of this feature is that structures are resizable with fine, granular control using the Keyboard!

The shortcut menu should launch the new type def.'s front panel when 'Make Type Def.' is selected. You will need to save it anyway, and if you find the need to edit it right away, then it is already open and ready to go.

 

make type def.jpg

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.

"A picture is worth a thousand words..."

 

That's especially true when describing complex interactions of the kind often seen in code.  Currently the block diagram decorations consists of 4 elements: a line, a straight arrow, a frame, and a label.  I can and often do create state diagrams out of those elements, but they look very hacked together (i.e. unprofessional) and are cumbersome to create.  The alternative is to use an external graphics program and paste the image into the block diagram.  I do that sometimes too, but it makes it harder to keep the diagram up to date.

 

I'd like to see elements added to the decorations palette to help us create graphical comments.  Since state machines are very commonly implemented in Labview, that seems like a good place to start.  How about adding a state decoration and a transition decoration?  The state decoration should allow more formatting flexibility than the label does.  (Like having the first line centered and the rest left justified.)  The transition decoration should be an arrow that allows routing--either smooth curves or point turns.  It should also have a label attached to it for identifying the transition trigger.

 

Here's an example of a state diagram for some proof of concept code I wrote that I pasted to the block diagram.  I'd like to be able to easily do these kinds of drawings without needing a 3rd party app.

 

Capture.PNG

The detailed help link in the LabVIEW Context Help window is a great way to add extra documentation to your LabVIEW code.  However it currently only supports .hlp, .chm, .htm, and .html files types.  This should support many more documentation types such as pdf, txt, doc, .xls, png, .etc, etc.

 

pdf.png

Hi all,

 

Since the release of the new “Silver” control style in LabVIEW 2011, I had the idea of having a style control on the front panel. You would essentially click the drop down box and it would change all/selected controls and indicators on the front panel to that style.

 

Take a look at the mock up below.

 

Untitled.jpg

 

 

The idea could be extended to having a style of control that the User could populate, notice the “User” on the drop down.

 

I hope that you like my suggestion I can certainly see many uses for this.

Hello all,

 

This is an elaboration on a prior request by RavensFan:

 

When AppBuilder reports a file related error, such as error 8, could someone please provide a path?

 

I have no idea what's causing my file IO error, as I am running LabVIEW as a local admin and there should be nothing interfering with my path.

I can't probe a path wire in the AB method because the diagrams are understandably locked.

 

This is so frustrating.  No one likes to debug by guessing and it wastes a tremendous amount of time.

 

 

 

Thank you with my deepest respect to the AB team.

 

Jim

 

 

For example:

AppBuilder.png

Currently, the "In Range and Coerce" function requires that the upper and lower limits be wired. Often I am only interested in coercing at one end of the range. It seems crazy to wire "-2147483648" to the lower limit of an I32 just to ignore that input and coerce the maximum...

 

I'd like to propose that this function allow unwired limits, and that unwired limits assume the maximum or minimum allowable values for the given datatype:

coerce.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

A customer called in to NI technical support with the following idea pertaining to custom error codes and the Error Code Editor.

 

Is it possible to have Error Code Editor remain open during normal LabVIEW coding. This way customer's can add custom codes as they code their projects. The Error Code Editor found by going to tools->Advanced->Edit Error Codes... currently will not allow user to continue using LabVIEW until they have selected the close option as of LabVIEW 2019 sp1. This related to the fact that user must restart LabVIEW after editing custom error codes for them to correcty appear in a new error ring dropped on the block diagram.

 

If a error ring was already created, then the error code file (in XML format) has already been parsed. Thus no new ones will appear for use. If there was a way to more actively add and then use custom error codes, customers could make use of more error handling features.

 

Jesse Grigg

Technical Support Engineering

National Instruments

www.ni.com/support

 

Using ctrl + scroll for switching between the cases is somewhat hard to use, because when you have lots of cases its difficult to remember what is the order of them so its harder to ctrl scroll the one you looking for than to go to the case selector. Moreover if you work with bigger sized structures (which happens sometimes) you may not even have the case selector on your screen so if you ctrl scroll, you can only deduct which case you see by the visible part of the code itself. That doesnt work for me, I always go to the selector.

 

But what if when the user uses ctrl + scroll a small popup would appear at the mouse pointer and when the user scrolls up and down the highligh would move up and down selecting any case in the given structure?

 

This would highly increase the usability.

 

Applicable to the Event structure as well.

 

case.png