LabVIEW Idea Exchange

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

NI updater kindly informed me that LabVIEW 2014 SP1 was released (even though I uninstalled it shortly after I tried it last year) and out of curiosity, I took a look at the known issues list.

I learned a few interesting things I did not know about, and also that some problems had been reported as long ago as version 7.1.1. This type of stuff looks like bugs that won't be fixed, ever.

For instance, CAR #48016 states that there is a type casting bug in the Formula Node. It was reported in version 8 and the suggested workaround it to use a MathScript Node instead of a Formula Node (where is the "Replace Formula Node by a MathScript Node" contextual menu item?).

Problem: the MathScript RT Module is required. Even in my Professional Development System, this is not included by default. Does this really count as a workaround?

I read: we don't have the resources to fix that bug, or we don't want to break code that expected that bug.

In any case, this bug with most likely never be fixed.

The bottom line is, we can waste a lot of time as users, rediscovering bugs that have been known for a while and will probably never be fixed. As a user, I would really appreciate a courteous warning from NI that there are known traps and have a complete description handily available with the help file related to the affected function.

 

My suggestion: add a list of known issues (with link to their description) for all objects, properties, functions. VIs, etc, in the corresponding entry in the Help File.

When we put a breakpoint inside a repetition structure LV runs the code inside loop before it stops. If we want to break before the 1st iteration we need to add a breakpoint outside the structure. The current way doesn't communicate the actions properly. I propose a slightly different way to communicate it:

 

Repetition Structures Breakpoint Better Indication.png

 

The left border acts as the outside border and the other three as the inside current one.

Retina displays on macs are really nice to work with, the details quality is a real plus, it would be nice if LabVIEW could take advantage of that, for now LabVIEW look really blurry & ugly on a retina display.

 

See the difference between LabVIEW and GitHub :

LV & git - no zoom

 

Zoom on LV :

zoom on LV

 

Zoom on GitHub :

zoom on github

Make it possible to scroll through the items within a picture ring using the mouse wheel.

In LabVIEW 2014, sbRIO-9651 projects need a FPGA socket CLIP to be selected.

This FPGA socket CLIP can be user defined to select aspects like available FPGA pins.

 

By default, a user defined FPGA socket CLIP is saved in the National Instruments installation folder

or in the National Instruments user date folder. In other words, these FPGA socket CLIPs are not

saved with your LabVIEW project. This means you can forget to keep them by putting them under
configuration control (happened to me when my PC hard disk was changed) and other users will

not be able to use your LabVIEW project if you forget to provide the FPGA socket CLIP used
(happened to me when sharing my projects with NI engineers).

 

My suggestion is default behaviour of the CLIP generator should be changed.

This tool is used to select or create a sbRIO-9651 FPGA socket CLIP when creating a LabVIEW project.

I propose this tool should always save the created/selected CLIP under the project folder.

This would help to ensure the LabVIEW project contains everything associated with the project.

 

Optionally, it would helpful if the LabVIEW project dependencies showed FPGA CLIP usage.

I have unknowingly had a project using another's projects CLIP (especially when the CLIPs have

the same name).

 

The Table is an important UI feature allowing cell widths adapted to the contents (a bit like in Excel). That is much better than the rigid array front elements. It is also much more powerful since cells can be coloured, cell fonts can be changed, cells can be highlighted and still more. Some possibilities appear to lack:

 

1 There is no 1D version of it. This necitates the user to finely adapt the height to see only one row. This makes that no dark grey line is around it and a user can accidently change to lower lines by selecting a cell and some mouse operation. It is hardly possible to return backward, certainly if the user is not aware that the line is in reality a 2D field.   Under properties e.g.' 1 row, 10 columns' can be given, but that does not prevent changing to other rows. For arrays dimensions can be added (from 1 to many), for the table dimensions 1&2 would be helpful.

 

2 Cells can be indicated with help of the properties 'selection start', 'selection size' and 'selection color'. The selections can not be programmatically disabled and re-abled when needed. At least a corner element remains if the 'selection size' is reduced to (0,0). With the right-click menu options a 'show selection' option exists for enabling and disabling the feature. It lacks as a property node.

 

3 Cells can be coloured with help of property node calls, what is nice. The method to undo all colourings and other settings does not exist. The invoke node method 'reinit to default' has no influence on the individual cell fonts, cell colours, etc. An invoke node to reset these features is wanted as well in addition to the existing reinitialisation. This lack is preventing using these features since the changes should be kept in memory somewhere to undo, or all cells have to be overwritten periodically with a lot of code. If the table length is undefined since e.g. measurement data  is put into it, then an arbitrary number of rows have to be assumed. A reset function can take this trouble out of hands.

 

The same remarks hold probably for the listbox controls.

I have been using unit test framework testing for FPGA code (although you do have to manually bind everything!)

 

This would be significantly easier if unit test framework would support fixed point numbers, currently I have to not test or create wrappers for much of the logic.

 

[admin edit: updated title to more clearly reference FXP data type]

I have recently been using more test vectors in the unit test framework.

 

The principle works well but if you are in a unit test and decide you need a test vector you must:

 

  • Close the unit test configuration
  • Create a test vector
  • Set up your vector (entering values and data types, which is much easier if you could see the actual unit test case)
  • Close the vector configuration window
  • Open the unit test configuration
  • Assign the new vector file to the unit test
  • Now you can assign vectors to test inputs

This seems convoluted and forces unnecessary context switchs.

 

I propose that at a minimum, you should be able to create a new vector file and launch it's configuration without leaving the unit test configuration window. I suspect that the whole process could be streamlined even further though.

The Report Generation Toolkit provides functions to set various Format aspects of Excel "areas", and Excel Graphs, but doesn't provide the complementary "Get" functions to return the current values.  For example, I wrote a LabVIEW function that will set the Font Color of a row of a WorkSheet to Red (using Excel Set Cell Font), but if I want to find the row with the Red font, there is no "Excel Get Cell Font" that can return the property to me.  Of course, I could cobble something together using ActiveX calls, perhaps, but these are poorly documented, and since NI is already doing the "heavy lifting" to provide the Set functions, it would seem "relatively simple" for them to also add the corresponding Get functions, as well.

 

Bob Schor  (using Excel as a "controller" for some experiments controlled by a LabVIEW Real-Time system)

The control C + V work for copying and pasting in the documentation fields, but for some (infuriating) reason the control + A doesn't. Smiley Mad

I stumbled across this today

 

https://decibel.ni.com/content/docs/DOC-12073

 

It is an XControl created by Thoric that allows LabVIEW users to acess Microsoft .NET Charts

 

I think NI should put some development effort into this.  It would be a great way to get some new cool charts.

 

 

Hello,

 

I started this discussion

http://forums.ni.com/t5/LabVIEW/how-to-prevent-an-enum-control-from-wraping-around/td-p/3089021

and someone suggested to put it here in the idea exchange.

I think it would be great to have a check box in the properties window of an enum control where I can select if the enum control should or not wrap around when clicking the up or down arrow and the top most or bttom most value is reached ( and taking into acount that there may be some values disabled)

 

Another idea concerning enums is to enable editing the value of each entry. As much as I found out values always start at 0 and increment by one with each entry.

 

Hope these ideas help improve LabView

 

Martin

 

For LabVIEW users,

How many of them need "Delete Option" on Right Click Context Menu?

Delete option in Context Menu.png

I feel providing an delete option in right clicking context menu for any Indicator or Control deleting will make developers easy and fast assessable and avoid too-much use of keyboard.

We use our left hand for control and Shift more offen but for pressing delete button which is at right top corner in keyboard, all of a sudden we will remove our right hand from mouse and press Del which is uncomfortable.

 

So, Developers share your point of view for the same and request to add Delete Option in upcoming version.

Later we will ask even Cut Copy Past...:smileyhappy: He! He! He!

This is a simple suggestion regarding returning all variant attributes from a variant in the correct data type if the name is left unwired but the default value is wired.

 

As you probably know, if you leave the name and value terminals unwired the "get variant attribute function" will return an array of names and variants for all of the variant attributes. If you wire the name or the default value then the node will adapt and return only a single value with the 'found?' output.

 

Here is a diagram to show you what I'm talking about:

2015-02-18_11-55-39.png

 

Currently, if you leave the name unwired but wire the default value this results in a broken block diagram.

 

The reasons for this suggestion are as follows:

  • Cleaner block diagrams - if you know all of the variant attributes are the same data type then you save the extra constant/variant to data node
  • Possible performance improvements - maybe NI does (or can do) something to improve the performance/memory allocations if the data type is known and can be done within the SubVI
  • I can't see a case where it would break compatibility other than perhaps a broken block diagram would no longer be broken if the default value was wired but not the name but the runtime functionality would remain the same
  • As variant attributes are a very efficient and recommended way of doing key/value lookup tables I think this minor change will tidy things up nicely and if there are performance gains to be had under the hood by doing this then all the more reason to do it!

Thanks for reading and hope you'll +1 my idea!

 

 

With LINQ (Language-Integrated Query) becoming increasing prevolant in .Net programming, more and more classes are using <T> Generics.

Unfortunately, LabVIEW does not support Generics, which limits the Methods and Classes available when importing .Net Dll's.

 

Take the following code:

 

namespace GenericsTest

{

   public class GenericList<T>

      {

      void Add(T input) { }

      }

 

   public class NonGenericList

      {

      void AddNoT() { }

      }

 

   class TestGenericList

      {

      private class ExampleClass { }

      static void Main()

            {

         // Declare a list of type int.

         GenericList<int> list1 = new GenericList<int>();

         // Declare a list of type string.

         GenericList<string> list2 = new GenericList<string>();

         // Declare a list of type ExampleClass.

         GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();

            }

      }

}

 

When importing this to LabVIEW

 

GenClass.PNG

 

Notice that I can only see the "NonGenericList" Class as LabVIEW fails to destruct the "GenericList" Class.

One solution to this problem may to treat generics as Method/Constructor inputs, allowing the developed to choose the Generic Type.

(Inspired by this discussion)

 

The Index & Bundle Cluster Array function currently discards any labels of the input data. I think it would be more useful if it would try to retain the names (i.e. copy the original array labels (if available) to the element labels of the output).

 

The picture illustrates the idea. On the left we see the current behavior and on the right what we would get after this idea is implemented.

 

We have cloud computing, virtual Machines, CPU virtualization etc. - There are numerous ways of achieving parallel and distributed computing, available at different architectural levels. The inherent parallel nature of the LabVIEW graphical programming means we can often achieve parallel computing without thinking.  

 

-But in cases where the programmer actually needs to make a decision we now have the Loop Iteration Parallelism option.
If an action is to repeated multiple times and the execution of each run takes longer than the overhead of communicating the input data, execution code and/or output data across to multiple targets, parallelization can reduce the total execution time, and/or reduce the load on each target. Now, in some cases the execution time can justify parallelization even across slow communication channels. 


What if we expanded the user-friendly loop iteration parallelization mechanism to also support remote processors?

 

  • On the targets we want to offer as execution hosts we will need to install a host service. This service might offer us the choice of offering all, or just a subset of the available cores.  Perhaps even decide this based on the current load on the target, or time of day(!). The targets can be of different platforms as long as the code is possible to recompile for it.

 

So how would this look like to the programmer? Well, we simply extend the for loop parallelization function dialog to something like this:

 

For Loop Iteration Parallelism Across Targets.png

 

  • The loops should also allow this setup to be changed at run-time. You could have a general VI to define the default targets and establish a link to them, and each for loop could have input terminals to specify the parallelism options to be used at the time of execution.

  • Another fun consequence of this functionality would be that you can really distribute *any* part of you code across multiple targets simply by wrapping it in a 1-iteration only loop.

 

With this functionality in place getting 10 machines to work on a heavy problem instead of just one would really be as simple as drawing a for loop...Smiley Very Happy

.net and many other languages have an intuitive and simple way to allow you to define how a window behaves when you resize it: anchors.  Anchors allow you to define the distance between an edge of a child control and the edge of a parent control regardless of the size of the window. The size of the control itself stays constent unless it violates the rules of the defined anchors in which case it changes sizes to meet those rules. For example a front panel with the following anchors:

 anchor1.png

 

Would be resized into:

 

anchor2.png

Very simple idea that can make locating the basic comparison functions more efficient (first two lines). Changing the order putting each comparison function and his counterpart below him would make easier to find the desired one.

 

Now: Comparison palette.png        Proposed: Comparison palette - rearranged.png

How you ever had to design a SQL query? Probably Smiley Happy

Usually I design these in MS SQL Server Management Studio, because its easy to test there. And I like that the sql code is colored, so its easy to see whats going on.

However, when I copy it into a string constant, the colors are gone:

Non_rtf_example.png

 

But I noticed, that if I copy sql code into a mail or a document, the formatting from MS SQL Server Management Studio is preserved.

That is because the program stores RTF (rich text format) information on the clipboard.

 

Wouldnt It be nice if there was an 'Paste Special' or Quick Drop feature that preserved the RTF formatting when pasting text into a string constant or a documentation label?

 

Then it could look like this:

RTF_text_example.png

 

If you think that this could be a nice feature, then kudo this idea Smiley Happy