LabVIEW Idea Exchange

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

In many spectral monitoring applications such as vibration spectrum, electrical power spectrum and other frequency analysis, it is standard practice to label peaks in the FFT graphic.  To do this in LabVIEW, we use cursors and cursor labels to point out specific frequency of interest.  However, LabVIEW does not allow the fonts and rotation of cursor labels to be adjusted either manually or programatically. 

 

smudged Cursor Labels Example.JPG

 

It is common practice to use a cursor marker on the peak of the FFT frequency, with its label in a vertical orientation.  Here is a common peak labeling practice used in most all vibration spectral applications:

Competitive Spectral Analysis Tool.JPG

 

It is painful to create work around such as programatically relocating cursors, writing text on graphs, etc.  Is it possible to add at least the rotate cursor name property to LabVIEW?

 

Here are some other posts I have seen in the discussion forum related to this topic.

 

Rotate Text on Cursor

http://forums.ni.com/ni/board/message?board.id=170&message.id=242378&query.id=1281596#M242378

Move the name of the cursor

http://forums.ni.com/ni/board/message?board.id=170&message.id=45856&query.id=1282652#M45856

Change the Text Font:

http://forums.ni.com/ni/board/message?board.id=170&message.id=406465&query.id=1282652#M406465

 

I look forward to comments and feedback.

Preston

 

 

 

 

Use case :

I work on a multi-plateform project and I compile the same application for Windows, Linux desktop and NI Linux RT

 

Currently I have 3 different lvproj, on for each OS I build my app for.

 

It would make life much easier if LabVIEW would allow me to have - in the same lvproj - app build specs for different OSes.

Currently, the configuration file object only has access to save a file when you close the object.  I'd like to be able to save the file at any point in time and keep the object open.

 

 

 

Dealing with fonts in LabVIEW can be a nightmare due to the variations in fonts, types of fonts, rendering variations, resizing, etc.  If you are deploying a LabVIEW application on another machine, frequently the fonts or settings on the target machine don't match; creating a very ugly looking panel.

 

When developing for Windows in the past I have always edited my LabVIEW.ini file  to include the following:

 

appFont="MS Sans Serif" 13
dialogFont="MS Sans Serif" 13
systemFont="MS Sans Serif" 13

 

And when deploying an application; I include these in the app's ini file also.

 

This seems to work for most windows targets since MS Sans Serif appears to be a common font.  I suspect this will produce unpredictable results in OSX or Vista for that matter.

 

What I expect as a developer is not having to deal with these font issues.  I expect that when I develop an application that it has the same look and functionality; regardless of where it is deployed; even as a VI being edited on another machine with different font settings.  This means that the font information must be encoded and stored with the VI itself.  I would expect that both the LabVIEW editor and run-time engine would be able to recognize detailed font encoding within the VI and adjust the display accordingly based on the local machines font capabilities.  This is what one expects when printing or viewing an Adobe Acrobat PDF file; and the behavior of LabVIEW code; particularly since it is so graphical in nature; should also be similar.  I wouldn't expect that the actual font bitmaps be stored within the VI itself; but some detailed metrics about the font should be; height, width, kerning, etc.  Thus if a font substitution takes place when being deployed on another machine; at least the text will occupy the exact same extents as the original.

 

Though I don't know exactly what the detailed implementation would be; it does need to be transparent to the LabVIEW programmer, i.e. zero code; zero hassle; zero worries.  It should just work.  I hope we can all agree on this.

While debugging there's no way to easily have informations about the settings of a Call Library Function node.

 

Why not adding some infos on the Context Help?

 

imgCLF.PNG

Right now, you can add one group by which to filter the files you can select in a file dialog (e.g. when clicking the button next to a path control). You  can add extensions by opening the "Browse options" and adding the extensions. You can separate the extensions by semikolon to filter by multiple extensions. However, you cannot add multiple groups.

Here's how it looks now:

 

File Dialog now.png

 

In this setting you get to see all *.txt, *.doc and *.pdf files at once.

 

But what if you want more than one group to filter?

 

You could use .Net to call a standard windows File dialog. This dialog supports multiple groups separated by |

So, you can achieve something like this:

File Dialog.png

 

This feature should be available for the standard path control in LabVIEW, too.

  • The default widths of the LLB Manager window and the Name column in the multicolumn listbox are too narrow (see the attached picture). They should be widened considerably so VI names are completely visible without having to resize the Name column and LLB Manager window.
  • The multicolumn listbox displaying items should be replaced by a regular single column listbox since only one column in the multicolumn listbox is actually used. This would allow for listbox scaling due to window size changes to work much better. Currently, when you resize the LLB manager window, the multicolumn listbox resizes as expected, but the width of the Name column doesn't change accordingly, which means you often have to manually resize the column when resizing the window.
  • You should be able to select multiple items in the listbox, such as VIs, and open them by pressing the Enter key (like the behavior in Windows File Explorer). The only way to open multiple items from the multicolumn listbox currently is to select them and then right click on them and select Open in the shortcut menu.

I have a large base of compiled executables. One computer is encountering a "not enough memory to complete this operation" error. I'd like to drop a debug version of the executable on their computer and see if I can monitor which VI is using all the memory similar to DETT's remote monitor abilities.

 

New profile tool2.png

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

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.

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 should be able to to this:     mean 0.png      But that's not allowed:     mean 1.png

 

 

 

Instead I have to do this:     mean 2.png

It is pretty nice that we can create custom palettes for lvclass libraries and set them as default; being able to right-click on a class wire and get an organized menu (i.e. method VIs arranged in sub-palette folders), rather than just an arbitrarily-ordered bunch of all the member VIs. 

 

However, it doesn't appear that the palettes inherit -- if I right-click on the class wire of a child of the class with the custom palette, I am presented with the child members and the parent members, with no palette customization.

 

Example

Parent Class (with custom palette)

 

parent_palette.png

Child class (which includes the parent members, but without the subfolder organization):

child_palette.png

 

Could the IDE support inheritance of the palettes, such that right-clicking on a child class wire showed me parent items in their organized default palette view?

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

Scrolling all the way to find out a particular case in case structure is painful when you have "n" number of cases created. Sometime we know the case that we want to sneek in but finding it out of all the cases displayed is really a difficult and frustrating task. So having a search bar at the top of the cases listed would really help developers a lot to get into the desired case in seconds.

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.

 

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

I have been pretty slow to pick up the addition of quick drop functionality. This is mainly due to the list of shortcuts being out of the way.

 

I have always thought it would be easier to get the hang of Quick Drop if I had the option to put the quick drop shortcut in parenthesis next to the object name in the function pallet.  That way when I go back through the "normal" way of programming I will see the shortcut each time and over time I could get the hang of each objects shortcut. 

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!

Check the images for explanation:

 

Front Panel

 

Block Diagram