LabWindows/CVI Idea Exchange

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

Hi Everyone!

 

In these days, I have been debugging a complex application(almost 12,000 lines of code) and it was very hard to do a map showing the relationshing at least of some critical functions.

 

For this reason, I consider that a very helpful debugging tool could be to add in LabWindows/CVI, a window like the VI Hierarchy in LabVIEW; that shows the relationship beetween the functions inside all the module in a CVI project. This windows will show which functions calls a particular function.

 

Here, there is a very simple example:

Untitled.png

 

Regards!

When using the UI functions, a neat feature is the ability to pull up a dialog of valid control IDs when specifying the control:

 

1.png

 

clicking the elipses displays this dialog showing all valid control IDs:

 

2.png

 

If you are using the function panel however, you cannot access this dialog and you are on your own for figuring out the correct control ID:

 

3.png

 

I think we should add this functionality in the function panel for any function that has a control ID parameter.

 

 

Hello,

 

usually I work on my projects on two different computers (home/work or development/lab). I would like to see a possibility to more easily move my project back and forth, say by providing two new menu commands

 

File / Import Project and File / Export Project

 

I imagine that the Export command generates a zip file consisting of all files required to build the executable (and a distribution) and also exports the editor preferences (probably without the window positions because different computers may have different screen resolutions) etc. The Import command then should load the *c., .cds, .cws, *.fp, *.h, *.prj and *.uir files, import the editor settings, adjust the library menu and load any instruments.

 

Thanks!

Hello,

 

right clicking in the source code brings up a popup menu, see below.

 

Some of its items are dimmed or adapted to the context. For example, 'Format File' versus 'Format Selection'. This is nice and as I would expect it for a context menu!

 

Unfortunately, there are some entries that are available even if they are more ore less superfluous.

 

For example, 'Edit DAQ task' shows up even if no DAQ is installed. Selecting this menu entry only shows 'This feature requires DAQmx' - so why not dim it if no DAQmx library is available?

 

The same is true for 'Edit IVI Specific Driver Attributes...' and the IVI library.

 

But also 'Recall Function Panel', 'Browse Identifier' and 'Find UI object' don't care about their context.

'Open Quoted Text' for example, does! (which is good)

 

So I would suggest to have the popup menu act more consistently and only provide commands that are meaningful.

 

Thanks

 

popup menu.png

It would be great if one could define two colors for user functions, one color for functions declared local to a .c source file, and another color for functions declared globally like in a .h header file or linked file. User-functions are visually the same as all others, black text. Ugh.

If it's too much of a non-compiled linking challenge to apply, at least allow the user to select a section of working code text and change the font color by hand to get to the same place. Being able to change a text chunk background color would be great too. That would be of help to allow the programmer to, say, highlight sections of code that need later work, items for tomorrow, passing along working code to colleagues, etc. 

Currently when formatting hex values into strings the letters a-f are always lowercase.  It would be nice to have an option to make them uppercase, as that is how most people are used to seeing them.  It would also allow for consistency between the way numeric controls work (which use uppercase A-F).

 

 

Hi,

 

just a little idea for a minor improvement of the status bar: Right now, the coordinates of UI controls are displayed in different ways: in the popup window, the sequence is Top Left, while in the status bar the sequence is Left Top - this is somewhat irritating...

 

So I'd suggest to change the status bar text from

 

(23, 873) to something like

 

Top: 873 Left : 23

 

Thanks.

 

 

UI.png

When editing a panel, you can locate every control in the User Interface Browser at the top right corner of the editor window. In order to highlight some elements in the panels/controls tree, you can collapse all elements and expand only the panel you are interested to. Not exactly a fast and easy process but useful in case of complex UIR files with several panels embedded (and the only way I have found to look at control arrays and their included controls). So far so good.

But if you happen to switch to another window, possibly to revise some code that references the controls you have elaborately selected, and then come back to the UIR editor you will find the UI Browser has reverted to fully expanded and the control you were looking at previously is not event the selected one! That is to say, you've lost all the time spent in tailoring the tree Smiley Mad

In my opinion the UI Browser should retain its state when you switch to another window so that what you were working on is still visible on screen and you don't have to locate it again.

Hello,

 

  • Right now, the Break on»Library Errors function break happens for all library errors. I would like to suggest a more granular setting, i.e. break on file I/O errors, math errors, etc.

 

  • An additional (and most relevant) feature I suggest is the option to allow to temporarily exclude certain errors; let's say I have a loop doing some calculations and these calculations result in an ERANGE error, then it would be useful to get notified by the debugger, but only once for this loop, not 500 times... Hence after a break on library error I would like to have the (right click) option 'exclude further breaks of this function'. This should be valid for the current execution and be automatically reset when the program is restarted.

 

  • Also, the menu command should provide the possibility to override all SetBreakOnLibraryError functions.

 

Many thanks!

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

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.

The idea and the code has been originally posted by @nickb here.

This library handles a common need that I handled in a less elegant way as described here.

 

As suggested by @RobertoBozzolo the original code from Nick would be a great addition to the Programmer's Toolbox.

In this way all the users would benefit froma standard tool, without re-inventing the wheel (as I did) Smiley Wink

Summary:

Quickly find and open a file in your projects by typing in substrings of the name of the file.

 

Description:

Implement a quick way to find files in a CVI project, by typing substrings of the filename.

A certain keystroke combination should launch a popup-dialog (similar to the picture below), displaying the user a list of files that contain certain substrings. This helps significantly when having to deal with large projects containing many files.

 

Find File

Hello,

 

I miss an event that is fired whenever an axis, set to autoscale, changes its minimum/maximum values.

 

Imagine the following scenario: On a xy graph, I have several plots and also some 'regions of interest' that are visualized either by lines or rectangles. Now, if a new plot is added that results in a different axis scale, I also need to redraw my regions of interest. At present, this requires bookkeeping of xmin, xmax, ymin, ymax and comparing the current axes ranges with the previous ones. It appears to be simpler if one could rely on a suitable event that is fired whenever the axis range is changed.

 

Thanks Smiley Wink

 

Make sure ALL the function panels use the right controls 

For example in the CVIDynamicMemoryInfo function panel below, the "Options" parameter should not use the String Ctrl.

Instead it would be "safer" to use a list box, a ring or whatever make sense to display the two available choices :  DYNAMIC_MEMORY_SHOW_ALLOCATED_MEMORY or DYNAMIC_MEMORY_SHOW_ALLOCATED_MEMORY_SUMMARY


This would help to reduce the typo errors etc.

Regards, 40tude


fp.png

(Coming from this forum discussion)

 

If you double click on a UI browser element you'll go to the corresponding panel or control in the editor. That's good! Smiley Happy

There doesn't seem to be a way to go the opposite direction (i.e. from a control in the user interface editor to the corresponding item in the user interface browser tree) Smiley Sad : this could be useful in case of complex UIR files with several panels and controls, especially if you have more than one control array in it.

 

So I suggest to add two options to the control context menu to locate the control in the UI browser ad to locate in a control aray if it is included in any of them.

I'm thinking to something like that:

 

 Screenshot 2015-03-06 09.26.41.jpg

 

It would be handy if these new items could be assigned a shortcut key too: ctrl+U and ctrl+R could be a good choice (presently ctrl+U is not used in the UIR editor and ctrl+R is not active at design time)

So for any bracket opening (, [, or {, CVI editor automatically adds corresponding closing bracket and place cursor between them. I saw this feature somewhere online and it was very convenient.

 

At present, you cannot edit text attributes when several controls are selected. It would be nice to be able to set text attributes the same way as we can set other attributes (e.g. status of leds or min/max limits for numerics and so on).

I am interested both in attributes for control text and control label.

Right now if multiple controls are selected you cannot jump to the code with "View control callback" menu option or Ctrl+B accelerator even if they have the same callback. It could be handy to be permitted to go to source if selected controls have the same callback.

 

Consider this scenario:

On a panel you create two buttons, select both of them and edit their properties assigning a (unique) callback to both. Next with both controls selected you generate the callback using "Generate Control Callback" or Ctrl+G. Now you would like to go and code something in the callback but you're not allowed to: you need multiple clicks to go to source: one click anywhere on the panel to deselect controls, one to select one of the buttons and finally the right click or accelerator key. Not very handy...

I apologize if this has already been addressed but this was determined as a issue years ago and forced us to implement a workaround.

 

We use PloXY for large data sets (up to 16 MB has become pretty standard lately). To address lag years ago, we pared the data to be viewed to 4000 data points in background code and send that to PlotXY. However, when the user zooms - which is always, you must then go back to the original data to find the new best 4K data points prior to plotting the new data. The code usually works well but there are instances where it can shutdown unexpectedly - not often enough to fight through friutfully though.

 

As for an truly automated perhaps a more logical course of action is to retrieve the panel size and use that for the data sizing. Regardless, it would be nice to use the CVI built in function and then subsequent zooming etc could be possible via standard functions.