LabWindows/CVI Idea Exchange

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

Hello,

 

a long standing issue with the function GetGlobalMouseState is that it does not detect the <alt> key modifier (contrary to the documentation).

 

I'd like to suggest adding the capabilities to detect the key modifiers

 

  • <alt>
  • <shift> + <alt>
  • <ctrl> + <alt>

Of course this can be done with the Win32 function GetKeyboardState, and this is how I do it right now, but this means that I have to include <windows.h>.

 

Thanks!

Add an ATTR_COLUMN_PROPORTION (tree or table control) column attribute to set the width of a column in percent.

A second attribute could be added, to maintain column width proportions, in case the user is resizing the columns.

When writing a large amount of functions for CVI, I use the View>> Collapse All / Expand All options quit a lot.  It would be incredibly useful to have a keyboard shortcut to do this. 

 

That's all, but I can't stress how much I use these menu items and how incredibly helpful it would be to have a shortcut.  All of my coworkers agree.  Thanks.

Include a function to programmatically re-start the NI Variable Engine if it is found to be stopped.

Although the NV libraries include a function to detect whether the NI Varible Engine service is running, there is no function included in the library to facilitate re-starting the NI Variable Engine service. 

For those The method that I am aware of to restart this service is to use the ANSI C system() function with an embedded command line:

 

 

Index = 0;                                           

CNVVariableEngineIsRunning(&running);

while((!running) && (index++ < 5))

{

System(“net start \"NI Variable Engine\"");

                Delay(0.1);

                CNVVariableEngineIsRunning(&running);

}

if(!running) return -1;

 

Learning this required some time spent on the web, looking through old posts on how to solve the same problem in LabView.  Rather than spending that time, it would have been more productive to just pull it out of the library.

I discovered through trial and error that the CNVCreateBufferedWriter function, while it does provide buffering when necessary to preserve data until it can be written within a process, it does not provide for arbitration between writes originating from multiple processes.  Stated another way:  As far as I am aware, a single Network Variable process is not designed be written to by more than one application.

   

The documentation was not clear on this point.  It states “You can buffer data to be written to the network variable by calling CNVPutDataInBuffer. The system automatically writes the buffered data to the network variable.”  This suggested to me that arbitration of some kind existed to handle asynchronous writes by multiple applications.  I confess, my interpretation may have been driven by wishful thinking to support my application needs.

 

Nevertheless, my suggestion is that future versions of this library include a capability to arbitrate asynchronous writes from multiple applications to a single network variable.  i.e., that two, or three, or more applications can successfully connect to and write to the same network variable.

Hello everybody,

I tried to use a source code / version control for projects in which I  use LabWindows and Visual Studio.

One possible solution would be to implement support for the team foundation server, which already has be added to LabView.

Another would to provide an independent solution.

 

Best regards,

It would be helpful if the distribution kit had three additional options;

 

  1. Compress all of the files and subfolders into a single *.zip file.
  2. An option to convert the *.zip to a self extracting archive (SEA) file *.exe.
  3. An option to automatically run "Setup.exe" after completing the file extraction from the SEA.

Option 3 is only available if option 2 is selected and option 2 is only available if option 1 is selected.

 

The above can be done with external tools and is helpful when distributing via a web-download, Dropbox or another internet based system. Installation for the end user is then simply a case of clicking a single link and running a single file. After that they are prompted by the usual installation dialog.

Hi 

might be a useful idea to add a checkbox to some controls such as leds, text and numeric value which utilize a blinking feature.

I'd like the following options being added to FileBrowser tollslib control:

 

  • Ability to hide / tailor popup menu for the right portion of the FileBrowser (file list): at present, even if I disable the popup menu on the tree control (regardless it is made before or after converting the tree into a FileBrowser) the rightmost part of the control has its own popup menu enabled
  • In case the menu is shown, it would be a good thing to be able to add / change / hide items in that menu
  • Ability to programmatically set the width of columns in the file list section of the FileBrowser
  • Ability to programmatically set the label of columns both sections of the FileBrowser: this is particularly necessary in case you need to localize the user interface in a language other than English, as FileBrowser cannot be treated by the Localization Utility since it is created at runtime

I'd like to see better documentation online.

 

Currently, documentation seems to be spread over different areas: online, in sample code included with the development environment, in a downloadable help file, etc. What online documentation there is is incomplete - for instance, if I'm looking at the function reFFT (just an example, I know it's obsolete), the online help gives me the parameters and what they are but they don't tell me acceptable values, e.g. what is the largest/smallest value I can use for numberOfElements: 1 - 9e99999Another case was with the NIscope driver NISCOPE_ATTR_INPUT_CLOCK_SOURCE. When I looked at the documentation (downloaded zip file filled with CHM files) there was a list of defined values but no desciption of what they were or were not for. Example: NISCOPE_VAL_NO_SOURCE ("VAL_NO_SOURCE")...I *assume* NO SOURCE is equivalent to Intenal but should I really have to guess when looking at documentation? For that matter, why does this information only appear to be available via downloadable file? 

 

In another case with NISCOPE I found that the niScope_ConfigureHorizontalTiming expects a certain clock frequency (10 MHz) if you're using an external clock, but if you are using a clock frequency at exactly what you're asking for you have to set the attributes directly. I messed with this for a while before calling the help desk. The person at the other end was able to tell me how to fix my problem but he could not find documentation online (accessable by me) where this information could be located. It seems to me that the number of help calls could be drastically reduced if sufficient help were available online. Finding information on error codes is similarly lacking.

 

I also have a problem with referencing "installed" sample code in lieu of a online programmer's manual. I don't always run on my development machine. So I'm on my target system (that does not have the development environment installed) and I want to look something up...it's very frustrating to find all help on a particular subject referring to my development machine. 

Hello,

 

This suggestion is about an improved handling of tab panels. Let's assume there are several tab panels, but only 3-4 tabs fit in a row. Selecting 'Single Row Scroll' will show say 3.5 tab panels and the row selector. Now I'd like to access say tab panel 5: Right now this requires clicking on the row selector to show the desired tab AND then click on this tab to show the tab panel. It would be more convenient if clicking the row selector would automatically show the next tab, too.

 

Let me give an example: The desired tab is not shown in the scroll list below, so one has to click on the right arrow...

 

step1.png

 

... until the tab shows up:

 

step2.png

 

But still the first tab panel is displayed, so another mouse click is required:

 

step3.png

 

It is not just that one more mouse click is needed, but the mouse needs to moved, too, to click on the respective tab... It would be much more convenient to simply click a few times at the same position...

As labview has them for ever, can you add them to CVI helping reduce the UIR handling and programming a bit?

Hello,

 

even today source code needs to be printed (to paper, to PDF...). So for a given font and font size there is a maximum number of characters per line that can be printed without forcing a line break.

Accordingly, I have arranged my source code that none of the lines exceeds this limit. I would consider it convenient to have a faint grey vertical line indicating this limit. So I suggest adding a 'ruler' with user settable vertical guides.

 

Thanks for consideration.

Please consider the possibility to enable the use of CVI application as web server so that the application will accessible to the web.

Its open one new world (wide  web..).

 

Consider the opportunity to ope to all smartphone device....

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.

In this thread it has been discussed how PlotScaledIntensity() handles NAN values.

In CVI 2010 SP1 NAN values are plotted with the center-scale color (and this is a bug).

Unfortunately the fix is not easy, and there could be different ideas on how NAN values should be handled.

 

I suggest not to plot NAN values, or to plot them transparent so that the plot area size is visible under NAN pixels.

When you use NAN values in PlotY(), for example, this points are not plotted.

There is no way in the current Serial Com functions to determine where a BREAK or FRAMING (or other) error occurred in the input steam (see Reference#7355407).  Add a new "ComRdStatus" to log the UART Status for each and every character individually.

Your "driver" code would be:

     When CHR received in UART

          Get STATUS from UART and put in ComRdStatus buffer     // New array of Status bytes for each character

          Get CHR from UART and put in ComRD buffer                   // Same as it is now

          Increment count returned by GetInQLen                            // Same as it is now

Then user S/W can be:

     While (GetInQLen(port) > 0)    // characers and their status's in queue

          ComRd (port, &chr, 1)                // read character

          ComRdStatus (port, &status, 1)     // read character's status

          if (status != 0)    // check if any status bits set

               if (status & BREAK_BIT)     // Check if this character is a BREAK

                    // Process BREAK condition at the point it happened

               if (status & FRAMING_BIT) // Check if this character had a Framing error

                    // Process Framing Error at the point it happened

               if (status & OVERRUN_BIT) // Check if this character had a Framing error

                    // Process Framing Error at the point it happened
               // ETC to handle all errors at the point in the stream they happened

          else // no status bits set so this Char is "normal"

               j// Process "normal" chr

 

This would let the user know EXACTLY where the BREAK (or Framing or Overrun or ...) condition occured in the queue.

 

Right now, if you have 15 characters in the queue and GetComStat says there is one or more "status" bits you have *NO IDEA* whcih character(S) had the status issue.

     E.G. if there is 15 chars in the queue and 5 are 0x00 and BREAK_BIT is set in GetComStat you have no idea which 1 or 2 or 3 or 4 or 5 of the 0x00 bytes where the BREAK and user's need to know this!

A file other than standard type can be added to the project at any time. However, if a text file is clicked in the project tree that is not a source or include the external editor opens by default (notepad or so); to have these file opened in a IDE editor window you need to right-click on it and choose "Edit" ("Open" option is the default one and is bolded).

 

I'd like to have an option added to Envirnoment settings to enable automatic editing of project text files in a IDE editor window.

I occasionally miss some UIR editor features that are often present in similar tools. All the features I expose should interest only

the editing phase.

 

1) Ability to center a control within a panel, in respect to either vertical or horizontal size

2) Ability to "group" a certain number of controls, in order to align the "group" with other objects, without changing the controls' respective positions

3) Ability to lock a control's position, so that it will not inadvertently move when clicking on it, as it casually happens

4) Ability to "evenly" distribute controls in a way that conservers the position of the extremities, allowing for small differences in each spacing

 

 

Hello,

 

I'm using the 3D Graph ActiveX in order to display contour lines for a given parameter.

I would like to overlay this contour map with a Google earth image as shwon below.

 

Bitmap in 3D Graph.jpg

 

So it would be nice to consider adding the possibility to add a bitmap image to the 3D graph as it is possible to add a bitmap as background of a canvas control. The bitmap could also be used to replace the color of a surface plot.