LabWindows/CVI Idea Exchange

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

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

 

Admittedly not a very urgent wish:

 

Since 2013 strings are displayed in the Array Display, see the screenshot below. I would consider it nicer if the fields would be of the same width, now there is a noticeable change from 9 to 10 and from 99 to 100...

 

 

variable view.png

 

 

Thanks!

 

 

Be able in CVI to deploy code to a Compact RIO for execution. This would allow Compact RIO users to use C code from a Linux LabVIEW.

I made this suggestion some time ago - unfortunately I had combined it with another, related idea. The other idea was implemented so now the complete issue is dead, sorry, completed. Smiley Surprised

 

This suggestion is meant to revive the unfulfilled request of two new attributes, allowing to dim and hide a specified entry in a ring control. This would be convenient as it avoids to programmatically rebuild the control.

 

Thanks!

 

 

Hello,

 

The current features of the UI editor with respect to editing tooltips are VERY limited. I am not complaining because one has to start somewhere Smiley Wink

Instead I am adding yet another suggestion on this subject Smiley Happy

 

Please provide the possibility to enter tab stops, see my comment here

 

Because this is such a modest request, please also consider this one Smiley Wink

 

THANK YOU!

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!

Hello,

 

while editing operations on a panel can be undone this seems not possible for menus. For example, if I have changed the item name of a menu in the UI editor this can not be undone using CTRL-Z. I have to remember my last action and undo it myself.

 

Thanks.

During editing of large programs, I often find myself following a thread of logic through a program, through multiple routines, to find out where it is going. The problem occurs when I want to trace my steps back and take another fork in the program: the current bookmark scheme only lets to go to the next or previous bookmark in line-number sequence, not the order in which they were laid down.

 

It would be nice if there were some mechanism that could follow the bookmarks back and forth in the order that they were placed  - and allow multiple chains of bookmarks for following different threads of logic. Ideally, a graphical display on a special window  with the file, line number, and subroutine name for each bookmark; perhaps showing the line of code as a "tip" popup when I put the mouse over it.

I've been using multithreading a lot in a large data-acquisition and motion-control program that I'm working on. There are various reasons, but the speed (or rather lack thereof) in the GUI seriously slows down data acquisition and processing if I try to run everything in the main thread. So, I've got the main thread that handles the user interface; the DAQmx data acquisition thread; and a data processing thread that runs in the background, accepts the data (which comes in at regular intervals) from the DAQmx thread, processes it, and stores it for display and saving to disk.

 

Anyways, with all of this I make heavy use of the multithreading utilities in the utility library, especially the Thread Safe Queue functions, threadlocks, and the threadsafe scalar variable macros. They work nicely, but 45% of my debugging now consists of finding all of the spots where I forgot to release a variable after locking it, forgot to release a pointer after locking it, or forgot to close a queue after starting it.

 

Another 45% consists of finding places where I call a function from two different threads, for instance if I start up a window in one thread, and try to call a function for that window in another thread (for instance: calling the main callback function for a panel with the CLOSE event to force it to close when shutting down the main program, for forcing a button-press with the COMMIT event) which doesn't always work. Allocating a list in one thread and calling a function that reads from or writes to that list from another thread really doesn't work!

 

It would be very nice to have some help in CVI that can count the various threadlock and other thread-safe stuff openings and closings and tell me: "Hey, you forgot to release that one". Since 99% of the time these are locked and released in the same subroutine, it would be helpeful even if it just looked within routines.

 

It would also be very helpful to have some utility that can keep track of what thread a given function is executing in. Perhaps the best way to do this would be to simply implement a function call-tree utility, with some notation of threads in there; the main problems after all occur when one calls the same routine from two different threads, with different results for each.

Following this idea already implemented, it could be good to add up/down keys to rows and columns selectors.

 

At present, if the table is in hot or normal mode you can click on a cell in the table preview in the Quick Edit window to select the corresponding row/column: going to editing them is made easy this way. However, if the table is in indicator mode you cannot click on the cella to select row and column. The same applies if you want to reach a column/row out of visible area of the table: the only solution to that is to double click on the column or row selector and type in the number you want. Not easy  nor fast, and prone to errors. Much better to click on a button and increment / decrement the active column index

 

I'm thinking to something like that:

TableRowColSelectors.png

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.

Hi,

 

When attaching a graph to a splitter control where the splitter control sizes the graph, I've noticed a few things. 

 

1.  First, the legend is also attached to the splitter so that it moves.  This works well if the legend is located in the default location (at the bottom right corner of the graph control) but problematic when the legend has been located elsewhere.  I would like the option of having the legend move or not move when the graph control is attached to a splitter that sizes (I would imagine this might have to be a new graph control attribute). 

 

2.  In addition, it would appear that the label is not attached to the splitter so it doesn't react to the splitter control being operated.  It would be nice if there was some way that the label text could be attached to a splitter, or perhaps a setting so that the label text could be made to auto-center above the graph control when the graph control is resized by the splitter.  (a potential workaround for the moment is to not use the label with the graph control and instead use a text message control as the label that can then be attached to splitter controls independent of the graph itself).

 

Thanks.

Until now users can save as .csv file (not sure it works with locales differents than US - issues with '.' and ',' for example)

Anyway, could be nice to be able to CTRL+A then CTRL+C and then paste the content in Excel, .txt file ...

 

Regards, Philippe

This would allow user to have :

 

PrintfTextBox(ghPanel, PANEL_TEXTBOX, "%s %d", "Hello CVI ", 2018); 

  

In terms of implementation it could look like  :

 

#define DEFAULT_LEN 1024 // Quick'n dirty fix
// ---------------------------------------------------------------------------- void PrintfTextBox(int panel, int CtrlId, const char *format, ...){ char StrTmp[DEFAULT_LEN]; va_list args; int NumLines; va_start (args, format); // could be nice also to have _vscprintf function call in CVI vsnprintf (StrTmp, DEFAULT_LEN, format, args); va_end (args); InsertTextBoxLine (panel, CtrlId, -1, StrTmp); GetNumTextBoxLines (panel, CtrlId, &NumLines); SetCtrlAttribute (panel, CtrlId, ATTR_FIRST_VISIBLE_LINE, NumLines); ProcessDrawEvents(); }

 Regards, Philippe

 

If you design a table in the UIR editor including cell colouring and at a later time you want to switch the table from indicator to hot or viceversa, cell colouring is lost and all cells default to black text / white background.

 

I understand that there can be a reason for this to happen (i.e. follow colouring standards for controls / indicators) but it's a hassle being forced to apply every time all colouring effects on the whole table! At least add a dialog box to choose whether to preserve actual colouring or use default black/white.

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 appears that when adding a font to the installation package by having the installer copy the font file to the [Fonts] installation directory, all the installer appears to do is copy the font to the C:\Windows\Fonts directory.  This is good enough for Windows XP, but in later versions of Windows additional steps must be performed for the font to be recognized by Windows.  It would be nice if the installation package could perform these steps when installing fonts on these versions of Windows.