LabVIEW Idea Exchange

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

Living in the dark ages I do not have web access on my LV development PCs and so have to go to www.ni.com/activate to turn on LV after every update/install. If I am lucky I can sit my LV machine beside my web PC and type in the computer ID code and vice-versa with the resulting authorization code. If I am unlucky bits of paper, pens and walking become involved. Having to authorise on each PC is reasonable but if I need to authorize more than one product e.g. LV and Application Builder (I have the Pro version) then not only do I have to licence 2 things but I have to enter ALL the data twice - a simple 'activate another product' button at the end of the activation pages (with data like pc id and licence number and name etc retained) would make life easier. My appologies if there is one already - but if there is it needs to be more obvious.

Currently I'm busy with GOOP and I came across the following problem. 

 

I have a validator class. The purpose of this class is to validate data. The validator class as a number of childrens...

 

Validate IP address

Validate string length

Validate inRange number

Validate Alpha

 

The main, validator, class has a function called "valid?" This function has 3 inputs and 3 outputs

 

Inputs:

- Object

- The data that must be validated

- Error

 

Output:

- Object

- Valid?

- Error

 

The children classes must inherit this function and overwrite it. Now the problem is is that each of the above validators have a different datatype which must be validated....

 

Validate IP address has a string as input

Validate string length has a string as input

Validate inRange number has a number as input

Validate Alpha has a string as input

 

Now you might see the problem. To get the children to inherit the function from the main, validator, class the connector pane must be the same as of the datatypes... This means that I have to choose in my main function to use a string or a number as input... This is something that I don't want... I want to be able to select a datatype called "yet unknown datatype" in my main "valid?" function in the main, validator, class. So that I can use any datatype input in my children that is suitable for that implementation. 

 

 

My idea is thus to create a new kind of datatype which sort of represents "any kind of datatype known to labview" which can be used in functions of a main class that are inherited by its children, which are all using a different input datatype.

 

ps. Now you could maybe suggest why not use a variant datatype? Yes this is possible but the problem is;

- I would have to cast the data back

- It isn't very neat programming, the variant solution is in my opinion more a kind of hack to make the code work.

 

pss. Yes but if you would do this... then...

- Yes there are proberbly a few more work arounds thinkable, such as creating two "Valid" VI's one inherited (Valid?), one unique of the child (_Valid?), but these are in my opinion still workarounds and do not really provide the functionality that is needed. Which is pretty common in OOP languages.

 

psss. if anyone knows a better title for this described idea let me know it! 

The Vision Acquisition Software seems to send all GigE attributes to the camera that have been set in the camera file. There should be an option to select which attributes are sent to the camera when connecting. This would allow the settings configured through vendor specific third party tools to persist when acquiring in MAX or LabVIEW.

 

This could possibly also alleviate the "Attribute value is out of range" error if MAX is only sending the attributes you specify.

I have seen ideas for automatic creation of constants, but here is one for easier manual creation. 

 

Simply hover the mouse over a terminal as usual, and then press 1, 2 or 3 to create a constant, control or indicator.  No mouse-click needed.

 

I have attached a vi that uses VI Scripting (LV 8.6.1) to demonstrates this functionality.

 

Regards,

David

 

Instructions are on the front panel of the vi, but here they are again:


Instructions:
1. Run this vi.
2. Open a new vi and place an "add" function on the block diagram.
3. Hover the mouse over any terminal and press 1,2 or 3 to create a constant, control or indicator.

Of course, this will work for existing vis as well, and with any terminal on the block diagram.

Hi,

 

the idea subject says it all. I think this is usefull for multi-level data types with data placed into the parent and its child class (and in the child of the child class ...). To transport the data, you use the parent class. If you want to modify the data inside of a child class, you program a corresponding dynamic dispatch VI or you have to convert the parent class to its child class, modify the data, and convert back to parent. The In Place Element Structure would be nice for the second method.

 

Regards,

Marc

I was just involved in a discussion about a default return value for the dequeue primitive when a different idea struck me.

 

Why can't we define a default value for typedefs.  Especially enums would benefit by having a case reserved for operations where something didn't work as expected and a default value is returned.  Being able to seperate this value from other (normally required) values would be a boon for ensuring data integrity.

 

21307i98E925E66B45E54C

 

Why can't we have the default value set to something we don't normally interpret as being valid?

 

In the LLB Manager, it's nice to have a separator between Top-Level VIs and the subVIs.

 

I'd like to see something for a mid-level VIs. This would allow the "major" (but not top-level) blocks of code to be easier to find when developing, separating them from the low-end subVI pool.

 

21151i6B3333152562E342

Issue:

Dynamic Launching of a VI works fine when the plug-in code is launched from the LabVIEW source code.

When the Application was build it fails to launch the VI. Upon debugging I found that I am reusing some of the SubVIs in the plug-in VIs that is part of the EXE. I tried renaming and re-linking of those Vis for the Plug-in VIs it works fine.

 

Solution:

           Similar to Name spacing provided by Lvlib files. Add an additional option in the Exe build spec, to add a name space for the application this will rename all the VIs as "my project:main.vi, My project:test1.VI" etc inside the Exe. This will resolve the naming issue created by the LabVIEW runtime engine. So a plug-in VI can reuse the test1.Vi from the Source code.  

 

 

I have had to jump through hoops to create a .net process or use runas to get portions of code to run

when the end used does NOT have admin privileges.

 

Add Option under VI Properties >> Execution to allow setting the VI to run as admin or another user.

a transaction log of all docked probe window activity, in a human readable format if possible. it should include probe position declaration, timestamp, data and conditional probe result. the transaction log is 'dumped' in a separate window, and optionally saved to disk. it is meant to work a bit like dbgview, which displays information sent via OS outputdebugstring() or debugprintf() on windows. maybe something like this already is implemented in the desktop execution trace toolkit 'DETT', but this idea is only for data of probes and is native to IDE. if gives a migrate path to DETT to see more info about execution behaviour...

I just downloaded a library and a project it was developed in. I tested it, and everything works fine. Then I copied the library (.lvlib, all .vi files and preserving folder structure) to a new project, but when I open it I get a conflict saying that the same library is defined twice? A conflict that cannot be resolved BTW.

 

I spent 30 minutes just getting out of the mess this puts me in. The result, project2 is now OK, but project1 now complains that it has duplicate code. Come on! I know I have two copies of the same library! I want to have two copies of the same library! Why can't LabView just use the "local" version and not complicate my life with something that happens to lie on the disk somewhere and has absolutely no connection to the current project?

Problem is that sometimes a front panel control is so big, that it takes up too much real-estate.  (Especially, if you are using a lot of elements within a cluster.)

 

One nice solution, would be to allow the control to be collapsed down to an icon of some sort.

 

This can easily be demonstrated by the similar behaviour of references that allow the option to "show control".

 

 

From this.....  Queue Refnum (Show).PNG                    To this...   Queue Refnum (Hide).png

Loop indexes max out at 2,147,483,647.  It would be nice to have an option to wrap around the loop index instead of having it remain constant, in the event that you have a process that depends on that loop index incrementing.

Often I'm developing applications that use large clusters for typedefs. Instead of resizing the cluster, I often turn off auto-grow on a case structure to prevent the large cluster from exploding my block diagram when it is placed. I think it would great to have the ability to show scrollbars to better navigate inside structures when screen real estate is an issue.

Include VI that generates timestamp in Excel format something like the one attached  as a standard in timing functions.

We all (should) check if an array is empty before passing through a For Loop, if we are indexing it and any references or values pass through the For Loop so that we pass null references or default values for the data type.

 

Most people use either an "Array Size" primitive for selecting "0" or "Default" or an "Empty Array?" primitive for selecting "True" or "False" in a case structure around the For Loop.

18049i62E217D020F17D5C18051i254696F87AD8D82F

If we could just wire the array to the Case Selector and have it automatically create two cases "Empty" and "Has Data" or something, it will make the diagram cleaner and easier to read, while saving a few second for every instance of use. 

18053i19D01296C2C082C8

I'd like to see something like a conditional disable structure that would be sensitive to fields in an .ini file at runtime, not compile time.

 

My problem is that I have an application that can access many different third party cameras. For this application to work every VI that accesses a camera specific .dll function must have assess to that .dll or I get a broken VI. When I compile the VI I have access to these .dlls but when I build an application.exe and distribute it I only want to distribute the .dlls for one of the cameras. If I could distribute a .ini file with the application.exe that indicated which camera the drivers were installed for then the application would disable the code for all the other cameras and the VI would not break.

Thank you,

Chuck Lippmeier

Using the LabVIEW 2009 Build Spec (as an example) allows you to add a Destination to a Library which is very handy, as it means you can namespace VIs at build-time.

 

I would like to take this a step forward and then be able to set that new Library as a Sub-Library of another Library that already exists in the Project.

I would then want to be able to set the scope of this Sub-Library as well (relative to its now, Parent).

 

This combined with my Locking State Idea would allow be create a Distribution that would hide and protect a Support VI Library

As the Sub-Library would be Private Scoped (from above) and the Parent Library would be set Locked (does not show Private Members).

 

I currently can implement this using Scripting but it would be nice to have it native.

 

Cheers

-JG

 

 

17619iFB1C3A1375DBE39317621i6935DFDFCA489040

Hi,

 

I need a vi which will convert PNG file to GIF file. i could find a vi which is not in palette, do this. But the output GIF file is in uncompressed format. So the size of the file is very large. And also it is not working when i build the application as EXE.

 

It will be really helpful for me if this feature is included in the next release of LV.

 

Thanks,

Vairamuthu.

-----------------------------------------------------------------------------------------------

Create a VI to read the config from string instead from a file for in memory configuration.

 

Also create a VI to read out the config as string.

 

Regards

Marc