LabVIEW Idea Exchange

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

It is my understanding that writing to the Value property of a Property Node is slow because it uses the UI thread and blocks until the control graphic is updated with the new value.  However, one of Dr. Damien's threads (link goes to thead) states that the Control Value.Set property for VIs is asynchronous, meaning that they don't block on the front panel update, and so should be faster than the standard Value property.  However, this method is not so desirable since it is dependent on knowing the control's label.

 

So the question came up:  why not have a Value property that is asynchonous?

I like the 'Group Libraries' options in the VI Hierarchy window, but I'd like it a lot more if it worked for classes as well as lvlibs. 

 

It would also be nice if there were a way to have it start up with those collapsed.  Navigating a large vi hierarchy is painful on my laptop.

This ties into a recent post I made on the NI Forum HERE.

 

I have already run into this problem a few times.

 

Somewhere in my code I have a process returning an object of a particular class which does not have the exact same type as a dynamic dispatch input.   My post above shows a workaround for this (which, if it wasn't so horrible it'd be funny).

 

Load class from XML workaround.PNG

 

I've run into similar problems where the object is being passed via Queue or Event where I have to pass the Objects as a parent class to enable portability but where I KNOW the only source of the data is a VI sending an object of EXACTLY THE SAME TYPE as the dynamic dispatch input.

 

A normal "to more specific class" does not work presumably because the resulting object COULD be a further sibling of the required object, thus breaking any dynamic dispatch tables.

 

Up to now I've had to write a class member to take the existing object and another object of type parent and make a cast and update the values manually which is really annoying because it requires each and every child class to implement this (and make use of the parent function).

 

So what I'd like is a function to allow an EXACT cast of an LVOOP object so that I can still satisfy the Dynamic Dispatch requirements without having to have a piece of code for each and every child class created.  If the Object classes don't match EXACTLY, return an error and the contents of the object used for the cast.

 

Shane.

How about an NXG home edition, so folks can try it without any heavy time or cash commitment. It would help acceptance and uptake in the LabView community.

The built-in mouse wheel support for numeric controls is very convenient, as it allows comfortable tuning of values using the mouse wheel. But it has a potentially dangerous flaw: the default mode is "On Key Focus", which means that when you click inside the control, you can change its value by scrolling. But when they move the mouse somewhere else in the window and scroll (e.g. in order to zoom a graph), the focus stays in the numeric control, and you unintentionally change the value of the numeric control. This behavior has the potential to damage our hardware, as we are controlling high voltages and pressures using numeric controls.

Setting the Built-In Mouse Wheel Support property to "On Hover" keeps the values from changing when the mouse cursor is not above the control. But unfortunately it also changes the value when the control does not have the key focus, leading to another source of unintentional value changes.

So my suggestion is: If you add the option "On Hover AND Key Focus" to the Built-In Mouse Wheel Support property, accidental changes of values by scrolling could be prevented effectively.

The Save As option is not always available from the right-click menu for items in a project/library. It seems to be dependant on if/how the item has been loaded into memory.

 

It would be nice if this option was always available to allow easy duplication of VIs. It should open up the default Save As dialog (as below).

 

Save As dialog.PNG

When developing new VIs f the procedure is usually the following:

 

1. right-click class or desired location, new VI (static or dynamic dispatch template etc.)

2. Implement functionallity

3. Edit VI icon for easier recognition

4. Save VI

 

The problem here is that usually the icon allready contains the ideal name for the VI which means I am typing the name of the VI twice, once when editing the the icon and once when saving.

 

Would it not reduce the development-time by suggesting the name entered in the VI icon editing procedure as the user attempts to save the VI?

 

I'm currently expanding a large SA with 270 classes and on good days I implement 20-30 VIs and would find it nice if I were not forced to type the name twice.

 

Interested what experienced LV-users think of this suggestion!?

The idea came in this discussion  -----> http://forums.ni.com/t5/Machine-Vision/Machine-Vision-quot-Stacked-Sequence-Structure-quot/m-p/2316470#M37848

and of this other idea.  ------> http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Rewrite-MODBUS-library/idi-p/2390182

 

The most examples related with artificial vision or machine vision, have excessive use of the "Stacked Sequence Structure". This is a contradiction, since in the courses, trainings and some discussions in the forums, they always recommend that work with this structure is minimal. The examples, would need to be rewritten.

 

Here's an example that is in the help.

 

vision.png

If you double click on the VI icon to open the icon editor from the BD window LV triggers the default beep sound.....why?

There does not seem to be any reason why this bell fires. The icon editor still opens, I can drag and drop from the BD icon.

 

Drop the beep and make it function the same as the icon on the front panel. 

 

Admittedly this is one of those things that isn't so much a usability issue but more of a continuous annoyance.

When we create scripts in vision assistant we save it with "*.scr" extention. You have to open vision assistant everytime you want to open the script. I am suggesting double clicking the "*.scr" to open the script in vision assistant directly without the need for opening the software each time.If you open the file now you get an error message like this

 

vision_assistant.JPG

 

If the extention is causing the problem or being the hurdle why not change it ?

Most of the time I have quite a lot VIs (Blockdiagrams and Frontpanels) opened. Therefore my Windows Taskbar is full of files and it is very annoying to quickly swap between them since they are not identified via their names, only as 'Frontpanel ...' or 'Blockdiagra...'.

 

Most classic programming IDEs keep track of opened files using a taskbar (see picture)

taskbar_IDE.png

 

It would also be nice to sort the opened VIs between Block and Frontpanel.

 

Fixed examples are: Exclipse, Netbeans, Visual Studio Code

Dynamic taskbar (can be positioned anywhere on screen as overlay): Gimp

'Database Variant To Data' cannot be placed in an inline enabled VI making it impossible to use in malleable VIs. 

It would be nice to be able to draw on the power of the 'Database Variant To Data' VI in malleable VIs so we could be more flexible when writing database related code.

 

Please make this possible or offer a workaround (like the polymorphic instances of the VI).

After another case of this happening, I did a search, and while I found a lot of suggestions about auto-grow with regards to adding new controls via the BD "Create xxx" menu and some about adding new controls into a Tab control on the FP, I'm surprised that I didn't see any comments/suggestions about how adding a control to the FP can cause an auto-grow oops since you can't really control where the new Terminal is added to the BD. 

 

This is a bit of a frustration for me, I'll have written part the skeleton of my code, my structures in place and sized how I want them.  I then swap to the FP to start adding more specific controls,  I select the controls I want on the FP palette, drop them, swap to the BD and everything is messed up because some of the controls decided they were part of various BD structures and thus resized things.  This isn't just auto-grow, I've had a case where the control was dropped into a case frame and while working with another control, the visible frame was changed, and I 'lost' the control terminal.  I was able to find it by swapping to the FP and using 'find terminal' but was still a pain and a bother.

 

My suggestion is:  New terminals added via the front panel are not added to any sub-diagrams in the BP, instead of semi-mimicking their location relative to the FP, just place them near the desired location that isn't already taken up.  This way, the only way a terminal is added to a sub-diagram is when the user decides to add it to the sub-diagram.

I looked and couldn't find this.  I'd like to be able to make VI's larger and sometimes longer.  Picture says it all.  I think it would make organizing/simplifiying block diagrams easier and allow important sub VI's to stand out.  Block diagrams look like printed circuit assembles and the chips aren't all the same size because some (like the CPU) need more connections.

 LabVIEW Idea.png

When placing Icon Text inside a frame in the Icon Editor, there appears to be a rule that the text region is between the lowest two horizontal lines.  I'm trying to design an icon with a two-line-width frame, with a lot of empty space in the middle, but this (deduced) rule stymies my efforts.  I'd like to suggest that the algorithm be changed to place the Icon Text inside the largest blank space available.

 

Here is an illustration of the problem.  All these images are a one-pixel Frame and a single line of text.  In the first image, a single additional line is at the top, while in the second image, a single line is at the bottom.  The final image pretty much precludes designing a Template with a two-pixel bottom border, something I'd very much like to do.

Top Template.pngBottom Template.png

 

Bob "Frustrated" Schor

 

 

I love lvoop but I hate that you have to suffer a huge performance hit when accessing parent class private data via access vi's, especially if it is large datastructures.  

 

As access vi's can also be invoked using property nodes, make a read/write property node pair accessible via an IPES - this will instruct the compiler that this access to the parent class' data should be done in-place.

When LV 2012 was released many examples (especially the DAQmx ones) were refurbished (comments added, controls updated to silver scheme,...). Nevertheless there are still a lot of "Zombie"examples that need to be re-worked so that they accord to the LV style guide and have a common "look and feel".

 

Can we have access via LabVIEW to the MAX, that I can delete a NI cDAQ device

 

Jürgen

The "Excel Set Cell Color and Border.vi" (Report Generation Toolkit) sets the background color to white by default. The default value should be "transparent". Unfortunately there's an error in the VI, so "transparent" doesn't work. That's because Excel and LabVIEW use different numbers for transparency. LabVIEW: 16777216, Excel: -4142. A case structure solves the problem (see attached file).

Philipp

Regular expressions in LabVIEW supports parentheses for partial matches, but this fails if your partial match is a set of operators.

 

Let's say I want to match "XYZ_Level" or "Level", where XYZ can be any number of characters including an empty string, the underscore must be there if XYZ is different from an empty string. These strings are valid candidates for instance:

 

"Level"

"_Level"

"a_Level"

"much:more_Level"

 

These aren't:

 

"aLevel"

"abc_defLevel"

 

I'd construct a regular expression as input to the Match Pattern primitive like this then: "(.*_)?Level", but this fails matching any of the good examples above. I think the parentheses fail to parse correctly when they contain operators? I have also tried specifying a partial match using the pipe character, like this: "(.*_|)Level", but this won't work either, probably because I need something on the right hand side of the pipe to tell the regex parser that the alternative is an empty string. An empty string is usually denoted by the epsilon character in regular expressions, but LabVIEW doesn't recognize that.

 

So, (unless I'm mistaken) I'd suggest LabVIEW to support parenthese in regular expressions as means of grouping anything including operators, not only substrings.

 

Cheers,

Steen