LabVIEW Idea Exchange

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

It would be great if LabVIEW supported the Python language, including any of its various packages such as numpy. Such computations would be much more transparent and easier to support than calling code in DLLs. They would also be much more open and flexible than the existing built-in computational solutions in LabVIEW, e.g., expression/formula nodes. Currently, I have to call Python scripts via System Exec.vi, which complicates data exchange. (NOTE: I am using an older version of LabVIEW: 2009 SP1.)

We currently have an AND Array Elements and OR Array Elements.  It would be helpful to also have an XOR Array Elements.  I most often run into needing this when trying to calculate parity.

 

Current Boolean Pallette.PNG

In LabVIEW you need to know the number of sub matches at edit time and cannot handle arbitrary regular expressions. It would be nice if there was a regex function that returned sub matches in an array which can be handled much more abstractly than a pre-sized xnode.

 

C++, the regex utilities return a container-like class https://www.cplusplus.com/reference/regex/match_results/

PHP an array of matches is returned https://www.php.net/manual/en/function.preg-match.php

JavaScript returns an array of matches https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

 

Hi,

 

 the "Search 1D array" function returns only the index of the fist item found. However some times, it is needed to get all the indices of the elements that match the element the we are searching for. I think it will be nice if this vi returns all the indices that match the element we are looking for.

 

g.gif   

 

to become like this

 

srcharay.gif

This function is an excellent tool for string manipulation.  I suggest adding an input terminal for specifying the "row separator" string as shown.  This string would default to a platform dependent EOL generated by the current function.  The "delimiter (Tab)" input should also accept an empty string as suggested by others (allow empty delimiter).

 

Array to Spreadsheet String.JPG

Add support to the Vision Development Module for multi-image TIFF files.  Currently the files can be opened but only the first image can be read.

Should be able to specify tolerance instead of just upper and lower limits. This de clutters the application block diagram when you are checking for a value within certain limits.

 

 . Upper limit becomes : x+ tolerance, Lower Limite becomes : x - tolerance when using tolerance instance of the polymorphic vi.

 

For even higher level functionality , specify units of tolerance : absolute, percent(1e-2), parts per million (1e-6), parts per billion (1e-9)

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

Many or most VIs that ship with LabVIEW have their protection set to Unlocked (no password). The screenshot below shows a selection of such VIs.

1.png

 

It would be much better if the protection of vi.lib VIs was set to "Locked (no password)", to prevent accidental modification.

2.png

 

It seems very risky for built-in VIs to be open to modification, especially to accidental modification.

 

Scenario 1: Developer A is developing an application on their machine which contains modified vi.lib VIs which were accidentally modified as part of work on previous projects. They build an application which passes validation and starts to be used in production. All of the developer's source code is committed to a source code repository. Developer A leaves the company. Six months later Developer B is asked to pull the code from the repository and add a minor improvement. The application behaves very differently when Developer B builds it on their machine. A long and complicated troubleshooting session later, Developer B concludes that the different behaviour was likely caused by modified vi.lib VIs on Developer A's machine. Developer B cannot be sure, because Developer A's machine was wiped when they left, so there is no way to unequivocally prove the conclusion.

 

Scenario 2: A team of developers builds a test system for a defence application. The code is completed, and the test system is put through a thorough  commissioning and validation process that involves testing dozens of known good units and known bad units. The validation process takes three weeks to complete. Management plans to not have to run the whole validation process for future minor changes. Instead they will ask the development team to perform code reviews and record notes for each minor change. Revalidation is not necessary if the code reviewers agree that the changes are non-functional, for example, the wording was changed in a dialogue message, or a logo was added to the UI. This sounds like a great plan, but is technically unsafe. Strictly speaking the whole revalidation process would have to be rerun, even for minor changes, due to the fact that not all of the source code is visible in the repository (there is uncontrolled source code in vi.lib that could have been modified in between builds).

Essentially I don't think it's safe for an app to contain source code that is not visible or tracked in a repository.

I can't think of a simple, quick solution to the concerns above, but having all vi.lib VIs set to "Locked (no password)" could be a quick first step towards reducing the likelihood of this issue. Developers would at least have to consciously edit vi.lib VIs, rather than doing it accidentally which can happen now. Of course, a malicious actor could still wreak havoc by editing a few inconspicuous vi.lib VIs.

The risk would be reduced further if the vi.lib VIs were password-protected. This would come at the expense of not being able to view the source code of native VIs, something which I find useful. Therefore, I personally would prefer "Locked (no password)" to password-protected, but I might prefer password-protected to unlocked.

Similar concerns apply to non-NI third-party libraries that install in vi.lib, user.lib or instr.lib, for example the extremely useful OpenG libraries. These too are examples of uncontrolled source code. For this reason some developers I worked with preferred to copy the OpenG and other libraries into the project repository (this involves a tedious job of opening each library VI and relinking it to the other library VIs in their new location).


This idea is similar but potentially easier to implement than the following idea: Make the VI's from the "vi.lib" Read-only - NI Community

 

Thanks

I would like the ability to create a visually appealing Intensity Plot without having to jump through the hoops involved in some workarounds.  It could be a right click option or something, similar to anti-aliasing an XY Graph. For possible workarounds, see the thread I created here when I was looking for a way to do it.

 

intensity.PNG

3d.PNG

 

I want the top (Intensity Plot) to be able to look like the bottom (3D Surface)

The lack of 64-bit Labview support has been fustrating. Having the availability of Labview 64-bit for so long now but still limited by the features that are not supported (slow to recieve toolkit support, mathscript, etc.)

 

I am in need of accessing common data types such as HDF5 and EDF. Discovering that these formats are avaialble in dataplugins was exciting, however to find that they dont work in 64-bit Labview was dissapointing.,

 

 

Regards,

Brian

While the intrinsic Math functions all support EXT, DBL and SGL, few of the remaining Math (or Signal Processing etc) functions support anything except DBL.  For many cases, using SGLs is sufficiently accurate, while using less memory and often being faster to compute.  While some functions are implemented solely in G (and therefore it is easy to create an SGL copy, though not so easy to integrate in a "polymorphic" way into the existing menus), most functions call a DLL routine.

 

I suggest that SGL (and CSG where appropriate) be supported for all Mathematics functions, including Signal Processing, and the Advanced Signal Processing Toolkit.  Is there anyone else who would make use of these if available?

 

Note: two "addons" have been released by NI which begin to address this.

 

Single-Precision Basic Linear Algebra Subroutines (BLAS)

Currently, the only representation for array indices is I32.  Given that indices can only be positive, and that modern systems are 64-bit, it would seem sensible to make this U64.

Analagous to replacing wire connections with a Shift Register on a While Loop, it would be nice to replace the connector where a wire enters an In Place structure with one of the appropriate accessor functions (Unbundle/Index etc).  In the same way, it should prompt for the location on the other side of the structure, either to replace a wire connection, or to create a new element.

I would like to see the array palette to be extended.

 

For instance, a function that is similar to the 'find' command in Matlab. So basically an extentson of the current 'search 1D array':

1. to more dimensions (one can easily define a search order).

2. the function should return all indices where the requested value was found, not only the first one.

 

A further extension would be a 'find and replace' functionality.

 

Steven

 

 

Many of us using graphical programming for scientific applications, where we dealing with numbers, measurements, etc.

How often we grab to Windows Calculator to compute simple equations?

What about ability to enter something like 3,75*2,8 into any constant or control (in principle everywhere where we can put numbers) and then get computation result in this place:

Screenshot 2024-03-06 09.16.22.png

In the past I've worked in desktop publishing industry and using the software called "Macromedia Freehand MX", and that was really "killer feature", which saves huge amount of time.

 

This is how it works:

resize.gif

Or for example, 5 rotated copies:

rotate.gif

Even in Color mixer simple computations are allowed:

mixer.gif

Everywhere where I can put some numbers, in any dialog:

guides.gif

So, my suggestion to have the same in every numeric control or constant.

 

This is what I mean:

numeric1.gif

So, it should be allowed to enter here something like "3*5" or "42+3*5" 

As MVP suggested to have the only (at least) base operations *, /, +, -, also combined as shown above, but may be "advanced" support (like fully offered by Formula String) is also not so bad, why not:

numeric2.gif

Anyway it should work everywhere, including constants on the Block Diagrams:

numeric3.gif

Also, for example, on Resize Objects Dialog:

Screenshot 2024-03-06 11.20.04.png

Or even in the Settings (in general everywhere for any numeric field across whole LabVIEW):

options.png

 

And also in Run-Time, of course, not only in Development Environment.

 

If you think that "always enabled" feature will be annoying, then I can suggest to make this optionally per Control/Constant Option:

Screenshot 2024-03-06 11.31.54.png

Or may be as global setting in the Options.

I am probably the only one to be using Extended precision numbers considering the feedback on these requests:

 

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Allow-graphs-to-display-extended-type-values-i-e-create-true-EXT/idi-p/2239078

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Allow-All-LabVIEW-Supported-Number-Types-in-Formula-Node/idi-p/2502198

 

but so be it.

One other area where LabVIEW ignores extended precision is wire values in debug mode. To illustrate what I am talking about, consider this snapshot of a debugging session:

 

ScreenHunter_001.jpg

 

The result of my modified Bessel calculation (that reminds me I haven't suggested to implement special function calculation in extended mode...) returns a perfectly valid extended precision number, such as 5.03E+418, but LabVIEW doesn't recognise this as a valid value and returns an "Inf" value (which would be the correct reaction if the wire could only display double precision floating point values).

This wire is connected to the logarithm primitive, which happens to be polymorphic and hence accepts the extended type. The result is the correct logarithm of 5.03E+418, i.e. 964.15.

On the face of it though, it appears that the output of my VI is +Inf, and that LV went wahoo and estimated an arbitrary value of log(Inf)...

My code actually stores such values in shift registers, so when I debug problems with the code, I have 3 or 4 wires carrying an "Inf" value, which, when I am trying to understand the reason of overflow problem, is not exactly helpful.

 

Suggestion: display Extended Precision wire values correctly in debug mode.

 

Currently, when converting a longer integer type (e.g. u32) to a shorter integer type (e.g. u8), the output value wraps.

 

By contrast, when converting a floating point type (e.g. dbl) to an integer type (e.g. u8), the output clips.

 

conversion.png

 

It would be great to be able to specify the output mode for conversion to integer: Wrap or Clip!

Most fitting VIs have a mandatory input for X that is required to be the same sizes as the Y input. If left unwired, an error results, even though the x input is not designated a a required input for some reason.

 

Many times we want to fit a plain 1D array where the X value for each Y is simply the corresponding array index. In this case, the data and best fit arrays can be graphed on a waveform graph and we can ignore x entirely. This is now much cleaner and simpler than to construct the data for a multiplot xy graph.

 

Here is an example of a polynomial fit to a sine function, showing what we currently need to do. This idea would eliminate the need for the small FOR loop and associated wires:

 

 

 

My Idea is that most fitting VIs should assume a simple ramp if X is unwired.


(Applies to all fit function that have an X input and generate an error if it is left unwired: linear fit, polynominal fit, etc. )

 

 

Exceptions:

Fitting VIs that currently don't have a mandatory x input, e.g. "Nonlinear Fit" don't need to change, because it is up to the model to make assumptions about x. We already have full flexibility.

 

 

 

Hello LabVIEW Users,

 

While working with a complex configuration application, I found myself heavily utilizing in place operations. Throughout the process of contstructing the code, I found myself commonly having to create an In Place Indexing structure (pictured below). I thought it would be really nice if you could mark an auto-indexed array for in place operation. As always, I am open to suggestions, but thought this might be a nice creature feature:

 

Capture.png

 

Cheers, and happy coding.