LabVIEW Idea Exchange

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

Hello,

 

I would like to analyse dynamically and recursively the content of a variant objects.

 

For the moment, the Variant content analyse is quiet "low level", and not very userfriendly, with type casting, integer comparisons without enumerate values ... and so on ... Smiley Sad

 

This kind of Variant analyse library has been made by JKI in their tools Smiley Indifferent. ... But are all cases threated ? ... what about evolutions ? Smiley Frustrated

 

It would be nice to add such a kind of API directly into LabVIEW, complient with all existing types, and with evolutive behaviour according to new LabVIEW versions. Smiley Very Happy

 

It should also be nice to create enumarate values to be abble to easily know what is the content of a variant.

 

These functionnalities already exits with object references ... but variant has sometimes a more "dynamic behaviour " !

 

Here is a short, but certainly not complete list, of desired functions : (In a textual description way)

 

  • enumObjectType { cluster, Array , numeric , string , ... }  : List of all kind of objects
  • function getOjectType( object as variant ) as enumObjectType : Gets the type of a variant
  • function getObjectLabel( object as variant ) as string : Gets the label of an object
  • function getObjectCaption( object as variant ) as string : Gets the caption of an object
  • function getObjectValue( object as variant ) as variant : Gets the contained value
  • function getObjectContent( object as variant ) as variant [] : Gets an array of variant objects contained in the aggregate object passed as parameter
  • function getObjectAtIndex( object as variant , index as int ) as variant : Gets a element of an array at the specified index
  • ...
  • function setObjectValue( ...
  • function setObjectCaption( ...
  • ...

 

With such a kind of library, it would be simple to create powerfull, dynamic tools !!!

 

 

To make a comparison with TestStand, i like very much the API which give the ability to analyse and modify recusively the content of a "PropertyObject". (Very complete and open API Smiley Wink , Thanks TestStand staff !)

 

Thanks.

 

Manu.net.

This idea comes from my experience in Simulink.

Suppose we have a hirearchy like this:

Main.vi---->Subvi1.vi---->Subvi2.vi

 

Now, if you are at "Main.vi" and you want to see what is there in Subvi2.vi, the normal procedure would be:

1) Open Main.vi Block Diagram

2) Open Subvi1.vi Frontpanel and Block diagram

3) Open Subvi2.vi Frontpanel and Block diagram

 

So now, we have three front panels and three block diagrams, a total of six LabVIEW windows open in front of us. If the application is more complex, the number of these "LabVIEW VI windows" would be even more, which makes it difficult to transition within SubVIs. Some would use the method of "Find All Instances" to find its place directly in the caller VI, but that is not good if you have multiple instances of SubVIs being used in your program.

 

My idea is, why not have a Single LabVIEW Front Panel and Block Diagram window, where we have a "UP" control, like the one in windows explorer, where we keep on moving between SubVIs just like any other folder in explorer, like the way it happens in Simulink?

 

So it would be something like this:

 

When you are inside the SubVI, a "Up" arrow should appear, as shown in the image below:

 

Main.JPG

up.JPG

 

 

I am not sure how much this idea is feasible to implement in LabVIEW, but it would certainly be a nice feature, given it reduces the confusion with multiple open VIs when a SubVI BD is opened which is lying deep inside the hirearchy level.

Problem: during executable builds LabVIEW automatically generates temporary files in the build directory (in the uber cool l4bv13w directory this is created automaticall...). Unfortunately my automatic synchronisation tools that I use pick up these file system modifications and attempt to sync them to the cloud. This leads to two possible problems:

 

1) LabVIEW deletes the files before my sync tool has uploaded them (sometimes ok, sometimes the sync tool gets confused as it has already generated a file change list)

2) LabVIEW build fails as the sync tool is "holding" onto the file during upload.

 

 

Solution: These two problems could be mitigated if I could specify a temporary path during the build process that is not being automatically synced. The build could do whatever it wanted to this directory and only copy across the final files when it was done. This would also perhaps solve a problem when the build fails due to long path names, as something like c:\temp could be used for the build.

 

PS: I know this can mostly already be done by jumping through a few hoops using a post build actions and doing it "manually", but it would be nice if there was an easy way to do this within the build window

When you navigate through Labview code and go deeper in VIs hierarchy you end up with dozens windows open on your monitor.
Lets create special action for opening subVI (like existent Ctrl+RightDoubleClick) which will close FronPanel BlockDiagram of VI from which you open new one ?

If you've got a project open, any new VIs you create automatically get added to the project.  It'd be nice if there was a way to disable this feature.

 

I find the feature frustrating because:

- I often create new VIs that I never intend to save, just to test out some logic quickly.  However, I can't just close the VI -- I need to go and remove it from the project too -- and this also leads to a dirty dot in my project (and extra work).

- I'd prefer to have full control over which VIs get added to my projects, and where they added within a project.

- If you've got more than one project open, you have to be careful about where you press "ctrl+n" from.

- I've found myself in situations where I close a project after creating a new VI, tell LabVIEW that I don't want to save changes to the project, and by doing so inadvertently lose the code in the new VI because I'd overlooked that automatic association.

 

It took a call to NI to find a vi that would display the version information on the front panel of an executable. He sent me a vi that is found in vi.lib\Platform\fileVersionInfo.llb. I use the version information to control the version of the software that production is using in the automated test stand that I designed. It would be very helpful for this llb to be part of the function pallet.

Currently, when you have multiple LabVIEW VIs or projects open, there are individual windows associated with each. (2 for each VI) This can quickly get out of hand. I would like to see a Tab View implemented similar to internet browsers. Thus, each LabVIEW session (i.e. each VI or project currently open) would be represented by a single tab within one "master" LabVIEW window. When you click on a particular tab, the block diagram (or front panel, depending on which one you last viewed) is displayed for that particular VI. Each project would have its own tab as well. This feature should help users to better manage multiple open VIs and projects. 

I like to see an option to compile for a previous version(s) of the runtime engine, kind of like the save for previous version. That way we could keep our development system up to date (and another reason to keep your SSP up to date) and still support older working designs that need support. Maybe even an option when you open a previous version project to keep it in a "compatibility mode" for that runtime engine.

When using the waveform datatype in my applications I noticed that the T0 field of this datatype is getting out of pace with the system clock of the machine of where it is running on.

The origin of this behaviour is that time synchronisation only takes place at the start of a measurement session after which waveform timestamps are derived from the measurement device's clock and not from the system's clock. Small differences in clock accuracy cause the clocks to run out of phase.

This effect is especially noticable on applications that are running 24/7 e.g monitoring Industrial continuous processes for weeks at a time.

When this happens and data is saved for analysis afterwards there could be problems synchronizing  this saved data with data of other sources because timestamps are different.

The only way to prevent this is stopping the task and starting it again but this is not always possible due to the nature of the processes monitored.

It would be very nice to have an option in the AIread function  that can automatically synchronizes waveform timestamps with the systemclock on a timely basis.

Funtionally this would be something I programmed in the attached VI.

[FORUM: The below message is a copy of what I submitted on NI's feature request page, but I figured I would see if people here think its a good idea?!!]

Hi!

I would like something similar to this:

In Multisim I can drop a "comment" on the schematic block diagram. This will allow me to type in a (lengthy) comment and when I click ok it drops a pin icon on the schematic page.

To show the comment, mouse over it or right click the pin and select "show" which will display comment field regardless of mouse-over status.

This feature would be great to drop in comments in dense sections of complicated code, such as nested loops where the inner loop/case might take up very little screen area, but it would allow me to do this without taking up much diagram space (except for when the comment is being displayed, at which point it should behave as a "on top/front" text field, covering code below it.).

I for one would use this A LOT when writing code, but I can hardly claim that it is more than a trivial necessity....?

Sometimes you want your code to be inflexible and basically foolproof yet sequenced and compact. As a replacement to the stacked sequence structure, I propose we add a scrollbar to the flat sequence structure. Another improvement: we could incorporate integrated naming and add labels under the scrollbar so you could see all the frame names and where you'd have to scroll.

 

CropperCapture[51].Png 

Hi, first I'd like to say I am new to Labview, just passed the CLAD.  I recently came across a post by someone who mentioned how difficult it can be to cut and paste code in Labview (or I guess even select everything necessary to make a SubVI).  I thought a lasso select tool would be helpful in this case.  There could potentially even be multiple versions, such as freehand, and one that can draw an arbitrary shape with straight lines (would be like drawing a wire around what you want to copy, and at every point where you want to change directions double click or something).  I actually saw someone request something similar in an old post, but did not see this in Idea Exchange.

I understand the complication of vertical cursors in charts, but why not horizontal?  I often need to represent high and low thresholds during continuous acquisition and have to turn to my own homemade functions to get a graph or xy-plot to appear like a scrolling chart, just to have horizontal cursors. 

Hello,

 

It would be nice to add the ability to resize front panel objects, not only by pixels, but also by a percent value. (Like in microsoft office)

 

It should also be nice to add a "Proportionnal" size update. 

ResizeObjects.PNG

 

The front panel object resizing (by mouse directly on the front panel) could also include a way to resize an object proportionnaly. (For pictures for example)

 

I think that this feature is available in MS office Word, by using the "CTrl" key in combination with mouse selection :

 

  • Resizing by mouse selection without "CTrl"  ==> Non proportionnal resize
  • Resizing by mouse selection with "CTrl" key ==> Proportionnal resize 

 

Manu.

 

 

 

 

There are many array functions that don't need to depend on the dimensionality of the array - for example most of those in the "Probability & Statistics" menu (Mean, Median, Std Deviation etc) and some in the Signal Operation (like Scale, Normalize).  But if I want to use one on a 3D array, I must first make a copy by reshaping to a 1D array, which can be very memory-expensive.  I'd like a node on the "In Place Element Structure" which accepts an array of any dimension, and makes the data available as a 1D array of that type.

 

I've suggested a similar idea before here, but perhaps I made it too complicated to receive any comments!  I keep running into this problem, so lets try again.  Smiley Happy

 

For consistency, the Compound Arithmetic node should provide the Output Configuration property in the same way as Add, Multiply, and most of the other Numeric functions do.

 

OutputConfiguration.png

I thought a little bit about how this suggestion should be called.  I also feel that NI HAS improved in this area a bit in the last few years but regardless....

 

We all know that NI sells LV as being "Easy to use" or that people can "rapidly and cost-effectively interface with measurement and control hardware, analyze data, share results, and distribute systems" "regardless of experience".

 

What I (And I think many others) miss is that there's a serious side to using LV which can only be harnessed by experienced programmers.  I feel that NI should focus more on this "experience scaleability" of LabVIEW which makes it easy to learn but very difficult to master due to the incredible breadth of features and possibilities LV offers.  I'm not a marketing guy, so pelase don't ask me how to do this, but I think that maybe highlighting the software engineering side of LV development would help.  How about pushing examples of the classic software architectures or demonstrating some more advanced features which don't work "regardless of experience".

 

LabVIEW grows with any user's knowledge of software engineering and I just feel that this should be focussed on a bit more.

 

I'm interested to hear people's opinions.....

I would be nice to be able to work with complex numbers in Formula Node. It would be a great advantage! 

Therefore, I propose to All to vote my idea.

 

This is a little annoyance of mine when I want a shortcut to create a Control (and it doesn't behave as expected)...

 

...when I popup on an Indexed Output Tunnel of a For Loop and select Create Control LabVIEW always creates a scalar Control, it is only when I select Create Indicator do I get an array (which I then convert to a Control). If I wanted a scalar Control I would popup on the scalar wire.

 

Thanks for listening 😉

 

Create Control.png

May be the different version can show on the icon.

Smiley Wink

LV Icon change.jpg