LabWindows/CVI Idea Exchange

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

Following the discussion with Luis here I want to suggest

 

  1. a possibility to confine the variable view
  2. allowing to move confined windows within the IDE, i.e. position the source code browser to the left (or right) of the code window, similar to the workspace window.

Wolfgang

My 2000 dollar worth, run of the mill desktop PC has 4 teraflop of brute computation power hiding in 4 GPUs. None of which is accessible for my programs I develop in Labwindows.

Shame!

With the release of the new OpenCL it is possible to generate a "platform independent" GPU computing library. That would place Labwindows on the same or better footing than Labview that already has some GPU computing support.

The advantages are obvious: huge gain in data processing speed, real-time application with streaming data,  pattern-recognition (video) applications, image processing, data-parallel tasks in (technical) modeling arena.

I am playing with some optimization algorithms (genetic algorithms, evolutionary algorithms) that benefit and show amazing gains since they are ideal for data-parallel applications! Currently working on the specs for a new type of controller that would optimize several parameters to figure out the state of the tissue culture (expanding, producing, overgrowing, etc.) to maximize productivity and to calculate the optimal settings using evolutionary algorithms... Any complex process control could take advantage of this kind of applications -currently not available- because of computational limitations. Had a previous optimization task that would have taken 150,000 years to complete using a brute force algorithm on a "monofilament" CPU-based application. Converted it to a genetic algorithm and it gives me a good enough solution in 3-4 days on the same standard PC. Now, with GPU, that problem could be solved in fifteen minutes while expanding the evolutionary depth and finding better solutions using even more complex fitness functions.

Ask yourself what do you want: tinkering with the conveniences of the IDE that already does the job well enough; or open the door to new landscapes that could be conquered by using the simple elegance and effectiveness of LabWindows and the power of GPUs?

 

It has been discussed a few times in this forum, but so far it is impossible to 'know' when the mouse cursor is above a certain menu item. This information might be used for example to display some context help.

 

Hence I would suggest that using the menu callback of the respective menu item it should be possible to be notified about the mouse cursor position once it is over the area of the respective menu entry, e.g. by providing a MOUSE_OVER_MENU_ITEM event.

Hello,

 

I have a table with several columns. Let's assume I want to modify properties of column 5. It would be nice if when clicking on column 5 in the UI editor this column would be preselected. Right now, the table editor opens and one has to manually select a column...

 

Thanks

Currently, it is only possible to load XML for parsing from an xml file.  In order to load xml data from a string, it is necessary to either write to a temporary file, or use the MSXML library directly.  It would be fairly simple to modify the CVIXMLLoadDocument() Function (or create a new function) which uses the MSXML IXMLDOMDocumentloadXML() function, which allows loading XML directly from a string. 

 

Adding this code to the current function after the IXMLDOMDocumentload() function would improve the CVIXMLLoadDocument() function so that it tries opening the input string as direct XML if it is not a path (Replaces line 167):

 

__caErrChk(MSXML_IXMLDOMDocumentload(xmlHdl, NULL, variantPath, &success));
	 
	if(!success) //if loading as a path fails, try reading as direct XML code
    {
        __caErrChk(MSXML_IXMLDOMDocumentloadXML(xmlHdl, NULL, fullPath, &success));    
    }

While defining attachment mode for controls attached to a splitter we face a very strange situation. In this image you can see on the right the aspect of the window with one control selected in "Controls on the splitter" window in Attach/Detach Controls dialog. On the right the same dialog when you click on Attachment mode control:

 

SplitterCtrlAssignment.png

 

Now, there are two strange effects:

  1. Attachment mode control is being operated while dimmed Smiley Surprised
  2. If you happen to miss Attachment mode ring, you need to select again the original control in order to have the ring enabled, which is boring and time-wasting

I suggest that at least that ring is not disabled when clicking on it or clicking away from "Controls on the splitter" box.

 

(this suggestion refers to CVI up to 2012SP1, I cannot check it for more recent releases)

While it is possible to add, remove and replace files in a CVI project it is not possible to rename or duplicate a file.

 

This is useful for example if a large source code file shall be split to speed up compilation. Although this file operation could be done outside of CVI associated tags would be lost.

 

A workaround has been offered here but a more elegant and simple solution would be welcome. Hence I suggest to provide two more commands to add and duplicate a file including its associated tags and breakpoints...

 

Thanks.

Sorry for the long message.

My proposals are at the very end of this post

In order to understand the rationales I propose 2 experiments

 

Experiment #1:

In C:\Users\Public\Documents\National Instruments\CVI2013\samples\userint
Open 2yaxis project

 

Here is the code of interrest (lines 131-145):

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData,
                         int eventData1, int eventData2)
{
    int val;
    
    if (event == EVENT_COMMIT)
        {
        GetCtrlVal (panel, control, &val);
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS,
                          VAL_RIGHT_YAXIS);   
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
        SetActiveCtrl (panel, PANEL_GRAPH);
        }
    return 0;
}

 

Set a break point line 141 (second SetCtrlAttribute())
Then comment line 141 with 2 "/" at the beginning of the line of code
Debug the project (SHIFT+F5)
Before the code start, the breakpoint move "automatically" from line 141 to 142

 

Note : This is "OK". Indeed line 141 is no longer executable so it seems reasonable to move the breakpoint to the next valid line of code.

 

When the UIR appears, click on the scale control
Once in the editor, stop the debug session

 

At this point you should see the breakpoint moving automatically from line 142 to line 141

 

Question : Why? While the breakpoint on line 142 is enable and valid , why does the breakpoint "remember" it comes from
line 141 and then "decide" do go back on this line?


I believe it has to do with the fact that CVI try to set the environment back to the state it was before debugging the code.
IMHO this is weird.

Indeed, at the end we have a source code with a breakpoint set on a commented line.

What is the value for the user?

 

 

Experiment #2 :
If you run the same experiment but, this time, starting with a breakpoint and a comment on line 142 (last SetActiveCtrl() function call)
then the breakpoint move automatically from line 142 to line 144 (return statement)

 

The issue now is that the code stop on the return statement quite often and not only when the EVENT_COMMIT is managed

 

Based on previous experiments I would like to suggest the following 

 

Plan A :


- During code edition, commenting a line of code which have a breakpoint CVI should disable the breakpoint (grey diamond). This provide visual information to the user.
- CVI should not try to find a new line of code where to set an active breakpoint
- Uncommenting a line which had a breakpoint CVI should NOT enable the breakpoint for the user. The breakpoint should stay grey. A single click on the grey diamond should enable the breakpoint (see another proposal I made about breakpoints)

 


Plan B :


- If, before execution, one breakpoint is found on a commented line
- Disable the breakpoint on the commented line (grey diamond). This provide visual information to the user.
- Try to set an new active breakpoint to the statement right after the current line of code if and only if :

a - the statement belongs to the same current block ( {.....} )

b - the condition (if any) is still valid on the selected line of code (this is already done today by CVI)

- If this is not possible, try to set an new active breakpoint to the statement right before the current line of code if and only if :

a - the statement belongs to the same current block ( {.....} )

b - the condition (if any) is still valid on the selected line of code

- Once set, even after the debugging session ends, the new active breakpoint remains active and in place

 

 

I vote for Plan B

Best regards, Philippe

It would be great if NI could provide standard translations of the NI runtime message file msgrte.txt in commonly-used languages.

 

Whilst we can get translations done ourselves, it is normally done by translators who have little knowledge of the runtime context so the quality is rather variable; also, I get the feeling that we are duplicating effort that may have been already spent elsewhere.

 

If it helps, I for one would be willing to pay for a decent translation.

CTRL+Q should highlight all instances of the results in the editor

Same thing with CTRL+F

This is similar to Notepad++ for example

 

I find the ALT+UP ARROW and ALT+DOWN ARROW of Visual Studio 2013 quite useful (move selected lines)

 

Please, implement CTRL + L to delete a line

I know the short cut is already owned by "go to line" but my current macro is not that good 😞

 

It seems macros are not working in the editor while debugging a code.

Could be usefull.

Will be mandatory if one day the "Comment multiple lines" is implemeted using a macro 🙂

 

Best regards, Philippe

Quite often I need to look at one project source code while working on a second one

So, I use Windows File Explorer, find my project of interrest then double click on the .cws file

In this case, CVI load the cws file in the running instance of the IDE

This is not really what I want

I would like CVI  opens the workspace in a new instance of the IDE (similar to what is done when, in a function panel help, you click on the "open sample code" button)

For what I remember I believe the above behavior is the one adopted by Visual Studio Express 2013

So far, I must remember to run a second instance of CVI first and then drag'n drop the cws file

 

Regards, Philippe

 

PS : drag'n drop a .cws or .prj should work on the CVI Welcome page

 

In the .NET Controller creator, it would be nice:

  • to be able to give a pre-defined list of the only classes it is useful to wrap,
  • or that CVI memorizes the already checked classes it is useful to wrap

in order to generate the wrapper quickly.

 

Because it is very boring to have to regularly check manually only 22 classes among plenty of not collapsed classes.

a screenshot of the CVI dotNET Controller wizard.png

 

Note: I check only desired classes to reduce the compilation time of the wrapper (which is very big with all its classes: 350 000 lines of code in the resulting C file!), as suggested by the CVI manual.

 

Thanks.

The functions available today are OK in terms of functionality but limited in terms of syntax/grammar

 

For example : 

  • No support for multiline patterns
  • No support for '\s' in patterns
  • No support for [:alnum:] in patterns
  • No Posix conformance (ISO/IEC 9945-2:1993 for example)
  • No way to select among various syntaxes (grep, awk, ECMAScript...)
  • At least the ECMAScript grammar should be fully supported

 

I would like to propose to change the Regular Expression compiler with a brand new one

Keep the existing API (but support much better grammar)

Extend the API of the current intrument driver if needed or if it make sense (a Find/Replace function could be a nice for example)

 

 

Philippe

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.

CVI provides the ability to use syntax coloring (which is nice Smiley Happy)

Right now, C keywords share one color - these keywords include the data types int, double, ...

 

Unfortunately, the boolean types (bool defined by stdbool.h), including the macros true and false, and the size and pointer difference types are not included, e.g. size_t, intptr_t, ...

 

This is not a problem because CVI also allows adding user-defined tokens for coloring, it even provides the option to add the VISA types.

 

In that sense we have the possibility to have core and extra types marked in two different colors - which is also nice.

 

Now I'd like to mark (my) constants as well, in a different color, and this is not possible.

 

My suggestion thus is to add a second group of user tokens, which can be colored differently.

 

Thanks Smiley Happy

Hello,

I would like a zoom (Ctrl + mouse wheel) when creating .uir panel.

Regards.

SetAnnotationAttribute permits you to pass -1 in AnnotationIndex parameter to apply the attribute to all annotations on the graph, while SetCursorAttribute does not. It would be good that this command too permits someway to operate on all cursors in a single pass.

 

As an example, when I want to print a graph on a black-and-white printer I prepare the control for this changing all elements to black. 

I can use a single instruction for annotations:

   SetAnnotationAttribute (panelHandle, PANEL_GRAPH, -1, ATTR_ANNOTATION_CAPTION_COLOR, VAL_BLACK);

 

On the other hand, I need to iterate on all elements for cursors

   GetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_NUM_CURSORS, &numCursors);
   for (k = 1; k <= numCursors; k++) SetCursorAttribute (panelHandle, PANEL_GRAPH, k, ATTR_CURSOR_COLOR, VAL_BLACK);

 

There is an option to display the default display format for integers and floating point, but no such option to set the default format for
"String Display" or "Array display". Strangely, "Array display" shows my arrays as decimal numbers even though I have the default display format for integers set to Hex.

Ideally, I would like to be able to set them separately for char and unsigned char strings. For example:
                char strings I prefer to display as Ascii, null-terminated strings (the current default).
Unsigned char strings I prefer to display in Hexadecimal, with Options==Display Entire buffer. This is because my unsigned char strings are actually arrays of bytes.

I've been using CVI for a long time and it's frustrating to setup these options each and every time I look at one of my unsigned char strings. Even if it can't be setup separately for signed/unsigned  chars, I would like the option to set some sort of default.

 

Another aside, would it be possible to display the array/string as hex characters with the Ascii equivalent just below it? A dual display would be even nicer!

Hello,

 

I don't know if it is possible technically but from a user's perspective it would be convenient for debugging a program (in debug configuration) if the UI constants could be provided in the data tooltips, too. Right now, if something is wrong with my UI I will have to do a lot of detective work to find out which control / control attribute is the problematic one...

 

Example: Consider the code

 

SetCtrlAttribute ( panel_handle, control_id, control_attribute, attribute_value );

 

Right now, if I hover over attribute_value, the tooltip will display something like "attribute_value = 24064". Then I will need to look up userint.h to find out which attribute value this is ( ATTR_CTRL_VAL ). It would be more convenient if the tooltip could include this information, too, and display something like "attribute_value = 24064 ( ATTR_CTRL_VAL )"

 

The same holds for control_id, because a number such as 14 will not immediately help me - I will have to go through the corresponding include file to find the respective UI control (e.g. TABPANEL_2_NUMERIC ).

 

 

Hi,

 

this is a very tiny suggestion, but still I would consider it a very convenient improvement:

 

Right now, if I am using the 'Find' command in the IDE with a typo in the search string (this happens frequently...!), press F3, I receive a popup message telling me that the string 'xxx' has no matches. After pressing OK the popup disappears, but also the Find window disappears! So I have to press Ctrl-F again just to correct my search string.

 

Hence I suggest that in case a search is not successful, (the popup disappears but) the Find window remains open. This is also true if the search was successful, so I would even consider the current behavior inconsistent Smiley Wink 

 

Thanks!