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
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Coupled with the Source Code Browser, there should be a 'Refactor' option to rename an identifier to something else. And only that one, not the homonyms from other contexts, which is something impossible to achieve with a search and replace.

If a panel is made part of a tab (InsertPanelAsTabPage) or if a panel handle is obtained from a tab (GetPanelHandleFromTabPage), there are some restrictions as to how you can use that panel. Some of those restrictions could be lifted if the panel knew which tab it belonged to.

 

I suggest the addition of the following (or similar) attributes:

GetPanelAttribute(Panel, ATTR_PANEL_PARENT_TAB_CTRL, &TabCtrl);

GetPanelAttribute(Panel, ATTR_PANEL_PARENT_TAB_INDEX, &TabIndex);

And of course you can already get the parent panel with:

GetPanelAttribute(Panel, ATTR_PANEL_PARENT, &ParentTab);

 

So, now that a panel knows the tab it belongs to, some obvious associations can be handled by the UIR library:

  • Calling DiscardPanel should, internally, call DeleteTabPage instead of the current undefined and illogical behavior
  • SetActivePanel should do a SetActiveTabPage instead of the current buggy behavior
  • SetPanelAttribute(.., ATTR_DIMMED) should do a SetTabPageAttribute(..., ATTR_DIMMED)
  • - etc...

This would allow the user to select at runtime if he wants a Multiple Panels application (MDI) or a Single Panel/Multiple Tab application (tabbed SDI) and almost no changes are necessary to the code.

Summary:

Implement CVI Service API for creating and managing Windows Services (and Unix daemons).

 

Description:

Add specialized CVI functions that users can use for creating, installing and managing the entire life-cycle of long-running user services.

Users can thus have a more uniform interface to the system service API and benefit from a higher level of abstraction across multiple platforms (Windows vs. Unix). These services can contain user code for various tasks, that are running in the background.

With the batch built dialog, it is possible to select "all releases" and/or "all debugs". This button causes, that all 32-bit AND 64-bit releases and/or debugs are selected (marked). It would be helpful, if the selection buttons would be splitted in "select all 32-bit releases", "select all 64-bit releases", "select all 32-bit debugs" and "select all 64-bit debugs". When I develop e.g. 32-bit Software, I don't need the 64-bit versions.

 

It would be also helpful, if it is possible to select the sequence of the batch built. For example: project 1 depends on project 4, but project 4 is currently compiled after project 1 etc.

Hello,

 

I miss an event that is fired whenever an axis, set to autoscale, changes its minimum/maximum values.

 

Imagine the following scenario: On a xy graph, I have several plots and also some 'regions of interest' that are visualized either by lines or rectangles. Now, if a new plot is added that results in a different axis scale, I also need to redraw my regions of interest. At present, this requires bookkeeping of xmin, xmax, ymin, ymax and comparing the current axes ranges with the previous ones. It appears to be simpler if one could rely on a suitable event that is fired whenever the axis range is changed.

 

Thanks Smiley Wink

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.

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.

The  shortcut "Ctrl+Space" is for changing the input method in the some system.

  

Even we can change the shutcut, this function is so often to use.

 

The ideal is to make it like the way in some common source editor: when typing from any space position, the completion shows automatically.

 

This could be an option, to toggle on or off in  Edit>> Auto Completion menu item .

While it is possible to programmatically add a menubar to a tab page with LoadMenuBar, it is not possible to do that in the UIR editor.

 

Sometimes I use a tab control to display different scenarios to the user hiding tabs so that he's not aware of the pages not shown: this permits to have a single panel with all elements properly placed and designed on the different pages and programmatically choose which page to display depending on operating conditions or other characteristics. In such a case the tab page behaves like a "normal" panel, but while you can have a standard child panel with its own menubar, you cannot add one to a tab page other than programmatically.

 

It would be a handy to be able to add a menubar to tab pages too in the editor.

Please make the UIR editor WYSIWG again.

It's difficult to size and position controls if they get a (slightly) different size when the program is run because they use an other font than the editor.

See example here.

 

If you can't, at least make the editor use the same replacement as the runtime.

Hi,

 

in many of my applications, I have to verifiy some conditions recursively and they can generate an error, for example when checking the presence of a file (see below).

RecursiveWarning.JPG

Imagine to have a task doing this control and imagine the task is scheduled every 5 seconds or less.

This means you'll get the popup window continuosly and it makes almost impossible to debug your code.

I know I can reduce the Debugging level from Extended or Standard to No RunTime Checking in order to block that popup window, but sometime I need a deeper level of debug to fix my problems.

What do you think about adding a third button to ignore, for the current debugging session only, the run time errors generated from the same instruction in the same thread?

More, what do you think about adding a fourth button to ignore, for the current debugging session only, the run time errors of the same type?

 

Regards

Sergio

First of all : I LOVE the Format File and Format Selection and many thanks for the existing options in the dialog box (pointer for example)

 

Here is what I propose :

 

1 - "Function calls on single line" check box in the Miscellenaous section of the dialog box so that :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData,
                         int eventData1, int eventData2)
{
    int val;
    
    if (event == EVENT_COMMIT)
        {
        GetCtrlVal (panel, control, &val);
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS,
                          VAL_RIGHT_YAXIS);   
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
        SetActiveCtrl (panel, PANEL_GRAPH);
        }
    return 0;
}

 The code above comes from ..\CVI2013\samples\userint\2yaxis.prj

 

Is transformed in :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    int val;
    
    if (event == EVENT_COMMIT)
        {
        GetCtrlVal (panel, control, &val);
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);   
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
        SetActiveCtrl (panel, PANEL_GRAPH);
        }
    return 0;
}

 

Please note this apply not only to the SetCtrlAttribute() function call but also to the ScaleIt() function itself (very first line)
A long time ago it was OK to restrict ourselves to 80 chars per line but today I feel more confortable with statements on one line

 

2 - "Insert empty line before first statement in function definition" check box in the Miscellenaous section of the dialog box
Especially usefull when you use the Java Formating Option where the '{' is at the end of the line


With the previous sample code :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    int val;
    
    if (event == EVENT_COMMIT)
        {
        GetCtrlVal (panel, control, &val);
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);   
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
        SetActiveCtrl (panel, PANEL_GRAPH);
        }
    return 0;
}

 

The formated source (Java) should be :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) {
  
  int val;

  if (event == EVENT_COMMIT) {
    GetCtrlVal (panel, control, &val);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
    SetActiveCtrl (panel, PANEL_GRAPH);
  }
  return 0;
}

 

Instead of : 

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) {
  int val;

  if (event == EVENT_COMMIT) {
    GetCtrlVal (panel, control, &val);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
    SetActiveCtrl (panel, PANEL_GRAPH);
  }
  return 0;
}

 

Pay attention to the "int val;" declaration with one spacing line in the first code and no spacing line in the second one.

 

Best regards, Philippe

 

We use the our development and target installation PC's to support both new and legacy projects that were developed under earlier versions of IVI Compliance.  As the only current way to change IVI versions is to uninstall and re-install, we are stuck using the earliest one as a common denominator.   With hundreds of old projects to re-compile, frequent across-the-board updates are not possible.  Newer versions of instrument drivers such as HSDIO are only compatible with later versions of IVI. 

 

I would like to have a reasonably easy way to switch IVI versions, so we can support both old and new code from our development PCs.  Even a batch file and some registry edit instructions would be better than the way it is now.  However, that would limit its use in a secure environment where the users don't have general admin privileges.

 

From an NI business perspective, this may be blocking customers from purchasing upgrades or new NI products.

Hello,

 

I see no easy way to plot data in a scatter plot including their error bars...

 

Hence I suggest adding plot types such as

 

  • VAL_SCATTER_ERROR_BAR
  • VAL_SCATTER_HORIZONTAL_ERROR_BAR
  • VAL_SCATTER_BIDIRECTIONAL_ERROR_BAR
  • VAL_SCATTER_ASYMMETRIC_ERROR_BAR
  • VAL_SCATTER_ASYMMETRIC_HORIZONTAL_ERROR_BAR
  • VAL_SCATTER_ASYMMETRIC_BIDIRECTIONAL_ERROR_BAR

If this desire gets accomplished, it would also make sense to add some related attributes, specifying the size, type, and color of the error bar.

 

 

Currently, CVI sorts all the entries from the Source Code Browser alphabetically. While this is useful for finding items, it is less practical when tracking items.

 

If we have, for instance

void foo()
{
    int a = 0, c = 0;
}

// 1000 lines of code

void bar()
{
    int b = 0;
}

In the source code browser, under Variables, we will have:

a (line 3)
b (line 1000+)
c (line 3)

 

I believe that having an option to sort the items either alphabetically or by occurence would give users a better view of their code.

Browse any <file>.c, by right-click on a file in project view file list.

In Window "Source Code Browser/View" Browse Identifier:
Allow to copy entries in column 'Functions' and other columns, if useful.

 

Reason:
This would help to create a content list in <file>.c or any other documentation.

Copy full columns or line by line might be useful.

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

Why does the numeric lab style have ATTR_FRAME_COLOR but not string, list box and text box?

It always seemed inconsistent to me.


Hello,

The idea is to automatically add the Auto-Complete function. that is, when you type the beginning of a function, the development interface  provides a set of functions. This option is present in most development software and facilitates the development too.

Thanks

I made this suggestion some time ago - but had it combined with another idea. Part of the suggestion was implemented so I am trying to revive the remainder here... Smiley Wink

 

For me it would be useful to have at least two different line types for the separator in ring controls, i.e. not only a solid line, but also a dashed (and possibly a dotted) line: This would help to group different entries into groups (solid line) and subgroups (dashed line). The idea would be to provide some more escape codes resulting in the different line styles.

 

Thanks.