LabWindows/CVI Idea Exchange

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

I realize that there may be open source solutions for this but I would love a robust easy to use email function on completion. Essentially, I am gearing up to run some larger batched analysis routines on a remote workstation for our user group. The analysis time and queue length will vary from minutes to hours (hopefully not days yet). I would love the option to email the user on completion, failure, or email me if something really goes crazy.


The problem with the current simple email solution (unless authentication was really recently implemented) is that almost every SMTP server requires additional  authentication to combat spammers I suppose.

I know we used to have this web server feature 6-7 years ago.

I would request a function where we can export designated panel which user can control from web. Also provides an option to have read only or read/write access. Also password options.


Something like this.


ExportPanelToWebServer (panelHandle, READ_ONLY_FLAG, PASSWORD_FLAG, PASSWORD);

//This starts web server automatically and ready for connection on port 80.


This opens door to lots of applications which requires web control. I think LabVIEW has similar feature. (Web publishing tool)

IPv6 is becoming more ubiquitous each year.  More and more the US government is requiring it for defense designs.  Microsoft has supported it in Visual Studio since 2008.  Even Agilent Vee supports it. It should strongly be considered for both LabWindows CVI and Labview.  There are workarounds using dlls, but a company like NI shouldn't expect users to have to do that.  I am off to start my workaround.  Please give this not so new idea some serious consideration.  Thanks.

+ Implement Modbus RTU master/TCP client protocol support in CVI

Network Variables currently provide support for OPC DA. However, the industry has been moving from OPC DA to OPC UA (Unified Architecture). The reasons for this are many, but mainly based on security and ease of use. Surveys over the last couple of years show that there are now more devices and applications being produced with OPC UA support than DA support. I have enquired whether NI are planning to support UA technology, but it seems that this is not in the pipe line.


There are solutions available (open62541, for example) that may provide a solution. Does anyone have any experience with using this solution with CVI?


I am looki

In previous applications, we would talk to our product using a telnet session.
CVI has libraries to do this, such as...


ConnectToTCPServer ((unsigned int *)&g_ShelfHandle[iSocketNumber], 23, sAddress, com_ClientTCPCB, NULL, 0);                                                                   

In one of our new products, it only supports "ssh" which is similar to telnet, but is a "secured shell" connection.
One option is to use putty:




It is not the most straightforward way of doing things, but at the moment, it is what we have to deal with.

Since the ssh protocol is becoming the new standard in communications (used in all Linux machines, and windows), and most
of the new telnet programs (supporting ssh), I would like to request that a CVI library be created to support this protocol.








Implement HTTP Requests into a CVI Library that can perform get, head, put and post functions for connectivity to devices that are wireless or connected to an ethernet cable. Also provoide a mechanism for the body and header from the HTTP Request message. Currently LabView has this capability for HTTP Requests but Lab Windows CVI does not. The work around solution is to use .Net Controllers for HTTP Requests for Lab Windows CVI. See example:

It seems to me that it would be really neat if CVI were able to support publishing/acceptance of XML data in the format required by LabVIEW UI Builder. The idea of LabVIEW UI Builder thin clients with a CVI server is quite appealing.

This issue has been explained in this thread.

As explained in some documents on the NI web site

the Network Variable Library can be used to develop an OPC Server (and a Client too).

While developing an OPC Client, the function CNVGetDataQuality( ) can be used to read the data quality, but there isn't a way to set this parameters while developing an OPC Server.

For this reason a way to set the data quality status and substatus should be added to the Network Variable Library functions that generate OPC data.

I suggest these new prototypes:

  • CNVSetScalarDataValue (data, type, value, quality)
  • CNVSetArrayDataValue (data, type, &array, NofDims, dims[], quality)
  • ...

This topic has been discussed insome threads:

Unfortunately CVI doesn't support this feature, but LabVIEW probably does.

I think that CVI should implement this feature too, because grouping scalar variables into folders and subfolders is an approach commonly used by OPC Servers, and the Network Variables are a simple way to create an OPC Server with a CVI application.

How about Ethernet/IP or EtherCAT support.  It exists in Labview.  It has been around for over a decade.

As already mention in its help documentation, ClientTCPRead function may return without reading all data you want.

So an example code is provided so one can do the read operation as expected.


But I think this behaviour is not intuitive and I am sure many people (including me) have struggled to much before finding the cure.


I suggest to add a second function to the TCP library like ClientTCPReadExact which does this workaround for us and returns with all the data we have asked for.

Include a function to programmatically re-start the NI Variable Engine if it is found to be stopped.

Although the NV libraries include a function to detect whether the NI Varible Engine service is running, there is no function included in the library to facilitate re-starting the NI Variable Engine service. 

For those The method that I am aware of to restart this service is to use the ANSI C system() function with an embedded command line:



Index = 0;                                           


while((!running) && (index++ < 5))


System(“net start \"NI Variable Engine\"");




if(!running) return -1;


Learning this required some time spent on the web, looking through old posts on how to solve the same problem in LabView.  Rather than spending that time, it would have been more productive to just pull it out of the library.

Please consider the possibility to enable the use of CVI application as web server so that the application will accessible to the web.

Its open one new world (wide  web..).


Consider the opportunity to ope to all smartphone device....

The NI-488.2 driver contains a utility called EthernetConfig.exe which displays all Ethernet devices on the subnet. The information displayed is the IP address/hostname, ethernet address, serial number and model for each ethernet device. It would be useful for users to be able to use this utility in their text-based programming languages, instead of having to open a separate application. 



Due to more and more applications using ipv6 as the network communication address, e.g. in the internet of things application,  and in many SCADA field , there also need the asynchronous connect by socket, so hope  CVI developers can provide these support.




Starting from CVI2019 previous selection modes are changed to operations made by pressing shift, alt, Ctr or some combination of them in addition to arrow keys or mouse movements. Even if some of the new features are more intuitive after a short training period, the line selection mode has been lost and in my opinion this is a pity.

At present the only ways to select text by lines line are a triple click on a line (for a single line) or pressing Home two times and Shift + down arrow key (for blocks of lines): this is considerably slower and less user friendly than before, when simply pressing Shift+down arrow key was enough to select two or more entire lines.

So please bring back line selection mode in the source code editor!


BTW, line selection mode is still listed as an option in the help for Edit >> Paste command but unfortunately this is a lost feature.