Right now it is possible to set the color, and since CVI 2013 also the line style, of all grid lines collectively.
I would like to distinguish between major grid lines and minor grid lines, e.g., draw major grid lines with dashed lines / light grey, and minor grid lines with dotted lines / dark grey.
My CVI application started to generate linker errors immediately after I upgraded from CVI 2012 to CVI 2013. A number of other people have reported exactly the same problem, with the linker unable to resolve symbols found in IMAQdx or nivision.
This means that the final release of the new version of CVI cannot have been tested when using the image acquisition or image processing add-ons.
I suggest that, in future, new versions of all tools are subjected to automatic regression tests against the examples distributed by National Instruments before release. Because it obviously doesn't happen now.
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 )
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 a result, starting CVI one first has to locate all the files, where did the include file go...? If you happen to have some more tabs this is a waste of time.
Also, as Roberto mentioned, you can not easily use the short cut keys Ctrl-1 etc. because of the changing assignment.
So, in short, I am asking to improve this behavior and maintain the tab order of CVI workspace files, that is, re-arrange/re-open the tabs in the order they were when CVI was closed.
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...
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)
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:
Before CVI2012 a conditional breakpoint could be toggled between enabled and disabled with a single mouse click. The behaviour changed in that version so that a mouse click now deletes the breakpoint.
I understand that this is more consistent with the behaviour of an unconditional breakpoint, which is set and deleted with the mouse click; I understand also that Ctrl+F9 shortcut key has been introduced to toggle breakpoint state, but in my opinion this new arrangement is less user friendly than before.
The risk is that once you set a conditional breakpoint, possibily with a complicated condition and/or pass count set to match some particular operating condition, you can delete it with a single click while you would maybe simply disabling it.
The same applies if you press F9, so I suggest additionally that when F9 key is applied to a conditional breakpoint it disables the breakpoint instead of deleting it.
This suggestion comes from this discussion: basically, it seems strange to me that I may have a disabled quit button and the close control (the red cross in the upper right corner of the panel) which is active at the same time.
It seems to me that the close control should honour the state of an existing quit button declared in Close control panel attribute. At present the only solution is to test the state of the button within the button callback itself.
If this idea is not accepted, at least a note should be added to the documentation, e.g. in ATTR_CLOSE_CTRL help page, specifying that the callback is fired regardless the state of the control.
This issue is that old that we all forgot about it...
But this thread brought it back to my attention and I'd like to suggest two improvements:
Setting the width or the height of a control does not always succeed because there are limitations concerning the minimum and maximum size.
If a function fails it should return a warning. However, calling e.g. status = SetCtrlAttribute ( panel_handle, PANEL_RING, ATTR_WIDTH, 5 ) returns success (0) even though the width of the ring control will be much larger than 5 pixels. For checkboxes, the situation is even worse because checkboxes are drawn right aligned to a transparent rectangular frame. So calling status = SetCtrlAttribute ( panel_handle, PANEL_CHECKBOX, ATTR_WIDTH, 500 ) will result in a transparent drawing rectangle of width of 500 but with the checkbox size remaining at the default size. Since the checkbox is drawn right aligned to this transparent frame the checkbox eventually may disappear from the panel (setting the width to say 10000 will not draw anything).
Complement the documentation, the idea is given below:
Data Type: int
Description: The width of the control body in pixels.
Valid Range: 0 to 32767
Control Type Restrictions: Not valid for controls of type CTRL_VERTICAL_SPLITTER and CTRL_VERTICAL_SPLITTER_LS
For checkboxes, the minimum size is ... pixels, and the maximum size is ... pixels.
For ring controls, the minimum size is ... pixels.
LabWindows/CVI Compatibility: LabWindows/CVI 3.0 and later
Control Types: All
Using CVI I can't find an easy way of moving inside a source code file.
Based on my experience with other C editors, I suggest these 3 little features that I think are really useful:
I have thease features in an open source C/C++ editor (Code::Blocks) I use for other projects, and I think they're really useful to reduce the coding time.
When you have large source files with a lot of functions, with CVI is't difficult to easily see where you are inside the file; moreover it's quite common scrolling the file jumping from a function to another.
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.
Data Tooltip should also display the name of the function, when displaying the value of a function pointer variable.
While debugging a CVI application, when hovering the mouse cursor over a function pointer variable, the Data Tooltip displays the address of that function, referenced by the variable.
It would be very useful in cases when you have multiple function pointer variables referencing several different variables, to have the Data Tooltip not only display the address of those functions, but the name of the functions as well.
We have recently dropped CVI (as of 2009) as an option for use with our many data visualization applications. The graphic performance is just too slow and clunky to put up with any longer and gets worse as we add features or try to make 'native looking' applications (that resize, animate, etc).
Things like dragging/updating cursors is noticably clunky when you have more than one graph updating (linked cursors across more than one graph).
Updating datasets in large tables is slow enough to watch it step through the rows. Even using suggest tips like using ATTR_CTRL_VAL instead of SetTableCellVal, when a large table has to update... it's painfully noticeable. Basically any operation that updates a large portion of the UI.
Another example, try to resize and move controls (as most other applications do) on the EVENT_PANEL_SIZING?
I'm going to go out on a limb and guess that CVI doesn't use any graphics card acceleration? since workstation or netbook doesn't seem to make much difference in graphic performance.
Our clients notice when our applications look 'clunky' and 'slow' when compared to smooth, responsive apps/interfaces from competitors. It's often the little things that make a big difference in appearance.
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:
Idea: Provide eventData1 and eventData2 information.
For example, eventData1 could tell about the numeric value:
eventData2 could tell about the increment/decrement arrow, e.g.:
Since so far no eventdata are provided this suggestion should not break backward compatibility.
While developing code, having correct indentations is very helping in making sure you have all the right brackets and to see where your structures are nested easily. Sometimes, whether by copying and pasting or just rapidly getting out a section of code, a whole segment might have incorrect indentation, which is tedious to correct.
This is where an auto indent tool could be a big time saver. From somewhere like the Edit menu, where similar functionality is located in other development environments, you could select Format Selection to do a highlighted section or Format File to do the whole file. Then, CVI can format the tabs for you:
Although this is a simple example, auto indent becomes even more useful when you have multiple nested structures and decide, for instance, to add or remove another nested loop.
Customer who has used CVI for years and likes it was looking a Mstudio for the reason that a lot of his new engineers can't or don't do the regular C programming. He likes Mstudio as an idea but, with the extra cost of adding MS Visual Studio and dealing with a they support/We support issues of having two SW pkg from 2 different companies gives him pause about purchasing. He stated he likes CVI because if there is an issue (even if rare) he know that NI will help to figure it out. I let him know I'd provide the feedback.
I realize that there may be open source solutions for this but I would love a robust easy to use email function on completion. Essentially, I am gearing up to run some larger batched analysis routines on a remote workstation for our user group. The analysis time and queue length will vary from minutes to hours (hopefully not days yet). I would love the option to email the user on completion, failure, or email me if something really goes crazy.
The problem with the current simple email solution (unless authentication was really recently implemented) is that almost every SMTP server requires additional authentication to combat spammers I suppose.
I have had severe problems in development, due to a high synergy between my lack of attention and CVI behavior in search/replace dialogs.
I am talking about the fact that Find/Replace parameters [namely search directories] are stored at REGISTRY level, so that they remain the same across different workspaces.
Having to work with different version of the same software product, I have found myself looking into the wrong sources, or even doing mass updates, due to the fact that different projects have identically named sources and includes, just in different directory trees, and rapidly switching from one workspace
to the next I didn't "mind the step"
My suggestion, thus, is to store find/replace parameters at workspace or project level, so as to avoid the aforementioned inconvenience
Note: the LabWindows/CVI Idea Exchange is not the appropriate forum to submit technical support questions.
The LabWindows/CVI R&D team is committed to reviewing every idea submitted via the LabWindows/CVI Idea Exchange. However, we cannot guarantee the implementation of any LabWindows/CVI Idea Exchange submission.