LabVIEW Idea Exchange

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

now labview take the reference of position of a control, in the top left corner of any part of a control.
this behavior generate some problems, frequently the top left corner it's the label or caption of a control, this textual part can be modified in execution time, in this moment, the reference of the position of this control it's changed, if you generate some movements of controls during the execution, there don't work properly because this change of reference.
sugestion:
change the reference of a control at the top left corner of body of control, and the position off the labels relative of this origen.

 

reference of position of controls.png

 

In Labview, tabpages are not treated as panes ! 

 

So you cannot put an object in the tabpage and applicate the "Fit to pane" in order to have an autogrowing objects.

 

For example :

 

  • I add a tabControl on a front panel ... i made it autogrow with a "Fit control to pane"
  • I add a Multicolumn listbox in a tabPage (or a chart, a treeview ....)
  • And then i want that my listbox grows automaticaly with the tabpage ....
  • And here no more solution than "Do it yourself" !

 

Because the tabpages are not treated as "Panes", the power of Labview HMI is very limited ...

 

It would be nice to treat the tabpages as panes in order to be able to build autogrowing, dynamic HMI.

 

The mechanisms of dynamic resizing should  be fully improved in Labview ...  

 

No to "static fixed sized window" ... Yes to "autogrowing applications" ...

 

 

Provide a new command line option to show the block diagram of a VI in addition to and above the front panel automatically. I almost always open VIs in my project folder from a terminal and most research and development work is on the code. See current arguments here: https://www.ni.com/docs/en-US/bundle/labview/page/lvhowto/lv_defined_args.html

I've been wondering for years now why the LV Save (& Save All) dialog is quite unusual in terms of its layout & usability.

 

Redesign the "Save Changes?" dialogin accordance with the standard dialog design criteria as follows.

 

  • Resize the dialog to be somewhat bigger than now.
  • Place the Apply same action checkbox & the Affected items list at the top half of the dialog. Remove these items from the tabbing list, so the user can easily tab among the other 3 buttons, with Save highlighted by default.
  • The Affected items list is not sorted properly, but in the Explain Changes dialog, it seems the VI List is alphabatically sorted. So when you select a VI in  the Affected Items list & click the "List unsaved changes..." hyperlink-like text, the selections are confusing to the user. PFB snapshot.

Save Changes Dialog.jpg

 

  • Additionally, the selection in the Affected Items list is not actually a selection, but looks like only a marquee. It gives a false impression that the selected item can be edited. Fix this.
  • Make the Affected Items list to be vertically scrollable, instead of the current horizontally scrollable style, which is highly cumbersome.
  • Change the "List unsaved changes..." hyperlink-like text into a button that is prominently visible. New users think that this would open a web browser.
  • Place the Save (All), Defer Decision / Don't Save (All) & Cancel buttons at the bottm right of the dialog in a horizontal fashion.
  • Add the Help button, like in many other dialogs in LV.
  • Keep the name of the dialog to be consistent - "Save changes before closing?", instead of like "Save changes? (Close Project)" - The Close Project text is misleading.

Many times I like to keep my memory footprint small by using "right-size" data representations for my arrays.  Unfortunately, in the event I need to sum the array elements using the 'Add Array Elements' I am stuck in rollover city.  I can then blow up the data to a larger size or write out the sum (or product) longhand.

 

AddArrayOutputConfig.png

 

I would prefer an output configuration to let me specify the representation of the array sum or product:

 

OutputConfigDialog.png

Hello,
I believe many of you had already the problem that you accidentally changed a VI's from the vi.lib  and saved it.

 

There should be an option to use the complete vi.lib Read only!
I do not want to change the VI's in the vi.lib at all! Never!

 


Thanks for your support.

Excuse for my bad English.

 

 

 

Sample of an open VI from the vi.lib

Unbenannt1.jpg

 

 

and in the Options Menu it can look like this:

Unbenannt2.jpg

 

It would be nice if we had a C++ like class template functionality for LabView classes.

 

Templates are a powerful concept. Being able to provide the type of control in a class at edit time would allow users to create reusable classes, like data structures. It would be nice if we had a way to select a control and make it part of a template, so that we could pass the data type of that control in at edit time without changing the base definition of the class, and thus be able to reuse the class in several instances and never have to rewrite any code.

 

A great example would be the node of a tree. If we were to have 2 classes Tree.lvclass & TreeNode.lvclass.  Assume that the Tree class contains an array of nodes and VIs to add, remove, insert, and recurse the nodes in the array. Assume that a node contains a numeric which is the index in the tree array to its parent and an array of numerics which are the indexes into the array of the nodes children. We also need a control in the node that stores our data. We will call it data, and it will be of type LogData.lvclass.

 

The tree works well and great for children of LogData.lvclass, but if we decide we now also need a tree to hold FilterData, we can't just swap out LogData.lvclass for FilterData.lvclass in the TreeNode.lvclass. Because then we wouldn't be able to put LogData classes into our tree node anymore.

 

Class Templates would allow us to tell the TreeNode Class that the type of the control data can be changed at edit time, and in fact is worthless unless we give it a type. Thus we can create several instances of the Tree class and feed the desired type down into the TreeNode, and we can in fact have 2 different trees containing to different types of data, while still reusing the same Tree code.

A shortcut menu like this one would easily move a label by right clicking the label and selecting the snap location.

The move would not change the locked state of the label.

Only the label should change position, the control should remain anchored.

It would especially make the middle right and middle left positions much easier to get to on single-line controls.

 

LV Idea Exchange Label Snap.png

 

The mockup is purposefully large to give visual distinction between locations.  It could instead be more compact, but this worked for an example.

Currently, there is exactly one undo buffer for everything.

 

Scenario: I make a minor code edit,

... then run the VI to test if we get the correct result for a variety of control settings,

... and then stop the VI and decide that we actually don't want to make the code change (e.g. because the results are wrong!).

 

--> for some reason, we need to press ctrl+Z many (many!) times, because first we need to "undo" all the control changes during runtime.

 

I suggest that two undo histories should be kept, one for edit changes and one for runtime changes.

 

In the above scenario, pressing ctrl+z after stopping the VI would immediately start undoing the edit operations.

 

Message Edited by altenbach on 09-04-2009 08:20 AM

I've been working with a ton of different projects lately, and I am frequently changing properties settings on them. I instinctively press Ctrl-I to launch the properties dialog, then I sit and wait a few seconds before I realize that Ctrl-I doesn't do anything in the Project Window, and I have to go right-click the top-level project item and choose Properties instead. Let's make Ctrl-I launch the Project Properties dialog, just like it launches the VI Properties dialog for VIs.

Hi, i wanted to suggest the creation of a separate utility software that would convert a VI from any version to any other version. This would save people a lot of time by not waiting to get it converted from their respective threads. Also it would serve for more people to able to reply on the forum(me included since i am using LabVIEW 8.6 and most of the posts contain VIs made in 2009 and 2010 even though most of the time the same functions are avalable in 8.6 😞 ).

 

 

PS: Sorry, got no pictures

 

Scenario: You have a number of classes, and they are perhaps even members of a library. Now you find out that the folder one of the classes and it's member files are stored in on disk should be renamed, or you wish to move a number of the files (as a group) to a different folder...

 

End result; LabVIEW will at best ask you where the files have gone, and then typically fail(!) to relink and get back to runnable code. At worst you end up at a dead end/nightmare, with a "class or library corrupt"-message...(editing the XML content of the class file might solve it yes...but that's not a proper solution).

 

I understand that it can be complex for LabVIEW to track the changes done externally, and/or be able to link everything back up, but it should be able to do it better than it does (not) with the guidance of the user.

 

And if that's too big a task, could we at least get the possibility of renaming folders on disk from the project explorer - and *then* get LabVIEW to automatically handle the changes correctly?

 

PS. There might be ways of doing this already without running into trouble that I'm just not aware of (hopefully!), but the suggestion still stands, as it is obviously too vulnerable and counter-intuitive as it is now...

 

 

Wouldn't it be great if National Instruments could support AUTOSAR SWC-development in LabView. The AUTOSAR standard with its module-based approach fits perfectly for LabView. I am convinced that your company could do a great job in implementing an easy-to-use environment for this emerging standard. I have worked with the tools from Vector and in my opinion everything there is very messy and illogical.

 

Best regards

Mats Olsson

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?

 

The System Numerics are driving me crazy!  My wants are simple, a radix display and increment/decrement controls.

 

System Spinner = Increment/decrement but no radix.  Why the property page gives you the option is a mystery.

System Numeric = Radix but no increment/decrement.  Argh.

 

When you have the default style set to System, the created controls leave you in no-mans land.  A system spinner with invisible spinners.  If you wanted a spinner, you have to make them visible.  If you wanted a numeric with radix you have to replace, and then resize.  It seems nobody is happy.

 

I seem to want the numeric more often than the spinner myself, I would be happier if it was the default.

 

Bugs: there are issues with the property pages versus right-click menu settings (LV9 hopefully fixed).  Besides giving you false hope with the radix display of the spinner, the checkboxes for increment/decrement do not always reflect the current state.  It often shows up unchecked even when they are visible.  Just adds to the fun.

 

tl;dr : Make a single system numeric with both radix display and increment/decrement buttons.

Imagine the following:

 

When you hover (take your mouse) over the SubVI node in the callers diagram, the subVI code is brought up as an image in a small rectangle size. And that disappears when the mouse is taken away from the subVI node.

 

Demonstration (snapshot):

 

When mouse is hovered over 'SubVI Two.vi',

 

Caller Code.png

 

How does it help ?

 

1. Understanding a prototype code, where there is less emphasis on creating VI Icon and naming SubVI properly, quick glances of the subVI code can speed up the understanding/edit time.

2. Even otherwise, shipping code, could be sometime hard to understand and require often switches to subVIs block diagram.

3. Huge subVIs code, definitely, the image may not make much sense (as it is contained in a small rectangle), but could be useful to get some basic idea or to clear ambiguities between subVIs expected behavior.

4. This feature must be an opt-in. Not every time, this behavior would be desirable, hence this must be Tools->Options opt-in.

5. Does not open up the block diagram, which means that you have lesser VIs to deal with it in taskbar.

6. Drawback: This could hurt the edit time performance a little but, as LV would have to do some extra work to bring up the image..

NI LabVIEW allows VIs with invalid characters such as "?" in the filename inside an LLB file as shown below:

LLB.png

 

However when it comes to building a Source Distribution / TestStand Deployment that uses this file it returns an error as shown below:

Build Error.png

 

This inconsistency within LabVIEW is quite frustrating where one part allows invalid characters in the filename and another part will return an error. Since the invalid characters are allowed in VI filenames within LLB files I would suggest that the LabVIEW build tools also handle them graciously.

 

During the build process it could quite easily rename the file "pi40iv Can Connect Channel?.vi" to "pi40iv Can Connect Channel_.vi"  and link the VIs that use it to the newly renamed file. The build tools already contain the ability to rename files by adding prefixes so something like this would not be that difficult.

 

While people may argue to just rename the filename within the LLB and be done with it, the fact that the LLB is a perfectly valid file in the Development Environment but causes problems when trying to do a build is a problem that should be rectified.

 

The LLB in question is one that is not developed by us but is part of a Pickering Driver Installation obtained from the following location:

http://downloads.pickeringtest.info/downloads/drivers/IVI/

Therefore every time we install a new version of the driver we would need to rename the VI filename within the LLB file.

Currently we have File >> Save then File >> Apply Changes.

I would like save and apply changes for typedefs in one operation. So either replace Apply Changes with Save and Apply Changes or add this as another option to the menu.

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.

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.