LabVIEW Idea Exchange

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

How many times have you created a sequence structure with two milisecond timers around a section of code to see how fast it operates.  Now the VI Profiler works great if you are only looking at whole VIs, but there are lot of cases where that the VI level is not granular enough.  A great feature would be a Benchmarking Probe.  It would work similar to a Breakpoint. It would have a Benchmark Probe Manager similar to the Breakpoint Manager in which you can enable/disable/delet benchmarking probes (very useful when you need to quickly see if the benchmarking code itself is adding excessive overhead).

 

Unlike a breakpoint or a probe, it requires two icons a Start/Stop of where you want to take a measurement. I would imagine that there would be two ways to insert the benchmark probe, one method would be similar to how insert a Breakpoint (in fact you could simply use the breakpoint tool and just add a right click option to convert to a benchmark probe). Once you clicked on the Wire that you wanted to "Start" the benchmark, the mouse icon would change to a the "Stop" benchmark icon and you would choose the place to Stop the benchmark. Of course if those two points weren't "In Place" and "Sequential" with each other, LabVIEW wouldn't allow you to place it.

 

Another method could be simply highlighting the area of code you want to benchmark and then right-clicking on the hgihlighted section, you would get an additional pop-up menu item for adding a benchmark, this would automatically place the two benchmark icons.

 

The Benchmark manager would give options of viewing the Total Time, Average Time, number of Runs in miliseconds, microseconds,etc in addtion to being able to enable disable, delete benchmarks.

 

benchmark.png

Cuando tenemos en funcionamiento en tiempo de desarrollo un VI, que no tenemos activada la barra de herramientas de debuger, no es posible parar si ejecución, esto es especialmente grave cuando hay un error de programación y estamos en un bucle sin fin, o otro caso mas grave, es cuando un vi que tenemos como modal esta abierto en el tiempo de desarrollo, pero no esta en ejecución, por que no ha sido todavía llamado por el programa, este vi se pone en primer plano, y como no tiene código funcionando no tiene posibilidad de salida, con lo que impide cualquier acción sobre cualquier otra ventana, inclusive la del proyecto.

 

Seria necesario que la interrupción, del ctrl+., o cualquier otra estuviera vigente siempre, para poder detener la ejecución en tiempo de ejecución.

In ini (configuration) files it is desirable to commentout keys as well as add comments to Sections or Keys, thsi can be done with

;this is a comment

 

Why is there not functions for adding comments to an ini file

 

The functions I would like is

- Add comment to section/Key (if key is blank, the comments are added below the [section] tag)

 

I want this so that I can keep track of what the sections and keys are used for in a complex application or for putting notes into an ini (ie ;do not change this filed or ;valid values are 0-100)

 

The only method I see for this is to parse and write the comments manually of using a text file section. 

When I looked into the low level format of the ini files it is just a queue of clusters which keeps track of sections and key-value pairs, there is a comment filed but I dont see it ever used, was this a planned option that was never implemented.  I do not want to write my own since this now requires access to provate functions of the config libraray and I have been burned by this already (NI decides to make a function private and future code is broken).

I would like to see the "radix" visible in the probes for "Numeric probes" and "hexadecimal/coded display" for "string" probes

Provide a way to save and recall sets of probes for a running application.  A developer could then provide sets of various probes that would help the end user.  The superprobe would remember the VI paths and locations in the block diagrams of the application's SubVIs and automatically load VIs from disk or monitor existing re-entrant copies in memory.  The superprobe would have a front panel layout, like a global VI, to look like a custom dashboard of important data values in the applicaton.

A Diagram Disable structure lets all the code that isn't inside of it execute but not what is inside of it. I think it would be helpful to put a structure around a snippet of code and execute only what is inside the structure. I usually copy and paste it into a new vi but it would be helpful to have that functionality within the vi i'm working on. 

In Java, any errors/exceptions that a function can throw (to its caller) are listed directly in its signature/declaration.  This would be nice functionality to have in LabVIEW.  Otherwise, the only way to determine which errors a VI can return is to either:

  • examine the code manually, recursing through all its subVIs or
  • brute-force exercise the VI until you have observed all errors that it might throw in your particular application. 

Neither of these options seems particularly robust or efficient.

 

It may even be possible for LabVIEW to determine the throwable errors automatically, although at least having the ability to declare them manually would be a good start.  They could be registered through the development environment such that they are stored in the VI file itself.  In this way LabVIEW could summarize all the errors a given VI throws based on those declared within it and its subVIs. I acknowledge that this would likely require a more sophisticated error system than the current error codes (since these may not be known at compile time).  But, I would be surprised if it couldn't be achieved in a similar fashion to Java where all errors are classes that inherit from a common "error" class.

 

If I'm missing some methodical, pragmatic approach for achieving the same result, please let me know.

 I would love to see an optional input node on the edge of a while loop for loop wait. 

When I build, I like to test each step.  That means that I make a bunch of "debugging" indicators.  Some might prefer probes and breakpoints, but I like the "build as you go" and "don't use too many tools".  The challenge here is that about 80% of indicators that I make, I have to delete.

 

I wish there were a version of "diagram disable" that is specified in the block diagram, that worked for the front pane, and left me some tiny asterisk instead of the indicator, that didn't hit program execution times, and that when I configure execution the asterisks can be made to disappear. 

 

This would allow me to revisit my code, to access all of my debugging methods very quickly and intuitively, and to not necessarily change the final layout of the front panel after my debug is done.

It would be really nice if the Flatten to JSON supported more LV data types.  In particular, I find it very annoying that it doesn't support flattening a waveform to JSON since those are very common in most of the measurement APIs.  

 

In the mean time, I have come up with this little work around, but it really seems like this is something that should be natively supported.

 

Waveform to JSON.png

 

JSON to Waveform.png

I mean when it's used for indexing array...

It could be really useful if someone wants to skip some initial indexes...
It has already been done?

I would like the option to save data from LabVIEW using the Hierarchical Data Format. This would make it much easier to share data with Matlab and other programs.  

This is a real pain point for us at the moment and drives many of our engineers away from using LabVIEW, quite rightly. The tdms import dll for Matlab is slow and the 3rd party .mat export toolkits for LabVIEW are not sufficiently developed or only licensed for single-seat environments.

I think it would be nice to have a for loop that has an automated iteration constant in the tools/structures pallet.

This would be equivelent to a:  "for <a>  from <begin>  to <end> by <step_size>" statement in Maple. 

When start end by terminals are unwired, the loop should behave as an traditional for loop. 

 

 forFromToBy.png

 

This loop will produce an array [0.3 , 2.4 , 4.5 , 6.6 ....,4.2]

In other enviroments, such as TestStand, you can change the values of variables at run-time, which is extremely useful when debugging.  It would be really nice if you could dothe same thing with the values on wires in LabVIEW.  Perhaps this could be implemented by allowing you to change the value of a wire using the Probe Watch Window or, if that isn't possible, there could be a separate window altogether such as a dedicated variables/watch window.

Why is it not possible to set "This connection is => Required" on the Connector Pane?

This would avoid a lot of errors and problems in many Projects.

 

=> I would recommend to enable this Feature!

 

Connector.jpg

 

Kind Regards

Claude

 

wouldn't it be nice if like a user event...

User Event.jpg

We could register for queues:

Queue Event.jpg

Queues are similar to user events, but have some very usefull properties. Combining queues with event structures always results in parallel loops, and communication between them (with user events, or value signaling events). It would be really neat if we could register queues in dynamic events.

 

A lot of "sweetness" could be added, but if only the basic idea is possible it whould be powerfull.

 

When more then one event structure registers for queue events, each element will only be triggering one structure (like dequeueing with the normal queue functions).

 

Regards,

 

Wiebe.

 

I know breakpoints can be used to speed to sections where codes issues may arise as well as retaining values, etc. However, there are times when it would be helpful to have a speed control on the bulb to speed up and slow down the speed of the code which is running especially whenever evaluating someone else's code or new architecture/projects.  This way if I need to step through the code and want to watch it run in the block diagram I can speed up or slow down the pace by which LabVIEW steps through the code. I would like a really slow mode as well as a very fast mode.

I have several times found myself using variants to create various types of sorted lookup tables data sets. (Variants "sort" attributes/records by the name automatically, taking a performance hit when creating/adding to the variant, but wicked fast to retrieve a named attribute, and when getting a list of all named attributes they are returned "sorted".)

 

Now, in many/most of those scenarios, I find myself wishing I could just name the attribute with a numeric input without the hassle of converting the numeric to a string.

 

For example, if you read the file-property of all files in a folder tree and put various information for each file into a cluster (e.g. size, last modified date, name etc.), this cluster would become the "attribute" or "record" that you add to a variant for quick lookup later. Now, of course you have many ways to name the attribute(s) depending on what you want to do. In one case, you may want to retrieve file attributes based on the oldest (or newest) "last modified" time.. currently one way to do this is to "format into string" the "last modified" time stamp data and use that as the attribute name. If you are careful with how you format it to string, the sorted string list will come back oldest to newest (e.g. format it as YYYYMMDDHHMMSS to get a decimal string that sorts oldest (least) to newest (latest). (Note that when getting lists of files from LabVIEW, the order of the returned files does not appear to be sorted by "modified" or "created" dates.)

 

It would be nice if instead the "name" input would support usage of numeric inputs directly. If this was implemented at a low enough level, then the string conversion would not only be hidden from us (users), but potentially be completely removed as I picture the "name" at a low enough level is just a unique identifier anyway..  If this could be made to allow the "name" terminal to accept time-stamp data types, strings, I/U32 and DBL I would be very happy indeed!

 

Please discuss in comments if this is good, bad, impossible, possible etc. etc.

Thanks,

Q

I have a multiple step ATP systems that Operators would like to see Gray for Not tested, Red for Fail and Green For Pass. Currently I overlay two boolean indicator Enable the correct one and set it to true. It would be great to have a single boolean indicator with tri color output.