LabWindows/CVI Idea Exchange

Community Browser
About LabWindows/CVI Idea Exchange

Do you have a feature idea for how to improve LabWindows/CVI? Submit and vote on ideas now!
  1. Browse by label or search in the LabWindows/CVI Idea Exchange to see if your idea has previously been submitted. If your idea exists, be sure to vote for the idea by giving it kudos to indicate your approval!
  2. If your idea has not been submitted click New Idea to submit a product idea. You should submit a separate post for each idea. Watch as the community gives your idea kudos and adds their input.
  3. Give kudos to other ideas that you would like to see implemented!
  4. NI R&D will review ideas that have been submitted and update the status.

Note: the LabWindows/CVI Idea Exchange is not the appropriate forum to submit technical support questions.

The LabWindows/CVI R&D team is committed to reviewing every idea submitted via the LabWindows/CVI Idea Exchange. However, we cannot guarantee the implementation of any LabWindows/CVI Idea Exchange submission.

Top Kudoed Authors
User Kudos Count
1
1
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

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)

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 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.

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.

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]

 

instr1.png


[Alternative NI Instrument Driver Finder Menu Option Image]
instr2.png

 

 

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]

IDfinder.png

 

 

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

IDfinderexample.png

 

Cheers,


Shawn Shaw

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

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:

Untitled.png

 

Regards!

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... :-)

/Layosh

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...)

 

  • Add-on tools

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,

Easy integration of MS .NET libraries is a highlighted feature LabWindows/CVI. However, programmatically interacting with the GAC from LabWindows/CVI is currently challenging and more worthwhile to do in other environments. A set of functions to programmatically interact with the GAC from LabWindows/CVI would create a more seamless experience for developers.  

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.

  • Add-on tools

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));    
    }

We have a nice password control for user management. Alas, we are on our own when it comes to secure networking or saving/retrieving the data, passwords etc.

It would be nice to have some sort of cryptography.fp included. The simplest I found was the blowshish algorithm: it is fast and as far as I know, sound too. A crypto-module could be built around it. Moreover, it is available for Labview already...

  • Add-on tools

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.

  • Add-on tools

I discovered through trial and error that the CNVCreateBufferedWriter function, while it does provide buffering when necessary to preserve data until it can be written within a process, it does not provide for arbitration between writes originating from multiple processes.  Stated another way:  As far as I am aware, a single Network Variable process is not designed be written to by more than one application.

   

The documentation was not clear on this point.  It states “You can buffer data to be written to the network variable by calling CNVPutDataInBuffer. The system automatically writes the buffered data to the network variable.”  This suggested to me that arbitration of some kind existed to handle asynchronous writes by multiple applications.  I confess, my interpretation may have been driven by wishful thinking to support my application needs.

 

Nevertheless, my suggestion is that future versions of this library include a capability to arbitrate asynchronous writes from multiple applications to a single network variable.  i.e., that two, or three, or more applications can successfully connect to and write to the same network variable.

  • Add-on tools

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;                                           

CNVVariableEngineIsRunning(&running);

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

{

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

                Delay(0.1);

                CNVVariableEngineIsRunning(&running);

}

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.

I use the "user interface localizer" in a big project and need to generate appropriate LWL-files (localized UIR's) for many dll's and exe's. Currently I have to use a batchjob to generate them, interfacing the "user interface localizer" window by window messaging... Why not add some command parameters to this tool, so it will be easier to use for bacth jobs,like "localui.exe -uirfile -lwdfile -(overwrite/merge/...)

  • Add-on tools

Add a function to the utilities library that can copy an entire folder along with all its files and sub folders.

Similar to what the command line xcopy can do.

  • Add-on tools