LabWindows/CVI Idea Exchange

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

I have been looking for an easy way to resample data with either LabWindows/CVI or Measurement Studio and came across the Rational Resample VI for LabVIEW users. It would be great to have this functionality in LabWindows/CVI.

 

At the very least it would be good to have an Upsample method to insert zeros into a waveform/signal. Then an FIR interpolation filter can be used on the upsampled signal to interpolate the signal.

I miss it every time I try to replace a parameter or start typing a long function name and realize it's not the function I want. Or even just when I want to delete a single line and don't want to select the whole line, or sit there holding the backspace key while life passes me by.

 

It's especially annoying because CTRL+[arrow] navigates word by word. So this is half implemented already.

The CVI SavePanelState( ) and RecallPanelState( ) functions can be extremely useful.  Although the resulting panel state file is binary, it can however expose sensitive information with the use of even a simple tool like NotePad.  As a cumbersome workaround I had to use a command-line tool within my app, such as 7z, to compress and password protect the state file.   I suggest that CVI place a built-in protection into these functions.

I recently installed the LabWindows 2017 beta version on a lab PC and tried using it to run a project built with 2015 SP1.  Unfortunately it didn't work because of a bug I found in the beta: calling the NewBitmap or SetBitmapData function crashes the program if the number of bits per pixel is 1 or 4.

 

Uninstalling the beta is proving to be difficult.  I performed an uninstall on LabWindows 2017 and Run-Time Engine 2017 through the Windows control panel, but it made me uninstall LabWindows 2015 SP1, NI-DAQ, and LabVIEW as well (because they were all dependent on the RTE).  Windows appeared to run the uninstall successfully, but the RTE folder and DLLs were somehow not removed or changed.  So when I rebuilt and re-ran my project, it still linked with the 2017 RTE and still crashed.  I had to manually copy the 2015 RTE files from another PC.

 

Even after this, there are still some other elements of the 2017 version left on the PC, such as the activation manager.

 

I would like to NI change this so that when the user uninstalls a new RTE, it automatically restores whatever previous version was active before the update without the hassle of having to uninstall and reinstall LabWindows, LabVIEW, etc.

Based on this discussion, Strip Chart controls don't support cursors.

I think it would be great if this support would be added.

The best option would be to have an advanced cursor like the "Graph Cursors Control" available for Graphs.

 

Other text editors such as UltraEdit have the capability to trim white space from the end of lines.  This would be a useful feature, as sometimes extra white space can end up at the end of lines, and is annoying when copy/pasting, etc.  I would expect to find it under Options->Editor Preferences, similar to the tab/space settings.

To export enum types with a dll there is a fine menu "Generate Function Tree...". Using the Help Buttom, one finds is a description on how to use it. It is mentiond not to nest the different comment type. "Avoid nested comments or combinations of comment styles ...... (backslashes, stars, etc.), what I understand. - Unluckily, if one uses comma "," or semicolon ";" within a comment, the tool fails with "I n v a l i d enum typedef.", what I consider is a bug. This makes the tool less valuable, especially if one resuses C source code from thirdparties.

At present, when you double-click on a .cws or .prj file the most recent version of the CVI IDE is launched with the selected .prj or .cws file loaded.

However, both project and workspace files include the release of CVI they are developed on, so it would be possible to search in the system whether that release is installed and open it instead of the most recent one. This is crucial when you need to modify a program already deployed to a customer but do not want / is not possible to update the target machine configuration installing a newer Run-Time module than the one already installed.

At present you have no control over this event, but consider also that in case you make modifications to the UIR files also, it may become difficult to revert to the original IDE format; for this reason when I need to update an old program I need firstly to open the project file in notepad to see which CVI release to use for this.

 

If automating the launch in the correct release is not possible, at least issue a warning stating the difference in the IDE release used with respect to the original one.

The most recent version of the C runtime that comes with the Phar Lap ETS is msvcr90 from 2008. That really restricts the usage of more recent third-party libraries on real-time targets shipping this operating system.

 

Support for msvcr{100,110,120,140}, even with stubs for most of their functions, would be greatly appreciated.

I'd like to suggest

 

  1. prefer the current active then all open sources to going through the project sources by order. Editing zzz.c while waiting for the parser to catch up is annoying
  2. cache the info on disk, preferably compressed (already suggested, I know)
  3. parse sources even if they are not part of the current project as much as possible. A cache could help here...

What do you think?

joystick support must be available and instrument drivers should be provided so that user can use latest 3rd party tools with labwindows

There are a lot of zoom and pan functions from the keyboard / mouse, but I could not find one that returns the graph to "normal" view.

Hi,

 

CVI already has a way to check for duplicate instances of an application through CheckForDuplicateAppInstance(..).  My suggestion would be to extend this functionality so that the duplicate application instance could send a message to the original application instance.  This is common for when the programmer wants to pass the command line arguments from the duplicate instance to the original instance (before exiting) so that the original instance can act on them.  Normally this is done through some inter-process communication protocol like DDE, but there's an opportunity to simplify this for the programmer.  Probably the easiest implementation would be an application-level callback that will be called when the duplicate instance is started, which would accept a pointer to some data that could be set by the second instance. 

 

Thanks!

An option to have Popups on top of the hole application, and not just on top of the current thread. It doesnt make sense

(in most cases) to have a Popup that is hidden behind the main Panel, independent if it was called by the main thread or another thread.

Please give us at least the option to change the behaviour, for all types of Pop-up Panels.

 

It would be nice to have another type of message popups, which do not block the program flow.

 

For example:

MessagePopup ("Do something");

Program continues.

Program checks if the user has done it.

RemovePopup

 

I know it can be done with custom panels and InstallPopup, but a simple MessagePopup would be a lot better.

 

 

 

 

 

Here goes something very simple for the source editor:

- a menu and/or shortcut key that when in a .c file will open the corresponding .h file (if it exists), and also the converse.

I have started to use the opacity attribute in CVI 2013 but was disapointed that this feature was not available for filled polygons.

Is there a techninical reason that filled polygons cannot have a transparency or would it be possible to add it in the future?

Add in an API structure for DOM (Domain Object Models).  DOMs are usually read in from XML documents and saved out as XML documents.  This allows a nice file data format, and a set of APIs with a handle to hold onto data.

 

Example Code:

 

DOM_createNew("handleName");

DOM_loadXmlDocument("handleName", "path\to\document.xml");

DOM_saveXmlDocument("handleName", "path\to\document.xml");

struct DOM_Element  topElement = DOM_getTopElements("handleName");

struct DOM_Element  elemList[] = DOM_getElements("handleName", element_ptr);

struct DOM_Attribute* attribList = DOM_getAttributes("handleName",  element_ptr);

 

and so on... with setters and getters, add routines, and possibly the ability to force the DOM to adhear to a ".xls"

 

and then start moving the files away for old school .ini files in the saved text files.