LabVIEW Idea Exchange

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

When you use XControl in your Ui it's quite difficult to navigate into facade VI controls using tab key. Management of this navigation require a lot of work.

A way to fix this may consist in adding an "get focus" event to the facade VI. This event should be trigged each time XControl receive the focus in the Ui.

In addition to this event, we need to be able to have way to go out the facade VI when all reachable controls have been browsed.

 

Use case :

I've done an simple XControl containing only a string control with a "PlaceHolder" string. When string control is empty you configure it to display a "ghost" text to help user to fill in each fied with the right data.

If implementing "placeHolder" feature in the XControl was done in 4 hours, adding the capacity to navigate through each XControl and other object in the Ui has requiered 1 day and I can't ensure that my implementation is free of bug... 

Recently LabVIEW has added the following feature: When creating a new wire, double-clicking creates a terminal. This can be an indicator or a control, depending on what was selected. If the wire was started from a data sink (a structure tunnel or a subVI or node input terminal), holding down the Ctrl key while double-clicking creates a constant. This is very useful and saves time. Kudos!

 

When working with cluster wires, it would be useful if an Unbundle By Name node could be created by:

1. Start creating a new cluster wire or wire branch

2. Hold down a modifier key (Ctrl, Alt, Shift, or a combination thereof) and double-click

 

Step 1: Start creating a cluster wire

1 (edited).png

 

 

 

 

 

 

 

 

 

 

 

Step 2 - current behaviour: double-clicking creates a terminal. This is useful. Holding modifier keys down (Ctrl, Alt, Shift) does not alter the behaviour.

2 (edited).png

 

 

 

 

 

 

 

 

 

 

 

Step 2 - desired behaviour: Holding modifier key + double-click creates Unbundle By Name node

3 (edited).png

 

 

 

 

 

 

 

 

 

 

 

Notes

  • Creating UBN nodes is a common, repetitive action when working with clusters. This gesture would save time.
  • The screenshots above show a cluster wire being created starting from a control terminal. The gesture should, of course, work regardless of which object the wire branch was started from (e.g. tunnel, subVI output terminal, etc).
  • Perhaps the idea can be expanded to creating Bundle By Name nodes. Perhaps one modifier key (e.g. Ctrl) would create a UBN node, while another key (e.g. Alt) would create a BBN node.

I spent a good chunk of time yesterday trying to find out why I was getting a Wires Under Objects VI Analyzer failure, and after much paring down of code and fiddling with wires it turned out to be a hidden event data node that was running over a wire.  Below is a simple reproducing example; the second image is identical to the first, except that the event node has been hidden (but not moved).  Both of the images below fail the Wires Under Objects test, and my argument is that the one on the right should not fail that test.

 

Event node visibleEvent node visibleEvent node hiddenEvent node hidden

The point of the feature "hide the event data node" is so that I, as a LabVIEW developer, no longer have to worry about it cluttering my block diagram and it running into/over other items.  However, hiding it ultimately results in me still worrying about where it is hidden because it running into/over other items still turns out to matter when I run static code analysis. From this POV, this is a bug, and the VI analyzer test shouldn't fail.

 

This POV is also consistent with the way that hiding for/while loop iteration terminals operates.  In the images below (again, the second image is identical to the first, where the iteration terminal has been hidden but not moved), ONLY the left image fails the same VI Analyzer test, and this is the behavior I'd like to see with the hidden event node:

 

While with node.pngWhile no node.png

In LabVIEW 2013 a new feature was introduced, the arrow connecting free text and code objects. However when you try to route a wire trough the arrow the LabVIEW routing goes nuts and try's to avoid the arrows at all cost.

A picture to show what I mean:

Wires and comments.png

The highighted wire (yellow-red) is routed from "Start Location" to "End Location" by LabVIEW. However I would like to see somehting more like the blue line since this makes more sense. If I want the blue wire I have to manually move the wire since the rouring can't handle the arrows of the free text boxes.

Stop backward flowing wires in Stacked Sequences.

Stacked Sequence problem.png

 

The Sequence Local should function in the same way that Shift Registers do (in regards to placement)

How often have you seen this sort of thing.

There is a silly idea, but it seems to have lots of votes (or more votes than it should compared to other good ideas).

In this silly case the idea has 634 kudos and it may even have a chance of being implemented in the next update of LabVIEW

but you are sure that there must be at least the same number of people who positively hate this idea but we have no idea of telling this.....

You want to BOO or give a thumbs down but at the moment you can't.

eg.

Negative Kudos 1.gif

 

Well if the LabVIEW Idea Exchange had a BOO button like this

Boo Button.gif

or it could be a thumbs down icon

then the problem would be solved.

 

 

We would then know how many people HATE the idea and not just those who love it...

so instead of just positive kudos we would judge a good idea by the RATIO of Good to Bad votes....

This I think would far better reflect the relevance, importance etc of an idea-  what does everyone else think???

But then again - If I get no negative Kudos  who would know??????

At the moment the kudos assumes that each person who submits a kudos knows what he is talking about....

 

Here is what it would look like - and we would know that 634 kudos is no longer considered so good anymore when we know that it also got 99,999 boo's.

 

Negative Kudos 2 - Boos.gif

The "data" control of a XControl cannot be linked directly to an existing control typedef ... It can only contain it ! (You have to include your existing cluster in the data cluster.)

 

The problem is that when you want to access the value property of the XControl, you always have to bundle or unbundle it ...

 

It would be nice to be able to create a XControl data, as a link to an existing Control typedef.

 

I hope i am clear ?

 

I know a solution of my problem  could be to create my typedef as the data of the XControl ... but in this case i cannot create many different XControls for a unique data type !

And i don't think that linking datatype to dataview is very smart ! ( It is not MVC compliant ! )

I would like to see an invert node option for all the boolean operators  (didn't we used to have this ?) For consistancy with the rest of the boolean operators the select primitave should have this for its select input too (And here I would argue that the tertiary operator is a boolean operator but, I know its in the comparision palette so please don't move it) .   I learned my logic a long long time ago and frequently use And not, Or not and if-then.  the extra not nodes clutter up my BD unless  I use the multiple boolean and frankly the symbol on that function is small enough that I can miss-read the mode.

When I try to select a word or more words I currently have two options. The first one is to hold down shift and select on letter by letter basis which is slow. The second one is to select with help of mouse, which is error prone.

 

Normally all text editors have options to move for 1 word left or right by ctrl + left arrow or ctrl + right arrow. The same goes for selecting a word (ctrl + shift + arrow). I would like this functionality to be supported by LabVIEW at least on block diagram, VI documentation, enum editing.

When using the radix option for case selector values (hex, binary) most often we want leading zeros to easily distinguish between "000000ff", "0000ff00" and "00ff0000". But right now the case structure doesn't even accept numbers with leading zeros!

 

So allow them and when doing so preset them to show as much zeros as are nibbles in the number (for hex) as suggested here...

HTML5 supports WebSockets which allows low-latency, two-way communication between browser and server.  There are various screen-sharing technologies in existence based on this, but integrating a similar server in LabVIEW would enable capabilities that could be accessed from any desktop or mobile browser, no configuration required on the client side.  The key to this feature is the ability to configure the server and enable sharing from within LabVIEW or from a VI (i.e. a LabVIEW-aware server).

 

An idea of what this could do:

  • Remote control of LabVIEW development machine

remoteaccess_composite.png 

 

  • Selective sharing of windows, for instance allowing interaction with only LabVIEW windows.  The server application would have a mechanism for selecting which of the open windows to share.

app selection.png

  • A view-only mode so users could check the status of a running application from anywhere, including their cell phone.

 

remoteaccess_fo.png 

  • A brat or Express VI that when dropped in a VI would automatically share the VI when run.
  • Third-party toolkits and applications could build in sharing capability for their own app using the API.

 

This feature would be more powerful than Remote Panels in that:

  • It would give access to the LabVIEW development environment in addition to running applications.
  • No configuration or special software required on the client side, enabling multiple platforms including mobile.

I downloaded LabVIEW from ni.com and installed it.  Here's the process:

 

  1) Download a small downloader using my web browser.
  2) Run the downloader, which then downloads a self-extracter
  3) Run the self-extracter, which extracts the installer
  4) Run the installer

 

I'm thinking that this process can be improved a little.

Suggestion: Allow any data type to be connected to the "anything" terminal of the flatten to JSON function.

Basically the same as the flatten to XML function.

 

Also the reverse, unflatten from JSON, may need to be done as well.

 

Flatten to JSON.png

We do Create Constant/Control/Indicator a lot when working on a block diagram. It could be much easier. How about the following:

  Double-click on output terminal with wiring tool - Create Indicator.
  Double-click on input terminal with wiring tool - Create Control.
  Ctrl-click on input or output terminal with wiring tool - Create Constant.

Front Panel Control/Indicator

  Ctrl-click on node should Create Property Node.
  Ctrl-double click should Create Invoke Node.

When you create an X-Control the icon that you see is the Library's icon (as the X-Control inherits (indirectly) from Library class)
Usually this is just a banner as your icon is used to "group" and identify Library Member VIs (just like any other Library)
 
However, in the Palettes and Help it shows up like this: 
  
xctrl.png
 
Which is very uninformative (the main issue here is the Palettes) and not pretty.
 
If you were to go back to your X-Control Library and change the icon to a 32x32 image (e.g. something standard to represent the control) then this icon would propagate through your Library and mess-up/hide Member VI's icons!
 
Therefore, my idea is that, through the X-Control's Properties Dialog Box you should be able to associated the X-Control Library file with a custom icon.
Initially I thought linking to an external file (.ico or .png) would be good but now I think the above is nicer - storing it in the X-Control Library would be the best.
X-Controls are a special case because currently they are the only Library file that is can be added to the Palettes. 
 
X-Control Properties Dialog, General Settings Subpanel (Concept):
 
xctrl2.png 
 
Library Icon would then populate all Member VIs and have the same behaviour as any other Library's icon.
Display Icon would be used when viewing the X-Control file visually e.g Help, Palettes etc... 

I propose that NI award anyone who posts an idea (especially this one) which is eventually accepted receive a free copy of the LabVIEW Developer Suite as an award for their creativity.

 

Should help find duplicates!

Sometimes, it can be useful to know the last event handled by an event structure.

 

LastEvent.png

 

While using Highlight Execution for debugging, we end up scrolling the code to know which part of the code is currently executing, and loose context of the code due to scrolling. We could avoid this by letting 'Execution Highlighting' do the scrolling for us. Execution Highlighting with Auto Scrolling can be invoked on demand. The default behavior of the Highlight Execution will not Scroll. We should provide mechanism for users to disable or enable this while executing the code.

 

Also in case of state machine,

  • Current Behavior - If one highlights in the middle of execution and when a sub VI is executing, then the highlight will reach the case only after the control returns to top level VI.
  • This feature should also address the above mentioned behavior by switching to the case(state) in which the sub VI is executing.

The various instances of the polymoprhic XML Close VI all have standard error in functionality.  In other words, they run normally only if no error occurred before they run.  That can lead to references not getting closed if errors occur in sections of code that execute earlier.

 

Instead, the XML Close VI instances should run normally even if an error occurred before they run.  When calling the XML Close VI, it is a nuisance to have to clear the error passed in to it and then merge the previous error with the error output from the VI.

 

In addition, most of the other Close functions and VIs in LabVIEW run normally even if an error occurred before they run (Close File, UDP Close, VISA Close, Close Reference, DataSocket Close, etc.).

 

There may be other VIs and functions that have the same behavior as the current XML Close VI and they should be changed as well.  Examples include TDMS Close, Close Zip File VI, etc.

Ok I'm going to try again.

 

I've already posted ideas on XControls before HERE and HERE but here's another try.

 

My feeling is that XControls COULD be a wonderful addition to the LabVIEW universe.  However....

 

1. XControls are kind of weird.  The implementation is kind of unusual and I finf the help available being not overly helpful.  I HAVE implemented XControls but I find myself having to re-scratch my head every time I take on such a proposal.  I would love a more intuitive way to work with XControls.  Even a state diagram showing what's called when would help.

2. XControls are buggy.  I've reported on these before but NI seems to not take this seriously.  There are two issues which make XControls unusable for me (I'm willing to overlook the complexity).

2a. Synchronicity.  Updating a value to an XControl terminal will return control to the calling code IMMEDIATELY event hough the XControl may require some time to process tha data.  This is completely inconsistent with existing LabVIEW behaviour.

2b. Dynamic events don't work properly with XControls.  If I register for a dynamic event in an XControl, firing the event will not "awaken" the XControl but the events will queue up until a valid event DOES happen at which point all the backlogged events get processed in a hurry.

 

If points 2a and 2sb w2ere addresses, 99% of my problems would go away but at the moment, XControls are just not worth the effort for most applications I could otherwise use them for.

 

Come on NI, you can do better.

 

Shane.