LabVIEW Idea Exchange

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

Hello,

 

I would like to be able to change the "style" of several controls together. Something similar to a style sheet (like css for html) would be great.

 

Imagine the customer does not like the white background of the controls and wants a yellow one instead. This means I have to set the color of every single control. When I used strict typedef controls then I can change in groups, but I am not able to change the background color of a dbl and a U8 at the same time. View has nothing to do with the type!

Maybe also the frame is to big. There is nothing I can do so far. And if I could, I had to do it for all controls again.

 

Greetings,

shb

Currently, a class is created with a Class Private Data Cluster. Each data member of that cluster is scoped exclusively to the owning class. For access to these data members outside class member VIs, getters and setters (accessors) must be established individually for each element. These accessors can then be scoped accordingly, allowing access to the private class data through the accessor VI, or in 2010, through an accessor Property Node.

 

Quite frankly, I like the IDE interface for accessing class data members using Unbundle/Bundle by Name. This feels natural for LVOOPers who have a background with clustered typedefs (which means everybody). Unfortunately, this method of data access is reserved for callers within the scope of the class data. Currently, since all class data is private, you can only use Unbundle/Bundle within Class Member VIs themselves.

 

I would suggest an options interface for setting the scopes of Class Data Members. Having non-private data member scopes has benefits:

 

  1. Obviates all the piddly accessors clogging your project tree and SCC server
  2. Allows quick visual recognition that a data member is being read/written directly (no data transformations were snuck into the accessor)
  3. Cleaner interface for callers of the class using the Bundle/Unbundle
  4. Best of all, saves considerable development and maintenance cost
Here's an example of what the Data Member Scope Configuration screen might look like:
 
ClassMemberScope.png
 
Note that clusters can have "Custom" scope, which means the cluster's elements have different scopes. Also note that when a cluster's scope is set explicitly, it's members inherit the same scope and cannot be set (note how 'x' and 'y' are greyed under 'Center of Mass'). The default behavior (which is equivalent to today's default scope) is for 'Class Data Cluster' to be 'Private' with all descendants greyed.
This Idea is one product of a discussion which has taken several routes.

There are a lot of ideas about improving the navigation of the Find Project Items window, but I could not find this one.  When I search for a project item and get a list of matching results, it would save a lot of time if I could select the ones I want, GoTo all of them at one, then open them all simultaneously from the project window.  Opening multiple items has been around for a very long time.

 

Currently:

1. Select first result

2. Go to item in project window

3. Open item

4. Edit item

5. Save item

6. Close item

7. Go find results window

8. Select second item

9 Repeat 2 thru 7 again and again

 

This would take about 70 steps for 10 items

 

New idea:

1. Select all results

2. Go to all results in project window

3. Open all items at once

4. Edit item

5. Save item

6. Close Item

7 . Repeat 4 thru 6 for all items

 

Under 35 steps for 10 items.

Find Multipe Items

The PID Autotune would be much more useful if it were refactored so it could run on RT targets.  I would suggest replacing the embedded calls to viserver to open up wizard panels

with a MVC architecture that would allow a better separation of the core PID logic and the HMI components.

Dear LV users,

 

the feature request is based on the following discussion: Executing "bring to center" on a free cursor in a log XY graph brings the cursor to the top rim of the graph (instead of the center).

 

Selecting "bring to center" for a free cursor in a XY graph does not bring the cursor into the center of the graph, but instead the command brings it to the arithmetic mean/average value. This is not an issue for a linear mapping of the axis [due to the fact that the center of the axis is equal to the middle/average value of the end points on the axis]. But when mapping of the axis is logarithmic, the cursor ends up on the top of the screen. That is because the average value of the end points (min(y_axis)+max(y_axis))/2) is not equal to the center of the axis.

Suggestion: When the mapping of the axis is logarithimc, bring the cursor to its visual center.

 

The suggested equation: 10^(log(min(y_axis))+log(max(y_axis)))/2


Example (applicable for the screenshot): For an y_axis = [0.01..10], the awaited center position would be at 0.316 and not at 5.005 (see attachment, please).

 

Idea Summary: Bring the cursor into a visual center of the graph instead of bringing ot into the arithmetic center

 

Kind regards,

It would be great if you could easily add a license (public domain, GPL, BSD or your own) to a vi. This would be great especially for libraries such as device drivers, etc.

 

I think a good place for this could be File->Vi Properties. There could be a license tab where you either can choose from common pre-defined licenses or have a text entry box where you can add your own. If someone else uses the vi, that person can than easily find out if he can use this VI in for example commercial code.

 

Arun

Problem statement: we can't draw ROIs programmatically with different colors. 

 

Right now we can draw ROIs with the same color only:

 

ROI01.png

 

Conversion to overlay is the only way to draw different colors:

 

ROI02.png

 

Suggestion:

 

Give the possibilities for setting ROI's colors individually (replace RGB cluster with array of colors):

 

ROI_Suggest_1.png

 

In the same time it should be also possible to define color for the next new ROI which will be created by user.

 

Forum's References:

Different color ROIs
How to set different colors to different ROIs in one image
Change color of ROI GROUP

Add a Visible Item to the cluster container to enable the display of the currently selected AutoSizing style

 

ClusterAutosizingVisibleStyle.png

 

Similar to the other Visible Items (enabled above on "source" string & "code" integer) like

  • "Radix" for a numeric integer (d-Decimal, o-Octal, x-Hex, b-Binary, p-SI Display)
  • "Display Style" for a string (n-Normal, \-\ codes, x-Hexadecimal, p-Password)

For consistency with others similar above:

  • also available on Block Diagram cluster constants
  • Visibility only selectable in edit mode
  • If Style is visible, it is changable in BOTH edit AND run modes

 

 

If NI is truly serious about documentation being a critical (or just even an imortant part) of LabView software development, then LabView needs a serious documentation editor. Documentation is one of the hardest things to get developers to do and the current LabView just make it incredibly painful.

 

By that, I mean an editor that is not a modal dialog box, and one that can select more than one VI to facilitate copying of docmentation for controls and the VI itself. Subvis typically have many of the same controls of the parent VI and they generally have the same Description and Tip - so make it eeasy to document. Spell checking and the other suggestions in this reguest would  be great, but please, make it EASY to do documentation.

Charts assume that the X-values always represent evenly spaced points. With LabVIEW 's charts, you only provide the Y value, and do not specify the X value.
For arbitrary X-values, one has to construct something (usually involving shift-registers).

Often charts are meant to display values as a function of time. If one changes the acquisition rate, one would expect the chart to change accordingly.
As LabVIEW only allows you to scale (and offset) the chart's X-axis, it would be nice to have a timestamp input (for instance expandable form the chart's terminal).
 
Resulting chart would look like this (here two plots). 
 
Chart with time stamp.png
 

When adding items to a tree control using the EditTreeItems invoke nodes, the inputs include "Child Tag", "Item Indent", "Child Only?", "Glyph Index", "Child Text", and "Left Cell String" as can be seen in this screenshot.

 

There are property nodes for the tree control for accessing each of these elements, except for the "Child Text", which is an array of strings. It is possible to access this data as outlined in this forum post, but this method is somewhat involved and round about. 

 

I suggest that a property for the Tree class be created to access the Child Text array directly.

Hello,                    (sorry for my english, i will try to do my best)

 

I think the management of Breakpoints and  Probes is not logical and not enough powerful.


I propose a new approach. 

 

LabVIEV would need a real debugging environment, much more powerful, like this :

 

 

1st  :  Probe management is not logical

           Why ?  A probe is only to watch a value on a wire (not to stop the code)

 

anciennes conditions.png

 

2nd : To stop the code, the Breakpoint, with ou without condition(s) ... (conditional or unconditional Breakpoint)

3rd  : Conditional Breakpoint:


  •   A conditional Breakpoint stops the code on a wire, according condition(s) on this wire itself;

       or / and  according condition()s on other wires. (very powerful feature)

  •  The breakpoint condition use binary operators (C language), like a Formula Node
  •  To Use a Numeric value or a boolean value into a Condition, you must first place a Probe

      (Normal, before using a value, we must first take it.)


  •   The Conditional Breakpoints are only available with Numeric and Boolean values.

      (As the current version of LV)

 

VI_with_probes.png

 

The breakpoint Manager highlights the Breakpoint on which the right click has been made.

Inside the Breakpoint Manager, we can see the corresponding Breakpoint via "Find on Diagram".

 

 

total_1.png

 

 

 

 

I currently use a Menu Ring control to select which waveforms are displayed on some graphs. When there were about 30 different signals to display, selection was easy. However, I'm now up to over 60 signals to select from (and growing!). This makes the pop-up menu longer than the screen so scrolling is required and with so many items displayed, it’s difficult to find the required selection. It would be nice if the Menu Ring control could be hierarchical so that similar item can be grouped. That is, same principle as for typical application menus.

I reported what I thought was a "bug" in LabVIEW, namely that using Mouse events (Mouse Up and Mouse Down) on a Windows 7 platform that ran on a "touch-enabled" PC (in our case, a Dell Vostro) gave inconsistent and "wrong" results, I believe due to Windows "capturing" the touch events and deciding "for itself" whether they were Mouse Up or Mouse Down.

 

I realize this may not be considered a "New Idea" -- I'm posting this here on the suggestion of the NI Applications Engineer to whom I reported this "Feature".


Background -- I developed a "Push the Button" test in LabVIEW that works as follows -- one of two "buttons" on the screen lights up, and the subject is instructed to push the button if it is green, and to not push it if it is red.  We time how long the subject takes to push the button, and also measure accuracy.  The original test used lighted switches mounted on a board -- adding or rearranging switches involved carpentry.  However, implementing this in LabVIEW, using boolean indicators as buttons and putting a conventional touch screen (which acts like a USB mouse) in front of the monitor worked very nicely.  We could easily program button size, color, placement, etc., and by using Mouse Down events could tell when, and where, the subject touched the screen.

 

The only drawback was that the combination of monitor + touchscreen overlay was a little clumsy (and held together by velcro).  So when an all-in-one PC with a touchscreen display (like the Dell Vostro) became available, we transferred our program to this platform.

 

Except it doesn't work!  For example, if we use a mouse and click on a boolean control set to "Switch when pressed", when the mouse is pressed down, the control switches (as it should!).  However, when we do the same thing with a finger, the control does not switch on touch, but only on release.  The "exception" is if we leave our finger on the control -- after about a second or two, a ring is drawn on the screen and the control switches, even though our finger has not moved.  [Explanation -- first scenario is a left-mouse click, the second a right-mouse click.  Windows 7 interprets a long touch as "right-mouse", and cannot tell a touch is "short" until you let go of the screen].

 

I think this is a potential problem for LabVIEW, particularly as Touch becomes more integral to operating systems (can you say Windows 8?].  Note that pre-Touch, LabVIEW "controlled" the Mouse, capturing Mouse events and presenting them to the user, who could decide whether or not to "pass them on" to LabVIEW.  For example, it is possible to detect Mouse Down on a control, but by dismissing the Mouse Down event, prevent the control from being activated.

 

I think Windows 7 Touch is doing something like this with Touch, "capturing" the touch before "interpreting" it and sending it to LabVIEW as a Mouse action.  I'd like to see LabVIEW be able to "grab" Touch events first, so that the LabVIEW developer can use (and interpret) them as needed.  Otherwise, I may have to either (a) install Windows XP on this nice shiny new PC in the hopes that Touch will, in this OS, be interpreted as a Mouse Down (and my program will work correctly) or (b) give up on the Vostro and go back to my monitor + Touch Screen + Velcro.

 

I'm attaching a simple VI that will demonstrate the incompatibility between Mouse and Finger when run on a Touch-enabled Windows 7 machine.

 

A multicolumn list box is often decorated by a sub-vi via a control reference.

 

A common example would be coloring the background of alternate rows or columns.

 

In order to all columns or rows, a sub-VI must retrieve the ItemNames array via the reference to determine the number of iterations.

 

Add a property node for the MCL that returns the size of the ItemNames array directly so the ItemNames array does not need to be retrieved.

 

 

 

MCL - ItemNames Array Sizes.PNG

When creating a real-time app (.rtexe) intended to be run on multiple targets with target-relative references, the recommended technique is to create a build with a IP address of 0.0.0.0; then, using some other utility outside of the LabVIEW environment, copy the executable to the startup folder on the target.

 

Given that, it would seem reasonable to create a feature within the LabVIEW Project Explorer that allows for direct deployment to a specific RT target or targets from the right-click menu instead of having no option to select an alternate target(s).  If setting the IP address in the project to 0.0.0.0 is the recommended technique for creating a target-relative (versus absolute) executable, then LabVIEW Project Explorer should be able to key off of this value to take a different and more appropriate action.

 

The same would be true of the Set as startup and Run as startup right-click menu options.

 

 

Hi

 

Currently on a functions palette item (when you edit the palettes) you have the option of placing the VI contents as an alternative to the default behavior of placing the VI itself on the block diagram:

 

Place_VI_Contents.png

 

I suggest two additional options in this menu: 'Open VI' and 'Run VI'.

 

Two such options will enable us to bundle help-VIs, scripting VIs and examples directly in a sub-palette of toolsets, instead of going the long almost impossible way of building bin3 files for the Example Finder.

 

One of many current use cases we have at GPower is the ExpressionTester in our Expression Parser toolset:

 

Expression_Parser_Tester.png

 

The ExpressionTester is a utility, a small application actually, that lets the user investigate different mathematical string expressions before committing them to code, and it has no use as a subVI. We feel it has the highest chance of user discovery when positioned just with the toolset functional VIs (i.e. in the palette), instead of being buried either on disk available through a link in the detailed help file, or in a Tools menu item. But to use it from the palette today, the user has to drop it on a block daigram, open the subVI and run it. And then remember to delete it again from the block diagram, preferably with CTRL+Z to avoid contaminating the undo-stack. If we could mark that palette item as 'Run VI' then clicking it would just start the ExpressionTester utility.

 

Perhaps palette items configured to being opened/run/content-dropped instead of the default action should have some sort of indication on it, that clicking it executes a non-default behavior?

 

Cheers,

Steen

As a new adopter of the Unit Tetst Framework I was keen to export my UTF Results from the Result dialogue for use in an external test report (Word document).

The Save button creates a datalog file only suitable for Loading back into the same dialogue. There's no immediately obvious way to export your results in a readable format.

 

After scrutiny and assistance I found that you can configure automatic creation of HTML, ATML and ASCII formatted reports by changing your Project settings. Hmm. Not quite what I want.

 

I want to be able to quickly and immediately export my UTF Results to Clipboard or File in my chosen format from the UTF Results dialogue please.

 

UTF_Report_Export.png

When connecting to an RT target from the LabVIEW Project view, LabVIEW RT automatically makes changes to the lvrt.conf file's startup app settings. I’ve never really understood why it needs to do that. I suppose that for some users, maybe less experienced users, this action enforces some sort of consistency that may help to avert potential tech support issues in some scenarios. However, in my case, it is an annoyance that I have to manage.

In my opinion, the LabVIEW Project view should not alter the startup app settings in the lvrt.conf file unless you use the Deploy feature from the menu. (For PharLap-based controllers, it would affect the ni-rt-.ini file).  If you use the Deploy feature, then that behavior may likely make sense.

NI should consider either eliminating the automatic edit to lvrt.conf when connecting to an RT target from the Project view and/or editing lvrt.conf only if using the Deploy feature is used.  If for some reason NI feels that the behavior is justified for some technical reason (and I would be curious to know what that reason is), what I would like to see in lieu of that is a LabVIEW option (checkbox setting) that gives the user the ability to prevent that automatic edit.

 

Currently, the specific changes that connecting to an RT target makes to the lvrt.conf file are:

  1. It changes the name of the startup app back to the default name of startup.rtexe.
  2. It changes the value of the key RTTarget.LaunchAppAtBoot to FALSE.

Deploying a library to an RT target should also not alter the startup app settings.