LabVIEW Idea Exchange

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

You don't need to look too deep to find examples of TDMS API "memory leaks". These are not leaks but rather the TDMS API holding meta-data in memory related to the structure of the TDMS file in case you need to read from the file.

 

The biggest issues with this is that it makes TDMS a bad choice for RT applications where you make cause this index to build through file fragmentation however in most RT applications you are only writing. On investigating whether it would be possible to make an RT compatible API (in native LV) it appears that there is no reason for this to increase in a write only mode.

 

So the request is a write only API or flag in the existing API. This should prevent memory build up in loggers.

 

There is a design decision around whether to use a seperate API or have errors thrown if you attempt to read, I think I would be open to either but I think the error would work best to allow easy upgrade of existing applications.

Idea is while loops with time out condition. That means if the maximum duration is exceeded, loop stops executing the code inside and gives a time out error. So we don't have to check the maximum iteration number or time passed inside the code and it prevents unexpected long execution timing.

Timed Out Loop.jpg

 

 

 

The LM3S9D96 Development Kit is a 32 bit ARM based microcontroller board that is popular and has several plug in boards. It would be great if we could programme it in LabVIEW. This product could leverage off the already available LabVIEW Embedded for ARM and the LabVIEW Microcontroller SDK.

 

The LM3S9D96 Development Kit costs $425 and is open hardware. The LM3S9D96 is an ARM Cortex M3 running at 80 MHz resulting in 96 MIPS of performance. By way of comparison, the current LabVIEW Embedded for ARM Tier 1 (out-of-the-box experience) boards have only 60 MIPS of processing power.

 

The LM3S9B96 Development Kit brochure (http://www.ti.com/lit/ml/spmt158e/spmt158e.pdf) already states, “The LM3S9B96 development board is also a useful development vehicle for systems programmed using tools such as Microsoft’s .NET Micro Framework and Embedded LabView from National Instruments”. So, the brochure already states that the board can be programmed using LabVIEW. Unfortunately, this is not so - not without a few months work. No one has done the Tier 2 to Tier 1 port and it would make the most sense for National Instruments to do this once for the benefit of all. Relatively little work to enable this interesting development board. And the marketing is already done!

 

Wouldn’t it be great to programme the LM3S9D96 Development Kit in LabVIEW?

Hi,

 

for a complete validation of a software, it is mandatory to perform tests. When testing, we differ between two major tasks:

- static code analysis

- dynamic code analysis

 

For static code analysis, we got the VI Analyzer toolkit. It automates the task of looking into the sources (front panel and block diagram) and compare the current layout against recommended layout (style guide). Additionally, it detects known sources of issues for lack in performance or even crashes and misbehavior during runtime.

 

So it makes perfect sense, to define requirements that static code analysis has to be performed before proceeding to dynamic (runtime) code analysis.

Yet, VI Analyzer tasks have no option for creating such a link as a field "comment" or "description" is missing for the configuration!

 

I suggest to add such a field in the cfg-file level (exported VI Analyzer configuration) where we can add strings like [Covers: <req_ID>] as we are used to in LV code.

 

Norbert

This is something that would be a great addition for those of us working on different platforms (i.e. Windows and RT).

 

When a VI is compiled for a particular platform, add a seperate area to the actual VI file to keep the platform dependent compiled code. This way a vi that has been compiled for use on windows and for RT would have two sectons that keep a seperate copy of the actual machine code for each OS.

 

Where this issue becomes a problem is when you have common code called from a project that has both Windows and RT components. This creates an endless recompile operation as code is built

 

As an example:

 

Code is compiled for Windows.....windows machine code is generated and saved in the vi

Code is opened under RT.....changes pending because the compiled code does not match the platform

Recompile vi for RT....RT machine code is generated and saved in the vi.

 

When the code is reopened under Windows, it requires another recompile due to the existing RT machine code.

 

Obviously any changes to the FP or BD would cause all of the machine code areas to require a recompile. 

 

This would add more size to each individual VI, however disk space is relatively cheap with respect to LabVIEW development systems.

It would be a great add-on if the graphs have got in-built measurement features/properties/methods like an oscilloscope;

 

AdarshaPakala_0-1627657945371.png

 

  1. Trigger
  2. Basic arithmetic function like Ch1-Ch2, Ch1/Ch4, etc.
  3. Event trigger based on plot value change. Example an event will be generated if Ch1 value is greater than a set value, an event will be generated if Ch2 value is greater than Ch4 value
  4. In built average plots. Example add plots like 10SMA(Ch3), 30EMA(Ch1) etc.
  5. Threshold based graph visual property change. Example configurable out-of-threshold or in-threshold plot color change.

 

 

Advantages;

  • Save time in development.
  • Integrated code will be efficient as no data unbuild/build/pass overheads.
  • Block diagram would be neat and easily readable.
  • Lightweight code.

 

Thank You

Adarsh

LabVIEW from 2006

CLA from 2014

Provide a selectable Name Format for the Disabled Property Node Constant. I understand making the constant an enumerator to provide code documentation. It would be nice to select the Initials by Function to save wiring diagram space (see below).

Property Node Disabled Constant 00.GIF

Do you ever disable controls, I do it all the time and I’m sure you’ve done this.

Property Node Disabled Constant 01.GIF

I created a VI to do just that and save wiring diagram space.

Property Node Disabled Constant 02.GIF

I’ve attached this VI and a Polymorphic VI version of the Disabled Property Node Constant. Use this Polymorphic VI to substitute the property node constant with an initial by function icon. This will reduce block diagram space while still providing limited code documentation. Select between polymorphic instances E) Enabled, D) Disabled and G) Disabled and Grayed Out, by function just as you would the constant.

Property Node Disabled Constant 03.GIF

 

Download All

Hi.

 

I'd really like to be able to select the entire top-level cluster in an event structure, if event data is a cluster:

 

Top-level cluster.png

 

I know this have been brought up in numerous forums over the years, but I feel it's being ignored somewhat by NI? It usually gathers quite a few positive acknowledgements from other users, but I think it's about three years since it's been brought up in the idea exchange. It seems so easy to implement and would greatly simplify many event structures. So forgive me for duplicating something from countless other places, but I think it deserves a second (or ninth or whatever) glance Smiley Happy

 

Cheers,

Steen

 

I'd really like the ability to write some metadata information in the PNG Write (and read from Read) VIs. JPG, BMP would be nice for completeness.

 

Lately I'm using PNGs a lot. The W3.org spec and most PNG readers allow the use of the "tEXt" chuck tag to allow labels for simple text, keywords include: Title, Author, Description, Copyright,... -- simple stuff.

 

I'd modify the built-in "Write PNG File.vi" but it is password protected 😞

 

My workaround is to write the PNG normally, then tweak the binary file, inserting the tEXt chuck myself, just before the IEND tag, with size and CRC-32 considered.

 

I would really like to see it built in. Perhaps a cluster input with some of the reserved keywords. It seems functionally like a simple concatenation on the file IO stream prior to IEND and file close.

 

Here's the W3 spec for PNG

W3 PNG Specification

 

Thanks!

 

For some reason, the conversion bullet for fixed point (FXP) does not accept array inputs, so if we have array data, we currently need to wrap FOR loops around it.

 

 Suggestion: Allow array inputs for "to FXP" to make it consistent will all other conversion bullets.

 

(see also this post for an applied example).

The convolution tools have polymorphic instances for 1D and 2D data.

 

The 2D instances have a very useful input to control the output size (full, size X, compact).

 

The 1D instances don't have this input (Why?!). In the vast majority of my 1D convolution applications, I would prefer a "size x" behavior for the output, making the output size identical to the input spectrum, no matter the size of the convolution kernel. If the 1D convolutions would accept this option, performance and inplaceness could possibly be optimized compared to a manual trimming later.

 

altenbach_0-1702743177185.png

 

 

Suggestion:

All convolution instances need an "output size" input, not just the 2D versions.

I would like to make a small workind change on another suggestion found HERE.

 

I would like to be able to declare LVOOP classes as ABSTRACT.

 

One example is a spectrometer class I have developed which provides much of the needed functionality but which is not designed to actually DO anything (Get name, Set Name, GET calibration coefficients, SET calibration Coefficients and so on).  At the moment I can instantiate an object of this class as with any "VALID" class which then just returns an error at run-time because the functionality is not complete.

 

By preventing users from (either willfully or accidentally) dropping what is essentially an abstract class onto the BD of a program we could prevent some awkward bugs.

 

Shane.

When analyzing execution performance it would really help if we had a simple yet comprehensive way to check a VI and all it's dependencies for "things" that would create a UI thread swap / access.

 

cheers

The Close Reference –VI could be integrated into the Property Node ore the invoke node.

a.png 

I would recommend that the reference output could be activated or deactivated.

 b.png

A deactivated reference output

  • would change its appearance
  • would close the reference immediately after a the call.

An activated reference

  • should require a connected wire on its output. Otherwise an error should be indicated (somehow).

c.png

My comments  

  • An integrated Close Reference –Function would simplify the code and improve the readability.

     

  • The output should be changeable in the context menu / pop-up menu of the Property Node.

     

  • The default state needs to be discussed. I would recommend to close it by default. Sometimes it is not necessary to close the reference – it would lead to a void operation --> so what? Sometimes it is required to close it later. I think in this case you would find it out after the first run of your vi.
  • Usually it would not mater if somebody would let some references open. LabVIEW closes open references finally. But if an application should run for several days, left open references could lead to problems. Because of this I think that it is better to close to often than left some references open.
  • I am not sure how LabVIEW should react if an activated reference output would not be connected. I would recommend to indicate an error. In my opinion this would be an additional new feature to LabVIEW. LabVIEW does check inputs only. But this is another problem to discus.
  • Perhaps there are other places / VIs to implement an auto-close reference output.

I like channel wires for obvious reasons. I like to have modules, which work on their own, coming with their own GUI. This is convenient for developing my modules and testing them. Afterwards I want to be free to insert this module into a bigger project, which takes control of my module.

The channel wire controls on the connector pane can be set optional, but LabVIEW throws an error, when executing a VI with not connected channel wire control. (All branches of a channel wire must be connected to a channel endpoint...)
Please make VIs working with not connected, optional channel wire controls on the connector pane. That way, we can have channel wire based modules, which can run on their own, as a single VI, or can be controlled remotely without any change.

Quiztus2_0-1707901224255.png

 

Add a list with every error code a function can give out to the context help and/or the main help window of each function. The error-code tables included in the help file are very general at the moments. But even a table just for the File I/O error codes would not help much, because the different file I/O functions usually do not output the same error codes.

 

1. This would greatly help to replace certain error codes by user-specific error messages.

2. By knowing exactly which error can occur, you can handle each error code in the appropriate way, to make your SubVI etc. much more robust.

 

(This picture is just an example with randomly chosen numbers for the error codes to display, what i am talking about.)

 

error codes.jpg

                         panel.jpg

 

                        NI does not need to worry about the code, I provide it, it's a proposal plug&play  Smiley Happy

 

mensa.jpg

I often find myself having to sort the rows of a 2D array based on a one of the columns.  It would be nice to be able to have a native function for that.  Currently I turn each row into a cluster, sort the array of clusters, then convert back to a 2D array -- way too much overhead and wiring time. 

 

Instead, I envision something like Matlab's sortrows or Excel's expand selection.  

Inputs would be a 2D array, a column index, and an ascending/descending selector. Output would be the 2D array with rows reordered such that the specified column is sorted.

Instead of having nested case structures to implement if...else if...else if...else

I'd like to have an elseif structure where only one frame executes when one condition is TRUE.

Elseif structure

 

 

 

 

 

 

 

 

 

 

 

Problem:

in many cases after wiring in the loop , we will go for the shift register to store variable. but in case of changing the loop tunnel to shift register left side tunnel required to connect manually.if not it creates the another tunnel in the loop.

 

solution:

in the loop , if the left and right tunnel variable are same , LabVIEW automatically replace tunnels with the shift registers.

 

shift registers.JPG