LabWindows/CVI Idea Exchange

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

Dear NI

I want to measure the time interval between the start signal and the stop signal.The time interval is about 2 to 3 minutes.Start signal and stop signal are collected from Ni usb-6509,There are 16 channels in total。I want to use Labwindows CVI for this purpose。What should i do?Should I use 16 threads for timing or 16 timers for timing?

The CVI Full Development System supports Microsoft's Software Development Kit.

I'd like to suggest to update this support to Windows 10 SDK.

It appears that cvi.exe can run into serious memory problems for larger projects due to a memory-hungry generation of source code browse information.

The solutions suggested (* don't generate browse information for larger projects or * don't use larger projects) are not too helpful. In my opinion, a much better solution would be to provide cvi.exe as a 64 bit application.

Because a crashing CVI is a serious limitation I hope this wish will make it soon.

Thanks...

Hello,

 

it was very nice to see clang updated to version 3.3 in CVI2015; I wish this support of current versions of clang will be continued in the future, so I am hoping that with CVI2017 we might get clang 3.9 or 4.0 because of the following issues:

- many many bug fixes in clang

- improved diagnostics

- support of C11

- full support of OpenMP 3.1 and beyond

 

Thanks!!

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.

In CVI 2013 the array display has changed (for the worse, in my opinion).

 

There are two minor inconveniences and one acute shortage I would like to see improved (hopefully prior to CVI2020 Smiley Wink)

 

First, the right click context menu: If I want to see values of a numerical array, it offers a 'Graphical Array View' but no 'Array View', so one first has to chose 'View Variable Value' and then 'Array Display' - maybe one could save one step and already provide the 'Array Display' in the first case...?

 

Second, the new Array View table still is very slow, not extremely slow as prior to SP1 but still very slow...

 

Most importantly, at present it is impossible to debug large arrays, large meaning arrays with more than 10000 elements. The current implementation requires to select a slice of data - but this makes it impossible to check or compare say array indices 5, 10005, and 20005...

Of course I agree that there is no need to simultaneously see more than 10000 data values - but why not have a table with say 100 rows that can be turned over, e.g.  displaying either elements 1-100, 101-200, ... this way one could access and inspect all array values...

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

                 

 

As discussed here: 

http://forums.ni.com/t5/LabWindows-CVI/how-to-make-visibal-and-disable-a-control-within-a-tab/td-p/1073548#

LuisG called out that the ProcessSystemEvents() may or may not clear all of the System events queue. Could this callback return a percentage scorecard or a Boolean reply on the status of events?

As discussed here earlier I am using tooltips that show 'dynamic' information, e.g. the permitted data range of the respective control, available user actions..., These frequently depend on several other controls and parameters.

 

Right now, all other affected controls etc. need to call a function to re-build the tooltip text, and to more than 90% this is wasted effort because the tooltip text is changed again before it may get displayed...

 

Thus I would like to suggest a 'dimmer callback', similar to the menu dimmer callback. This 'tooltip dimmer callback' should be called just before the tooltip is going to be displayed, allowing to build/update the tooltip text only when needed.

 

Thanks

CVI2013 does not seem to save debug information, instead it has to generate it every time a project is loaded. For large projects this can take some time...

Prior to CVI2013 we were used to a large *.cdb file with browse information which is now gone.

 

I suggest to save debug information (function list,...) to a file that is loaded on starting CVI so one can make use of this information 'immediately'.

 

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)

The exit() function will make the application always return 0, no matter what value is passed to the function.  Per the documentation:

Note Due to the way that this function is implemented, the exit status value entered into this parameter is ignored.

 

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

Comparison between floating point numbers is best done using FP_Compare() - see CVI help for details.

Often you need to choose the maximum (or the minimum) of the two floating point numbers, and the most common approach is:

if (a > b) {

choose a

} else {

choose b

}

If you use FP_Compare instead of ">" you'll notice that FP_Compare is much slower than ">" (because it involves calculation of the ratio between the two numbers). This is extremely evident if you have to choose the maximum of several couples of numbers.

I think that the maximum (or the minimum) between two floating point numbers could be found in a more effective way, comparing the exponents of IEEE representation (for example), and calculate the ratio only if the exponents are equal.

For this reason I suggest two new functions FP_Max() and FP_Min() that would much more performant than the easy approach.

Hi,

 

I think it would be a nice tool to save a panel which is generated dynamically from a source code. If I have a database with many variables which I want to set on a panel as controls, I could write an import of this database, generate a panel automatically and could save this panel as UIR file. After this I could use this automatically generated UIR file in a project.

 

Greets

 

Thomas

Using SetTableCellRangeVals to update several thousands table cells is very effective.(better than using ATTR_CTRL_VAL)

I miss similar function for set atribute values in the same way. In example:i need  to set text to be bold or  set background color for each table cell separately.

Ithik that usability of SetTableCellRangeVals will be better if SetTableCellRangeAttributes will be avivaible because there will be the same program approach/logic for values and attributes,instead of mixing multiple cell vallue update and one by one cell attribute update.

 

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

 

It would be convienent at times to have a way to know if timer callbacks had been suspended by another part of the program by 

SuspendTimerCallbacks(), or if timers are running again from ResumeTimerCallbacks().  As far as I can tell there is currently no way to know this in CVI without manually keeping track of the last suspend/resume function called.  Thanks.

Hello,

 

the Advanced Analysis Library provides some convenient functions for array operations; unfortunately some of them are available only for the 1D case and not for twodimensional arrays. While it is no big deal to add a loop I suppose that these AAL functions are speed-optimized, something that cannot be achieved when using the native CVI compiler.

 

Hence I'd like to suggest the addition of functions Clear2D, Set2D, Copy2D

Hello,

 

because I had installed CVI2010 on a brand new Windows 7 machine, I was curios to find out about all the service processes running on the system.

It seems that there are quite a few NI services that start after log-on. Some of  them seem superfluous, such as the Lookout Citadel service (no LabVIEW, no Lookout installed), but due to the lack of any information I did not bother trying to stop them

 

Suggestions:

1) NI should critically review the services and only start the services that are absolutely needed.

2) Services that are optional might be selected by a checkbox during installation or from the Options / Environment setting

3) NI should provide some documentation / explanation of each service and why it is needed.

 

Thanks!