LabVIEW Idea Exchange

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

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.

 

Actualy when we select a cluster Bundle or Unbundle when you hit ctrl-f you get this find dialog:

SelectClusterBundle.png  CTRL-F -> FindClusterBundle.png

 

What I want is to select the text in the cluster and get text Find dialog:

 

SelectClusterElementName.png CTRL-F ->¨FindClusterElementName.png

 

Plus... that should work for Property Node and Invoke Node

When I am searching for occurrences of a particular items in my application, I often run into this issue: The search feature only allows you to search for text or a type of object, but not both.  If I need to find a particualr VI Server method call, I can either search for all invoke nodes (which returns WAY too many to sort through) or I can search for the text in the method name, and end up with results that have nothing to do with invoke nodes.

What we need here is the ability to specify multiple search criteria and logical operators to tie them together.  So, I could do a search for invoke nodes with the text 'Abort' in their name.  This would be a big help in large applications as well as those that use a lot of VI Server or .NET code. 

I would like to be able to make static event registrations for an element that is contained within an array. Note: this is not just a registration of an event that happens to the array, but an event that happens to an element in the array.

 

This can currently be achieved with dynamic event registration, but I would like static event registration for two reasons: less code, and dynamic event registration must occur with a FP showing whereas static event registration never errors (meaning dynamic events can pose a problem for plug-in architectures using SubPanels).

 

 Here's one specific example achieved with the current method of dynamic event registration. I have an array of a cluster that has two elements, but I only want to know when a user clicks on the Boolean.

DynamicEventReg.png

 

I want to be able to statically register that same event, which would look something like this (in 8.6.1):

 

StaticEventSelection.png

 

As a bonus, as part of the event data cluster on the left-hand side of the event structure, I would like an I32 array called "Index" that gives the multi-dimensional index of the item clicked.

Message Edited by Laura F. on 06-03-2010 04:45 PM
In the Application Builder dialog under the icon category, you have the option to create an icon using the icon editor.  After you complete this and save it, you are brought back to the app builder dialog.  However you still have to select the icon file and add the .ico file to the project.  This should automatically be added when an icon file is saved from the icon editor.

A chart can be used to display each channel of acquired data on its own separate plot area for comparison with a common time axis.  If the number of channels varies in a running program, the number of plot areas should be changed, perhaps by changing the Number of Legend Rows.  The number of plots in a stacked chart cannot be changed at run time however.  This issue is known to NI  but apparently is not an easy fix maybe due to memory allocation issues.  I am posting it here in hopes of showing enough interest to get this some attention.

 

http://forums.ni.com/ni/board/message?board.id=170&thread.id=296053&view=by_date_ascending&page=1

 

Even though I use the tools selection in the automatic mode, many times I need some specific tool not accessible in the automatic mode or force one like "Position/Size/Select". Sometimes, mostly designing User Interfaces (UI) that takes all screen, we got the Tools Palette blocking access to something. Then we move the Tools Palette until it get in front of something else.

 

The idea is to have an option to have all buttons in the toolbar. Some programs allows you "dock" just dragging the over the tool bar.

 

Many times we have plenty of space to have all buttons there, if not, we can have a second row of buttons. That will be nice to add more buttons as we wish.

 

tools palette buttons in the toolbar.png

 

PS: I added a swap button between the foreground and background colors. The idea is explained in this thread Swap Colors in Tools Palette.

Allow the Select comparison function to accept an array as its S Select input.  This would allow the result of an array comparison to be followed by the Select function and if that array were then wired to one of the Select T or F, would allow each array element to then be replaced individually based on the separate boolean result.  One of the Select input (T/F) would be allowed to be a scalar so the array element could be replaced by that one value if desired.  This capability would provide an alternative to performing this operation with a For Loop and take up less diagram space.