LabVIEW Idea Exchange

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

 

Refer to http://zone.ni.com/reference/en-XX/help/371361P-01/lvpict/draw_line/

 

Under the Pen -> Style, there is a "Dot" option.

 

But the output is not really a dot but a short dash. Can labVIEW make the output into a real single pixel dot?

 

Same applies to draw circle VI.

 

The VISA test panel is a very valuable tool for troubleshooting instrument connectivity issues.

 

This used to be included with the VISA runtime, or at least with any installer that also included the VISA runtime.

 

Now I have to separately download and install the FULL VISA just to get this valuable tool. 

 

That makes installing a LabVIEW executable a multistep process as now I have to run two different installers. 

 

NI-MAX and the VISA test panel should ALWAYS BE included in any installer that includes the VISA runtime.

Idea is quite simple. I believe that it'll be handy to have in possible reason description of error 91, exact data type names which are passed in, and connected to type input. It could help during debugging, because then one would know immediately, which data type is wrong.
Now it's like that:
"LabVIEW: The data type of the variant is not compatible with the data type wired to the type input."
And could be like this:
"LabVIEW: The data type of the variant (Numeric) is not compatible with the data type wired to the type input (String)."

This was issue number 7737579.

I wanted to be able to export and fill in the fields of a PDF Form.

There is already the ability to work with Word, Excel, and various other data bases, but a PDF Form is not supported.

I know there are other ways to skin this cat, but in my case, we have many PDF Forms already made that are test reports.

To have Labview run the test and insert values into the named fields of an existing PDF Form seemed like a no-brainer to me.

 

Anyway, that is my suggestion for you guys to chew on.

Thank you,

Michael

I've got some calls to low level VIs that rely on windows system dlls within a larger top level VI. To make that application work on Windows and Linux, I've put conditional disable structures around the dll calls. When I open the top level VI in Linux, I have to click through a bunch of "Find missing file" dialogs for the Windows system dlls. If I cancel through all the dialogs, the VI still compiles and runs correctly in Linux, so the Conditional Disable structures are doing most of what they should, but the dialogs are annoying and can cause problems with automated builds and other hands-off activities. Since the code is inside a conditional disable structure, it seems to me that LabVIEW has all the information in needs to know it shouldn't load that stuff, so it would be great to get rid of these nuisance dialogs.

So when it comes to using a queue, there is a somewhat common design pattern used by NI examples, which makes a producer consumer loop, where the consumer uses a dequeue function with a timeout of -1.  This means the function will wait forever until an event comes in.  But a neat feature of this function is it also returns when the queue reference becomes invalid, which can happen if the queue reference is closed, or if the VI that created that reference stops running.

 

This idea is to have similar functionality when it comes to user events.  I have a common design pattern with a publisher subscriber design where a user event is created and multiple loops register for it.  If for some reason the main VI stops, that reference becomes invalid but my other asynchronous loops will continue running.  In the past I've added a timeout case, where I check to see if the user event is still valid once every 5 seconds or so, and if it isn't then I go through my shutdown process.

 

What I am thinking is that there could be another event to register for, which gets generated when that user event which is registered for, becomes invalid so that polling for the validity of the user event isn't necessary.

 

before:

before.png

after:

after.png

                         panel.jpg

 

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

 

mensa.jpg

Sometimes when passing multiple values into "format into string" to build a complicated string e.g. a chain of commands for a device, it is possible that the format specifiers may become hard to notice if they aren't all aligned in the same column. I would like to propse that when a string constant is wired to the string formatter terminal of  "format into string", the format specifiers be emboldened.

For example:

SOURCE:TRIGGER %s
LINE:WITHOUT:SPEC on
ANOTHER:WITHOUT:SPEC off
SOURCE:ARB %s
SOURCE:ARB:srate %.2f
MORE:LINES 51
AND:ANOTHER:ONE %f

 

I think it would be very useful if when selecting a build specification, you could build all the dependencies of that build in a manner similar to the way "make" works.

 

When building complicated projects, there may be several builds. The simplest example is an application installer that depends on the the application to be built first. Another example is a suite of compiled utilities that all have to be compiled before the installer is made. Another example is an application that uses packed libraries, all of which should be built prior to making the final build and then the installer build.

 

"Make" is an old tool that does this dependency checking for you. If you select the installer to build, it would check the dependencies of the installer, defined in a "makefile", and then build any project that is out of date. The out of date projects are those where the last modified date of the source code is later then the last modified date of the built file.

 

In this way you can simply ask that the installer be made, confident that "make" would find all the required dependencies and compile them as well.

 

This can be baked into LabVIEW. The installer build already knows which build specification it is dependent on.

 

Below is an idea of where this feature would be implemented.

 

Make Dependencies.jpg

Single control items have "NewVal" and "OldVal" in the Data Node for Value Change events. This is applies for numeric, boolean, and strings. It would be nice if this feature were included for listbox and multicolumn listbox labels for the "Edit Cell" events.

Use case: I use a listbox to show the materials for which the user has defined experiment settings for. These settings are saved in an XML file with the material name as an attribute. In the event that the user wants to edit the name in the listbox, it would be nice if they could just do that directly in the list box and the XML change will be handled automatically in the background. Currently to find the right element in the XML, I use an XPath to search for the label selected from the listbox. If the user edits the name, I need to know the old value in order to replace the existing name. Presently, this does not work as the Event Data Node only supplies me with the new value.

It would be useful to insert a VI directly from a project or from a class into a line.

 

To support modern web thin clients, the LabVIEW webservice needs to support the OPTIONS request. When a web browser makes a cross origin request there are a few rules that the response must comply with before the browser will provide with the result to the web application. The OPTIONS request is needed to respond to these requests.

 

A cross origin request is any request where an application running on one domain needs to make a request to another domain. For example, if there was a javascript application running on the domain www.labview.com and it needed to make a AJAX request to api.labview.com, the browser considers this a cross origin request. This is a common setup when the thin client is being hosted by one server, and the webservice is being hosted by another server. https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

 

Depending on the request, the browser may issue a "preflight" request. "Standard" requests are GET and POST requests without custom header fields only require the response has an additional headers. Other requests (PUT, DELETE, GET w/ headers, POST w/ headers) require a preflight request. A preflight request is an OPTIONS request. If the OPTIONS request doesn't get an appropriate response, the browser will not even make the actual request. https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request

 

For example, I'm starting an application and here's how I'd like it setup.

 

1. Windows PC. This is the central server for the application. There will be a normal LabVIEW application running on this computer. There will also be a web service run on this computer. The web service will mainly host a web application written using HTML/CSS/Javascript (although it could be written using HTML vis from NXG).

 

2. A bunch of CRIOs. These CRIOs will also host their own web service to get system information, measurements, and diagnostics. As new CRIOs are commissioned, they'll report to the Windows PC.

 

Now a user uses their web browser to access to the windows PC. The Javascript Application (which is hosted on the Windows web service) provides the user with a list of all commissioned CRIOs. They then click on one and the javascript application starts to make requests directly to the CRIO's web service. Since these CRIO's are on a separate IP address, the browser flags this as a CORS request. This means that an OPTIONS request can be sent. Since I can't handle an OPTIONS request in a LabVIEW web service, I can't implement this.

 

This is just one example. Another case would be an Apache hosted web application hosted on an Amazon EC2 needs to make requests to a LabVIEW web service running in a different domain. Basically any time a web application (AKA something running in the browser) needs to communicate with a LabVIEW web service you'll run into this problem.

It's a common convention that the space bar is used to pause/un-pause videos that are playing. It would make sense to me that pressing the space key would toggle the pause button (Pause / Continue).

 

1) Pressing Space Bar key would be the same as pressing "Pause" on the VI toolbar.

 

2018-03-15_10-07-07.png

 

2) Pressing Space Bar key again would "Continue" (un-pause).

 

2018-03-15_10-08-31.png

String controls, such as the Text control of the Configure Build Text VI, should ignore keyboard shortcuts which they don't support instead of interpreting these as the alphabet character key pressed.

 

For example, currently CTRL+A isn't supported to select all. Instead the character 'a' is added to the string at the current position.

 

It would be better if combinations of key presses that are not supported are disregarded. For example, I have a habit of hitting CTRL+S to save whatever it is I'm working on frequently. If I inadvertently do this within a string control on a dialog then I will find I've just added 's' to the string.

This is in addition to New LabVIEW Installation Retains Options

 

During LabVIEW installation if it detects a previous version of LabVIEW has been installed it should present the user with the option (or have a flag when running the installation to allow this to be done silently) to import all VIs which are not installed by default that are present in the following folders:

  • vi.lib (VI Package Manager installs packages to this location by default)
  • instr.lib
  • user.lib

Upon importing the VIs to the new LabVIEW installation it should also mass compile them to the new LabVIEW version so the user is not faced with having to save loads of VI dependencies each time the user opens a VI which uses them.

 

This would make the getting started with the new version of LabVIEW a lot more seamless when just upgrading from a previous version.

This idea came to me from Darren's Nugget 2-23-2018 on Data Agnostic Probes I thought it might be useful to write a Probe.vim or specifically, a data type malleable probe to gain the ability to have some access to the data itself in a general smart probe and maintain the ability to display the data in a type specific manner.

 

One example would be a "Data History Probe" that displays the history values of any data type.  I'm sure there are other good uses.

One of the fiddly things I seem to do more than I'd like is adjust the bottom of block diagram comments to the right height. At a minimum there, but also for similar text boxes on the front panel or subdiagram labels, etc. I'd like to have a snap feature that sizes to a multiple of the text height. Examples:

 

I have several LabVIEW applications that I work on, and each of them has a Perforce workspace associated. Every time I switch to a project that is in a new workspace, I have to dig through the SCC configuration menu to switch workspaces, which takes a while.

 

It would be really sweet if LabVIEW recognized that a project file was in source control, and associated the workspace with the project file. (Especially because I could have two application projects open, each in its own workspace.)