LabWindows/CVI Idea Exchange

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

Where does NI stand on this????

NI no longer supports 32 bit OS, but hasn't ported their own toolkit to x64. Since NI is NOT committed to developing (or even maintaining) CVI toolkits, how about open sourcing these so that users and the community can move these forward.

At present CVI is missing a serious report printing facility that permits to create flexible, professional and good looking reports.

A quick search in CVI forum shows that periodically somebody posts questions about reporting but available instruments at the moment are not satisfactory in my experience.


As far as I can tell, a good reporting instrument:


  1. Should integrate easily with CVI
  2. Should be fully documented, with some example for the more typical types of reports (text + table, text + graph, text + image...)
  3. Should not rely on external programs (some customers have rigid constraints on the software installed on equipment machines; additionally, asking them to have full Word or Excel or Diadem installed only for reporting is just not serious)
  4. Should not rely on ActiveX controls to be licensed separately (same as above)
  5. Should permit to include text and graphics (images, graphs...) and define headers, footers, page numbering and other common features normally present in reports
  6. Should output data directly to the printer or in PDF format
  7. Should have a preview facility both for development and for the user (something that NIReports hasn't and will never have)

OPC UA has become much more popular in the last few years.

I did some tests trying to integrate open62541 library in CVI 2015 and 2017.


I think that CVI should provide this library as an add-on.

Moreover NI engineers can put their effort tryingo to develop the library itself (rather than rewriting a library from scratch).

Dear NI,

Until lately I worked with CVI 2017. I've decided to move on and I have installed 2019. For years I use NIReport 

to create reports to the customers. To my astonishment, NIReport is no longer supported, meaning a work of years will be thrown away. I have tried other options provided by NI, such as creating a report in word/excel, but neither gave me  satisfactory results

I am developing applications in CVI for 15 years, and had NEVER a problem of backward compatibility. I know other companies  that do not care about their customers, but NI has been never the case.

I hope that NIReport will be back. 

thank you


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.

My CVI application started to generate linker errors immediately after I upgraded from CVI 2012 to CVI 2013. A number of other people have reported exactly the same problem, with the linker unable to resolve symbols found in IMAQdx or nivision.


This means that the final release of the new version of CVI cannot have been tested when using the image acquisition or image processing add-ons.


I suggest that, in future, new versions of all tools are subjected to automatic regression tests against the examples distributed by National Instruments before release. Because it obviously doesn't happen now.

I noticed that LabVIEW has two ways to download instrument drivers: direct downloads from IDNET and through the NI Instrument Driver Finder.


[NI Instrument Driver Finder Menu Option Image]



[Alternative NI Instrument Driver Finder Menu Option Image]



When downloading drivers directly from IDNET, the file must first be unzipped and then placed in the <National Instruments>/labview xxxx/instr.lib folder.


The easier option when working with LabVIEW, the NI Instrument Driver Finder, downloads the files, unzips them, and instantly gives you access to example code or palette of VIs for communicating with said instrument.


If possible, could we add a similar tool to LabWindows CVI?  It would be nice to have a menu option which would open a CVI Instrument Driver Finder.


The interface could then allow users to easily find a driver, download it to their Instruments Folder, see example code and start work.


Since probably 30% of all LabVIEW adoption comes from driver downloads and driver development, maybe this is an investment of resources worth looking into?


[Image of NI Instrument Driver Finder]




[Image of Instrument Driver Finder example code, project access, and palette access]




Shawn Shaw

I would like to see some statistic informations about my cws and or prj-files. Like the "LinesOfCodeWichtel"...

If the thread that FileSelectPopup (and similar) is accessed is multithreaded, wacky things happen. The programmer can fix this by creating a new thread that is itself not multithreaded and pass information back to the current threrad. It would be helpful if the current functions were designed to default to create such a thread,  return the value(s), and garbage collect removing the programmer from the loop.


In the case of MultiFileSelectPopup, it is not clear to me what would be the best practice given the unknown number of results. I guess one could assume a limit for the number of results that may change as the Windows API does.


Other possible solutions can include an added parameter (variable switch) or with a whole new function. I could see the default case as an effective solution for legacy code that is partially refactored for multithreaded performance.

Is NI road map going to allow applications that are developed with CVI for Windows to run also on the Apple MAC OS as well as run on IPhone and Android Devices? The current alternative to develop the applications for the Apple MAC OS is on X-Code IDE where the code with Objective C (and Objective C++). The code that is developed with CVI cannot be ported over to the MAC OS because Objective C is not based on the ANSI C Standard. X-Code IDE is a powerful but also a clumsy IDE and can be unforgiving. NI also provides the drivers for most its hardware for the MAC. In my opinion the CVI IDE has a much better IDE than X-Code and CVI is more intuitive to use from a development perspective.  Since there is open source CLang Compiler for the MAC why can't NI import the CLang Compiler to work with the MAC and IPhone? Both Windows and MAC use the same Intel Microprocessor. Intel also has a compiler for the MAC OS that is separate from the X-Code IDE.

To develop the applications for Android devices requires the Eclipse IDE. Can CVI be adapted to develop software with the Eclipse IDE like an add-on?

We hear all the time that should write code that is reuseable. It is difficult to plan so far ahead, so I listen to the preachers but seldom follow them.

However, it is clearely easier to use snippets, code fragments, that I put together for something, even tested them and I remember that I have done that once, but finding it again is too much hassle, it is just 3 lines, 5 lines of code. It owuld be nice to be able to manage such snippets, copy them, tag them,or even share them; I recon, there are snippet libraries out there;,out of sight, out of reach;  but it would be really nice when the need arises, - you know that nagging dejavue feeling- than I could find them, bag them an use them... With time, even nice and practical libraries could grow out of them snippets... 🙂


A feature that is still missing in NIReport is the ability to show a preview on screen of the generated report.

This feature could help very much the developer in designing the report without the immense wasting of paper that its lack implies. Moreover, customers are more and more requiring this feature to check reports before actual printing them, especially in applications where reports can be tailored some way to adapt to customers requirements.


Both reasons prevent me at present to use NIReport,

Here in my company we use SVN as versioning tool for CVI projects.


It is working fine enough. However, when users add files to the project, the .prj file is strongly modified.


Even if the lots of changes are quite useless, it may be more usefull if the changes would be minimal.


The worst case is when 2 users are comitting changes to the project file at the "same time", it finally ends with some conflicts.



So, please consider minimal changes to the project file for simple changes in the project (my secret wish is to, at least, keep the .prj file as text...)


Hi Everyone!


In these days, I have been debugging a complex application(almost 12,000 lines of code) and it was very hard to do a map showing the relationshing at least of some critical functions.


For this reason, I consider that a very helpful debugging tool could be to add in LabWindows/CVI, a window like the VI Hierarchy in LabVIEW; that shows the relationship beetween the functions inside all the module in a CVI project. This windows will show which functions calls a particular function.


Here, there is a very simple example:




At present the IniFile instrument permits to read an existing .INI file, modify it and re-save it preserving existing comments in the file, if any. It would be a great addition to permit to programmatically add comments to sections and/or items.


I have a rather complex application with several optional modules that can be added or tailored by setting appropriate items in a configuration file in .INI format. I have developed an application that helps me creating such configuration files with the proper elements added but if I want to add some comment for better documentation to the final user I need to manually add them after the file has been created with the risk of forgetting something: if I could add them while generating the configuration file I would avoid this risks.

My company has begun placing incentives on Test Driven Development as fundamental to the code development process.  I expect this incentive will impact other companies where CVI applications are used in production.   It would be beneficial for NI to provide developers with a roadmap and definitive structures and methods and support for TDD within the CVI environment.

In the .NET Controller creator, it would be nice:

  • to be able to give a pre-defined list of the only classes it is useful to wrap,
  • or that CVI memorizes the already checked classes it is useful to wrap

in order to generate the wrapper quickly.


Because it is very boring to have to regularly check manually only 22 classes among plenty of not collapsed classes.

a screenshot of the CVI dotNET Controller wizard.png


Note: I check only desired classes to reduce the compilation time of the wrapper (which is very big with all its classes: 350 000 lines of code in the resulting C file!), as suggested by the CVI manual.



Currently, it is only possible to load XML for parsing from an xml file.  In order to load xml data from a string, it is necessary to either write to a temporary file, or use the MSXML library directly.  It would be fairly simple to modify the CVIXMLLoadDocument() Function (or create a new function) which uses the MSXML IXMLDOMDocumentloadXML() function, which allows loading XML directly from a string. 


Adding this code to the current function after the IXMLDOMDocumentload() function would improve the CVIXMLLoadDocument() function so that it tries opening the input string as direct XML if it is not a path (Replaces line 167):


__caErrChk(MSXML_IXMLDOMDocumentload(xmlHdl, NULL, variantPath, &success));
	if(!success) //if loading as a path fails, try reading as direct XML code
        __caErrChk(MSXML_IXMLDOMDocumentloadXML(xmlHdl, NULL, fullPath, &success));    


I would like a zoom (Ctrl + mouse wheel) when creating .uir panel.


I'm not sure if this is a LabWindows suggestion so much, but it would be convienent if there was a library function to rename a TDM/TDMS file  RenameFile() won't work here, as the .tdx file has the .tdm file's name embedded in it, so a simple rename breaks the files.  The only options right now are to edit the .tdx file to fix the file path, or to manually recreate the TDM file under the new name by reading then writing all the channel groups, channels, properties, etc which is tedious.  Thanks.