LabWindows/CVI Idea Exchange

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

The integration of some SCC software is officially supported in CVI (see this KB).

Unfortunately GIT is not officially supported, but its popularity has been increasing very much.

LabVIEW has a specific User Group in the community (Git User Group) and I think CVI should support the same integration

 

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 add this new idea based on the info on this thread.

I know that this idea is almost the same, but the basic reason is quite different.

 

I think that C++ offers much more flexibility for the development and it is a much more powerful approach for the future.

Now CVI uses CLANG/LLVM compiler, that is a C/C++ compiler.

But, as written by Luis from NI

Supporting C++ entails far more than just the compiler. For example: the standard C++ library (including templates, etc...), the APIs of all the standard CVI libraries, the source editor (auto-indentation, coloring, etc...), code-generation from the various wizards, memory runtime checking, debugging, etc... so, even though the compiler does support it, for all of CVI to support C++ is still an extremely large undertaking that has to be weighed against other, competing work that's going into CVI.

 

 

Since now CVI relies on CLANG, it would be great to have a tool for static code analysis.

Some software are available for C code (see here), but I think CVI can use Clang Static Analyzer (if it is good enough - I've never tried it).

For some specific projects it's required that the code is compliant to MISRA C guidelines (see here)

A feature to check the compliance of the C code with MISRA C guidelines would be useful.

The best option would be to have the possibility to select a subset of the rules or to disable some of them.

Before CVI2012 a conditional breakpoint could be toggled between enabled and disabled with a single mouse click. The behaviour changed in that version so that a mouse click now deletes the breakpoint.

I understand that this is more consistent with the behaviour of an unconditional breakpoint, which is set and deleted with the mouse click; I understand also that Ctrl+F9 shortcut key has been introduced to toggle breakpoint state, but in my opinion this new arrangement is less user friendly than before.

 

The risk is that once you set a conditional breakpoint, possibily with a complicated condition and/or pass count set to match some particular operating condition, you can delete it with a single click while you would maybe simply disabling it.

 

The same applies if you press F9, so I suggest additionally that when F9 key is applied to a conditional breakpoint it disables the breakpoint instead of deleting it.

 

This suggestion comes from this discussion: basically, it seems strange to me that I may have a disabled quit button and the close control (the red cross in the upper right corner of the panel) which is active at the same time.

It seems to me that the close control should honour the state of an existing quit button declared in Close control panel attribute. At present the only solution is to test the state of the button within the button callback itself.

 

If this idea is not accepted, at least a note should be added to the documentation, e.g. in ATTR_CLOSE_CTRL help page, specifying that the callback is fired regardless the state of the control.

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?

As can be seen here, "Save changes" items in Environment options are global to the CVI IDE.

 

I suggest these options are made project-specific instead. The rationale behind this suggestion is simple: suppose I am developing project A and I enable autosave modifications before compiling and running the project; at the same time I may need to look at the code for project B already deployed to customers, and I want to prevent modifications to the code without notice. At present, while I am testing the application A I set these options to "Always"; if next I come and see the code for project B, I may accidentally make (and save!) modifications that change the code of the deployed app without notice Smiley Sad

If these options were per-project I would be granted I am not making mistakes.Smiley Happy

Several CVI functions exist that permit to add / install functions in the code. At present, we need to manually create the function prototype, and the fastest way I found is this one: open the function panel for e.g. InstallPanelCallback function, select Event Function parameter, right-click the field or press F1 to show the help, select the function prototype dragging with the mouse, Ctrl-C to copy it, close the function panel and paste the prototype in the code.

 

It would be *very* handy if a way existed to speed up the process: a "Generate Prototype" item could be added to Code menu that takes the function name set by the user in Event Fuction field and generates the appropriate function prototype in the source code.

 

There is a huge set of functions that could benefit with this addition, following is an initial list but I am sure I'm missing some more functions:

 

In the User Interface Library:

  • All Install*Callback
  • PostDeferredCall
  • PostDeferredCallToThread
  • RegisterWinMsgCallback

In the Utility Library:

  • CmtScheduleThreadPoolFunction
  • CmtScheduleThreadPoolFunctionAdv
  • CmtInstallThreadPoolCallback
  • CmtInstallTSQCallback

In RS232 Library:

  • InstallComCallback

In VISA library:

  • viInstallHandler

In DAQMx Library:

  • DAQmxRegister*Event functions

In TCP Library:

  • All Register* functions

In Network Variable Library:

  • All CNVCreate* function

In the ActiveX Library:

  • CA_RegisterEventCallback

In the Asynchronous Timer instrument driver:

  • NewAsyncTimer
  • NewAsyncTimerWithPriority

In the Programmer's Toobox:

  • InstallWinMsgCallback
  • PostDelayedCall
  • PostDeferredCallToThreadAndWait
  • ChainCtrlcallback

And don't forget all sorting functions that require a comparison function to operate:

  • qsort
  • SortTreeItems
  • SortTableCells
  • HeapSort
  • List*Sort fuctions for lists

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!

sometimes i use the table object in CVI but there is one function that is missing and i think it's really usefull, the one that give you the ring index directly.

 

now i'm doing it in this way, maybe there is a better way to do it but i've not spent too much time to do it.

 

/// HIFN This function give you the item ring index.
/// HIRET an integer value containing the function result.
/// HIPAR panel/panel handle where the control is located.
/// HIPAR control/which control i have to analyze.
/// HIPAR column/in what column i have to look.
/// HIPAR row/in what row i have to look.
static int GetTableIndex(int panel, int control, int column, int row)
{
	int Result = {0};
	long IndexLength = {0};
	char *IndexTemp = {0};
	
	GetTableCellValLength(panel, control, MakePoint (column, row), &IndexLength);
	IndexTemp = calloc(IndexLength + 1, sizeof(char));
	GetTableCellAttribute (panel, control, MakePoint (column, row), ATTR_CTRL_VAL, IndexTemp);
	GetTableCellRingIndexFromValue (panel, control, 0, MakePoint (column, row), &Result, IndexTemp);
	free(IndexTemp);
	IndexTemp = 0;
	return Result;
}

Add an attribute for LabWindows/CVI panels for setting transparency.

 

Currently, in order to achieve this behaviour users are forced to workaround this using Windows API.

Having an attribute for this purpose would allow users to benefit from this functionality more easily and would make LabWindows/CVI programs more cleaner.

 

Related forum discussion: http://forums.ni.com/t5/LabWindows-CVI/Transparent-Main-Panel/m-p/3172386

Most user settings are kept in either the project or the workspace file. Unfortunately, this is not true for building a function tree (Options/Generate Function Tree). Starting CVI the previous entries are lost. Actually this is an old issue but may be not too old to be improved... Smiley Wink

 

So I suggest to save the information about Instrument name, Function prefix, Default qualifier, and Output function tree in the appropriate configuration file (prj or cws)

 

Thanks Smiley Wink

When building a project consisting of many files it would be much more convenient if the Build Output would jump to the line with the first file showing an error (or, if no error occurred, to the first warning).

 

Right now, if there is a build error I have to scroll through the (possibly long) list of files to see which file produced the error; only then I can click on the error message to have the IDE highlight the problematic line.

 

Thanks

Hello,

 

building upon my earlier (but difficult to implement) suggestion and the forum discussion on event data here I can provide a hopefully improved suggestion.

 

The issues addressed by this idea:

  • receiving an EVENT_DATA_CHANGED event for a numeric control does not mean that the numeric value has changed
  • receiving an EVENT_DATA_CHANGED event for a numeric control does not provide information if the value has been increased or decreased
  • receiving an EVENT_DATA_CHANGED event for a numeric control does not provide information if the 'up' or 'down' arrow button has been pressed (which is not necessarily the same as the second issue)

Idea: Provide eventData1 and eventData2 information.

 

For example, eventData1 could tell about the numeric value:

  • eventData1 = -1: numeric value has been decreased
  • eventData1 = 0: numeric value is unchanged
  • eventData1 = 1: numeric value has been increased

eventData2 could tell about the increment/decrement arrow, e.g.:

  • eventData2 = -1: decrement arrow has been pressed by mouse
  • eventData2 = -2: decrement arrow has been pressed on keyboard
  • eventData2= 1: increment arrow has been pressed by mouse
  • eventData2= 2: increment arrow has been pressed on keyboard

Since so far no eventdata are provided this suggestion should not break backward compatibility.

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.

 

I used to be able to change strip chart colors "on the fly".

This facility was available pre Version 8.5 - see http://forums.ni.com/t5/LabWindows-CVI/Changing-color-in-a-Strip-Chart/m-p/2292246/highlight/true#M60735

This would allow me to change the color for future points and NOT affect what was already plotted. This is the way that ATTR_TRACE_COLOR used to work.

As the above discussion thread says, this feature was a bug, but a very useful one at that!

Could we have a control that worked in this way ATTR_TRACE_POINT_COLOR which would only work for points plotted from thereon, the strip chart still scrolling as it does at present.

I believe that this could be done if I used a graph control, but that would involve explicity redrawing the graph for every plot point to achieve a scrolling display.