LabVIEW Idea Exchange

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

The resizing function calculates the new position of controls based on the previous position.
But the position is an integer. So the calculation is rounded. If you resize several times a VI, rounding errors occur and position control shifts.
This is particularly true for complex controls (like a graph) that have been modified

Solution
Using the resolution of VI and position controls registered at the creation of VI and calculate the coefficient of expansion / displacement from these values.

 

This LV typedef for the Waveform Graph property Cursor List is missing Line Width and Line Style! This is probably a solution to the mystery behind another post Show Attributes Selections I made earlier today. In order to completely define our Cursor List properly with one Property Node, those two elements must be part of this public typedef.

 

CursorListProperty.png

Currently, there is no way to get a straight line as a cursor. There is always a break of some sort that shows the (x,y) position of the cursor. I just want a cursor that is a purely vertical line with no visual indication of the y value. The closest I can come is to select the Cursor Style  Attribute that I have shown in the picture, then select "+" as the Point Style Attribute. The current method is illustrated by (A), and what I want is (B).

 

There are many cases that I only care about the value of the cursor in one dimension, but not the other, so a straight line would be more appropriate than having a break on the value of the other dimension.

 

SolidLineFreeCursor.png

I use a *lot* of OpenG and Internal reuse VIs (they can make up to ~95% of the number of VIs in a project), and, as they're all considered validated and released, I consider them the same way as anything in vilib.  To that end, I don't want to see them in my project VI Heirachy, so I'd like to see a method to selectively filter all items from user.lib (that's where VIPM puts all my reuse stuff, as well as OpenG stuff).

 

 

AddAButtonToFilterReuseComponents.gif

Today, the management of error codes is a little bit complicated. (Error code file to include in executable properties ... )

 

It could be intersting to add a new entry to a project which could list all custom errors only available to the project.

 

This file or project property could be associated with the project as a source code !

 

How many time you'll get an old application ... without all files ... And error code file is a source file. So the error code file should be located near the project ...

Or best inside the project !

 

The best way to manage the custom errors would be to edit them in the project properties like "conditionnal disable symbols".

 

Simplifying the error code management will reduce the none managed errors ( The famous 488 error !!!! which i hate ! )

Easy one:

Right click on an item in the project explorer, you have "Find Callers" and "Find SubVIs", select one of these, you get small pop-up window with a list, double click on an item of this list, the item comes to front and the list disappears :smileymad: ... I always get mad at that behaviour!

 

I'd like an option to OPEN all Callers of the VI, I mean of course all the callers that are part of the project in which your are.

 

I made a utility VI doing that in LV 8.6, if anyone likes it here's the snippet :

 

open callers.png

Pretty self explanatory.  

Place an image on the front panel.  

Use the "Get Color" Tool from the tools palette on a color on the image.

The foreground color should ideally be the color you clicked on, however it's always Black with a White Background.

I'd think that getting colors from an image should work like getting colors from anything else on the front panel.  It would be pretty nice to be able to match the FP elements with an image thats on it for better GUI design. 

It should be nice to modify the "Unflatten from XML" in order to be more tolerant with data evolutions.

 

For example :

 

 I used the flatten/unflatten to/from XML to store my applications configuration. It's rapid ... and it works fine ...

 

But during the software life, you often have to modify the data structures ... and then you'll get problems !

The old XML string is no more compatible with the new data structure ! ... and old config files are no more usable !

( And sometimes only for a single new field !!! )

This could generates problem when you deploy a new version of your program ... and the old config files can no more be reused !  Smiley Mad

 

 

So it would be nice to have a more 'Tolerant' XML parser :

 

  • If the field exists in the old data structure and in the new one, then the field can be loaded from XML.
  • If a new field has been added to the cluster (Data structure), this new field could be initialized with the default value of it's data type.
  • If a field has been deleted in the new data structure, the field in the XML file should be ignored

 

TolerantXmlParser.PNG 

 

For the moment the Xml unflatten generates an error when the type definition is not compatible ... and nothing is done.

 

The new behaviour could be to load "Compatible datas" (by name and dataType), initialize new fields, ignore deleted fields,

and a warning error cluster could be generated  to inform that the XML parsing could be done ... but XML schema is not completly compatible.

 

 

  

 

 

LabVIEW allow you to set unit to the numeric controls.  But if you try to pass its value to some LabVIEW VIs or functions (e.g. "Simulate Signal"), the wire was broken.  LabVIEW VIs doesn't handle the value with a unit.  It makes the unit setting useless!
 
Untitled.png 
 
 
I got this idea from a Customer, here is his original comments:
"我编写了一个简单的程序,在前面板的旋钮输入控件附上单位vlot,然后在程序框图中放置了一个仿真信号控件,接下来将前面板中的旋钮控件的输出端连接至程序框图中的仿真信号控件的幅值输入端,但在即使帮助窗口中出现了一个错误,为:数据源的数值单位为volt,数据接收的单位为no Nuit,当然程序就不能运行了。于是我采用通用单位符$1的办法也没成功,最后从网友那儿得知在LabVIEW中只能够对数值型控件进行附单位。后来我仔细想了想,按照LabVIEW现在的思维方式,只能够对数值控件附单位,那么在其他运算中就不能够进行单位转换了(例如微积分运算),因此每遇到这种情况后,先要仔细排查一番所给出数值的单位,然后再写出适当的程序,这样岂不是很麻烦?能不能够在其他控件中也加入单位转换功能,这样在今后写程序就不再这样麻烦了! "

Over the years the wiring routines have been improving a lot, here is a next step that would make wiring even easier.

 

I call that "Bad wire gets cleared automatically when it can", it would take me 50 lines to explain, so here are to screen shots to explain what i have in mind :

 

ex_a.png

 

ex_b.png

 

 

It would be nice to add a new control/indicator in Labview, which could view and edit the content of a cluster ( recursivly ) in a tree view.

 

The viewer could looks like the Microsoft Dotnet Property grid.

 

propertyGrid.PNG

It should be nice to add "Docking" and "Anchoring" features in Labview.

 

This could help creating "autosizable", professional applications.

 

For the moment, splitters and "control fitting" is a little poor, comparing to DotNet, Java ...

Just like when a breakpoint is reached ! Smiley Wink

In most of the cases, front panel is not use for a subVI, but it always disturbs me be opening too many windows.  So, there should be a new kind of VI that only have a block diagram.  Terminals could be designated on the block diagram.

 

 

帖子被Qizhen在 02-09-2010 11:13 AM
时编辑过了

We all use clusters and arrays of clusters to represent complex data. With LabVIEW, it is practical to build a cluster to represent the data in memory and shape it to display it on the front panel. Using the same object (control or indicator) to display the data on a graphical user interface and to store the data in memory avoids overloading the memory and simplifies the code.

 

But most of the time, all the data don't need to be shown on the front panel! Some elements need to be hidden. If we use a probe to check the content of such a data structure for debugging purpose, LabVIEW just shows the control as it is supposed to be displayed on the FP. The hidden elements are not visible!

 

Here is an example of a probe put on one of my data structure (array of clusters) :

 

CLUSTER.png 

 

And here is the equivalent representation in a tree view. On the first column, the labels. On the second column, the values.

 

tree.png 

 

What is your prefered representation? 

 

PS : Such a tree view representation can "easily" be obtained from a control reference or from an XML string (with the Flatten to XML VI). Nevertheless, the Flatten to XML VI returns an error when it encounters strings with accentuation.

 

I'd like to have the ability to save a LabVIEW search (Find), with some commonly used parameters.  It might be nice to choose between saving the search globally, or in a project.

 

Also, I'd like to be able to recall recent search results.  Often, my searches are hierarchical: I search for some high-level stuff and then do a more specific search.   I don't want to lose my high-level search results, when I drill down and do a more low-level search (for example, the low-level search might be fruitless, so I need to go continue on with the rest of the results from my high-level search).

Having a complete API for zip file

Currently it has :
- New zip file
- Add a file to zip file
- Close zip file and add a comment
- unzip the zip file to a folder

This API is not quite complete.

Example of use of ZIP files: In a data streaming application, you want to make an archive of recordings files. The data files average 500 MB Once compressed, they do more substantive than 50MB. You create an interface to assist the user in steps of compression. Once compressed, you want to propose an interface for retrieving compressed recordings.


The ideal is to list the files and clarify some information, such as track number, recording time and a few other indicators related to data.

But to do that, we 'could' use two ways:
- The properties of the zip file.
- An additional file that would read that to see them.

 

Several problems arise:
- It is not possible to read the commentary added with the close function.
- It is not possible to edit the commentary added with the close function.
- It is not possible to decompress a single file.
In the example, if we unpack all files to read properties, it'll take time and a lot of CPU resources.

 

It would require full management functions:
- New file
- Close file
- Add a comment
- Read the comment
- Erase the comment
- Add a file
- Delete a file
- List all file (with or without a mask)
- Uncompress a zipped file to disk
- Uncompress a zipped file to memory

- compress and uncompress a string in memory (usefull to optimise the network data flow)

 

In the ideal case, a zip file should be considered a folder. So we have all classical file functionality to manage it.

Hi,

 

Another behavior that I find annoying isthe way LabVIEW manage the tabbing order with cluster.

 

Imagine a front panel with clusters (I thinkthat this is not unusual and that you will have no pain to imagine this). If acontrol embedded in a cluster has the key focus, the TAB key will only give thefocus to controls of this cluster. It is impossible to navigate outside thecluster!

 

In the following front panel I wouldexpect the following sequence when tabbing: Cluster_1.String_1 -> Cluster_1.String_2-> Cluster_1.String_3 -> Cluster_2.String_1 -> Cluster_2.String_2-> Cluster_2.String_3 -> Cluster_1.String_1 -> …

(According to  the cluster tabbing order)

 

CLUSTER.png 

 

Hi,

 

Key navigation is essential when a PC isused in an industrial environment that limits the use of the mouse (rackedsystems on production lines, temporary connection with a laptop to an RT target, etc.).

 

One lack is the impossibility to associatea simple shortcut key to a Boolean control (CTRL+S for example).

 

dialogbox.png 

 

Of course we can catch the key down event in a newcase of an event structure. But, we then have two cases forone action (one for the shortcut key and one for the Boolean value changed),what is not practical.

 

In addition, since LV 8.0 (I guess!) it is notpossible to underline one letter of a Boolean text to stress the shortcut keyassociated with the control.

 

file.png 

 

From my point of view, this is an essential fonctionnality of any development system.

 

Populating the Tree Control with items takes very long time.  I suggest improving the performance of a tree control.  Many other applications have tree controls that are populated in a small amount of time, so it should be possible with LabVIEW.

 

I know of three ways to populate a tree control.  The first is to individually add items using the Add Item invoke method.  This method takes a very long time.  Adding 15,000 entries took over 180 seconds.

 

The second way is to use the"Add Multiple Items to End" invoke method.  This took over 20 seconds for 15,000 entries.

 

The third way is to programatically respond to the user expanding an item in the tree and populating only as necessary.  I assume that this is fast, but it seems like a lot of work to do every time a tree control is used that could have a lot of items. Maybe LabVIEW could improve performance by using the third approach internally for the programmer. 

 

Currently I am hesitant to use a tree control because of performance.  LabVIEW is a great product, and making the tree control perform better would improve LabVIEW even more.