LabWindows/CVI Idea Exchange

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

Network Variables currently provide support for OPC DA. However, the industry has been moving from OPC DA to OPC UA (Unified Architecture). The reasons for this are many, but mainly based on security and ease of use. Surveys over the last couple of years show that there are now more devices and applications being produced with OPC UA support than DA support. I have enquired whether NI are planning to support UA technology, but it seems that this is not in the pipe line.

 

There are solutions available (open62541, for example) that may provide a solution. Does anyone have any experience with using this solution with CVI?

 

I am looki

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.

+ Implement Modbus RTU master/TCP client protocol support in CVI

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

Using CVI 2010 you can create different Custom Configurations

But I think that if a developer creates a new Custom Configuration (debug or release, x86 or x64), he wants to distribute it to a target machine. I don't create a Custom Configuration to have it run on my developer machine!

I've already asked to NI Support, and this can't be done in an automatic way.

 

So I suggest a new feature in the "Edit Installer" window to specify which Configuration (Default or Custom) to include into the installer (see attachments)

Download All

In the process of developing a function one typically has to change the number (and type) of parameters. This has to be done both for the function and the function declaration. Hence I would consider it useful to have an option 'Goto Declaration'.

 

Right now the IDE provides the right click menu 'Goto Definition', so if I change the declaration it is easy to jump to the function and adjust it accordingly. It would be nice if the reverse process would also be possible...

 

Thanks.

Hello,

 

There are several quests for better graph and UI controls, and I support them all Smiley Wink

 

Now, I was very impressed looking at the new WPF Graphic controls of Measurement Studio 2012 and would like to have similar features in C (i.e.CVI), too.

 

So in addition of having classic controls and lab style controls may by one could also add this new scheme of controls...??? The graph control in particular looks very promising, with color gradients and polar plots, both frequently requested features, here realized in a new style. Wanna have...

 

For a fist impression, see here 

 

Thanks!

Hello,

watch expressions support the possibility to monitor changes of variables by placing the variable in the watch window. Unfortunately, at present it seems impossible to put a 2 D variable in the watch window, e.g., x_data [  2  ] [  3  ].

The new idea is to allow this Smiley Happy

Thanks!

It was a nice surprise when CVI provided clang as an external optimizing compiler. In the meantime, however, the initial clang version 1.0 has been significantly improved and now is at version 3.0 - but not for CVI users...

 

I would suggest that NI provides a current Windows binary of the compiler for everyone with a legal copy of CVI2010 or later. As the release cycles of CVI are quite long it would be convenient to obtain, on a biannual interval, interim updates of clang.

 

 

Spoiler

On a side note, this also would provide some motivation to keep/renew the SSP. Right now I consider it disappointing if the equivalent of several hundred Euros is a patch of CVI only. Other major companies such as Autodesk or Microsoft provide patches free of charge...

 

A useful CVI GUI tool would be the addition of sideways tree-style tab control.  I am surprised to see no mention of it in the forums.  Is there already some solution for it, or perhaps some Active-X that can do it?    Nevertheless, it would greatly modernize the GUI arsenal.

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?

Hello,

 

sometimes I use the built-in PromptPopup function, in order to get the user input. It is very comfortable having this feature, but I'd appreciate it more, if I could initialize the "Response Buffer" passing a not void string.

This means that if the string passed to Response Buffer is void, the function works exactly as today. Otherwise, if the string contains some value, the input field of the popup window will be initialized with that value.

 

Kind regards,

Sergio

Adding to the many pending feature suggestions for tooltips (here, herehere, here and here) I'd like to suggest one more: please make tooltips more beautiful, i.e., drawn with rounded rectangles and with a shadow, see below.

 

tt.png

Hello,

 

building on this suggestion I'd like to see a more comfortable panel of the UI editor for editing label/value pairs, see below:

 

LABEL.png

 

Suggested changes:

 

  1. Add the possibility to dim / hide the selected entry
  2. Add the possibility to insert separators in the GUI editor, not only programmatically
     
    Thanks!

 

When compiling projects with several files the build output window sometimes is flooded with warning and error messages. Typically I focus on one file at a time and then have to scroll through this long list searching for the file of interest. In such a situation I would consider it useful having an additional menu entry in the right click menu (shown below) such as 'Collapse All', reducing the many lines in the build output window to one line per file, greatly simplifying the search for a specific file.build.png

 

Thanks!

Starting CVI the IDE uses cpu resources even if sleeping, i.e. doing nothing except waiting for user input. It seems that the IDE is also using the scheme of SetSleepPolicy...

 

Today most other software does better and I would like to see an improved behavior: use cpu (and thus energy...) only if something actually needs to be done

As of CVI2013 data tooltips and variable view do some kind of automatic rounding but based on 15 digits only... This prevents tracking numeric / rounding issues. Unfortunately, no possibility exists to show the full precision of doubles... Phrased more drastically one you cannot use CVI to debug numeric issues...

 

So I suggest to urgently add

 

 

  • as a minimum version the possibility to show true numbers, not rounded numbers, allowing true debugging
  • as a more general version the possibility to adjust the precision of displayed numeric values

                 

 

From the CVI Help:

 

Some Interface to Win32 Application Programmatic Interface (API) functions have the same name as some LabWindows/CVI functions, causing a naming conflict. You must include the Interface to Win32 API include files before the LabWindows/CVI include files. LabWindows/CVI automatically resolves the conflict by using the LabWindows/CVI implementation of the function. To use the Win32 API implementation of the function instead, define the SDK_CONFLICT_PRIORITY macro in the Compiler Defines section of the Build Options dialog box.

If you enable the SDK_CONFLICT_PRIORITY macro, you cannot use the following LabWindows/CVI functions and should use the Win32 API implementation instead.

Formatting and I/O Library

  • CloseFile
  • OpenFile
  • ReadFile
  • SetCommitMode
  • WriteFile

Utility Library

  • Beep
  • CopyFile
  • DeleteFile
  • GetFileSize
  • GetFileTime
  • GetSystemTime
  • SetFileTime
  • SetSystemTime
  • inp
  • inpd
  • inpw
  • outp
  • outpd
  • outpw

 

Based on my experience these name conflicts have no advantages, and create a lot of problems: usually I use the CVI implementation, but it happens that after some time I need the Win32 API implementation of one of these functions (GetSystemTime(), for example).

In this situation I must heavily modify my code, changing the calls to all the above functions.

 

I don't like these naming conflicts at all.

I suggest that a "_CVI" prefix (or something like that) is added to the CVI implementation: an old project will recompile perfectly simply adding this prefix to the calls, without modifications to variables, structures, ...

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

I'm strongly interested in getting back a feature that has already been removed with CVI2013. Until last week, I had good old CVI9.0.1 installed on my PC which was perfect for maintaining my biggest project, a SW tool that has more than 50DLLs around a single executable for controlling lots of devices using a script interpreter for fully flexible process flows.

Some of these DLLs even have cross-references. When modifying a header file that is not only included in the current project but also in other projects of the workspace, I used to see red flagged files in the affected projects to tell me the need of these to be recompiled.

This was really, really helpful to keep the overview!

Unfortunately this feature I don't see anymore in CVI2019 which leads to the fact that I have to either create/maintain a separate list for all external references or the necessity of walking through all projects in my workspace and compile them without knowing the necessity.

Both variants are very uncomfortable and an enormous waste of time in my daily work.

 

I know that this subject has already been refused some time ago, but I really want to encourage you rethinking this "not only nice to have".

I hope you understand my situation.

 

Thanx for supporting. CVI is great and I'm using it since more than 17years!

 

Regards

Manfred