LabWindows/CVI Idea Exchange

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

Hello,

 

I have a very elaborate Front Panel, developed in LabVIEW 8.6, which I'd like to import into my LabWindows/CVI 2013 development environment.

 

The background is that the new company colleagues are very proficient in C and want to use LabWindows/CVI to re-program the current state of the software and maintain and update only using LabWindows/CVI in the future.

 

This would be very usefull, since it would save a lot of time and keep the naming of the elements in the front panel as-is. For the customers it would mean, having the same tool they are used to work with and receive much faster and better service when it comes to changes or additional functionality.

 

If there is already a way to do this I'd be happy to have a step by step guide.  

 

According to the feedback from the forum, this still doesn't exist. (http://forums.ni.com/t5/LabWindows-CVI/Can-I-convert-a-LabVIEW-Front-Panel-into-a-LabWindows-CVI-User/td-p/3044003)

 

 

Hello,

 

I would like to have the possibility to change the parent panel of an already loaded panel.

This could be nice in order to switch between floating or docked panels in an easy way.

 

Best regards.

 

In CVI 2013 is option “Run -> Attach to Process…” and new is option “<< Running >> -> Detach from a process” during debugging, which is very good to  debug TestStand sequence and CVI DLL, advantageous if I need to update CVI code and do not have to launch TestStand again and again after new CVI code is builded.  Hovewer, to attach CVI DLL to a process is always necessary to do next steps: Run -> Attach to Process…, then select process from a list (seqedit.exe) and click OK. I would appreciate similar option as “Specify Executable to Debug…” or key shortcut to attach process directly to TestStand in one click or using simple key shortcut.

 

attachtoprocess.png

selectprocess.png

 

While editing the code, pressing Ctrl+Shift+U or selecting Right-Click+Find UI object jumps directly to the object identified in the code (either the control constant name or the associated callback name).

This works well if the control is on a single panel: the correct panel is shown in the working area of the editor scrolling through the file if needed. If the target control is on page of a tab control, however, the UIR editor opens in the upper left corner of the UIR file; actually the correct control is selected on the tab page, but if it is located out of the editor screen area in the UIR file you need to manually scroll right- and/or downward to show it.

 

Please correct it: it's not always obvious where the target control is located in the UIR file, wespecially if this one is rather complex, with several panels/controls.

Hi,

 

It would be handy at times to be able to get a string of a numeric control which represents the value exactly as it is displayed in the numeric control.  For example if the control shows "123.456E+9" or then there would be some way to get that exact string (other than reading the value as a number then formatting it into a string, of course).  I envision this could either be a new function call, or perhaps a non-settable attribute that can be obtained with GetCtrlAttribute(...) (the latter would of course benefit from being able to use GetCtrlAttributeLimited(...) ).  Thanks.

Problem:
The Find dialog currently doesn't store its text search settings (e.g. Case sensitive, Whole word) if the User cancels the dialog.

 

Details:

The Find dialog only stores its text search settings if the user explicitly performs a file search. The disadvantage of this behaviour, is that the user has to reconfigure his search settings after cancelling the dialog. Users may sometimes open the Find dialog, configure some search settings and then (probably accidentally) cancel the dialog, but then open the dialog again to perform the actual search. This way the previous search settings are reset and lost.

 

Suggestion:

I suggest that the search setting should be stored somehow in the CVI ADE, such that the search settings persist in the text editor, despite of the user cancelling the Find dialog.

I also think that this should apply for other text search dialogs (like, Find in Files, Replace, Replace in Files). This behaviour of a text search dialog is particularly accepted by other mainstream text editors and IDEs.

 

Advantages:

  1. Search settings are stored even if the user cancels the Find dialog.
  2. User doesn't have to explicitly invoke a find operation through the Find dialog, in order to have search settings (mainly the 'Case sensitive' setting) influence the Quick Search (Ctrl + Q) functionality. This is by far, the most helpful use case for this change. It's quite cumbersome to always have to performs a Find operation through a find dialog, in order to change the case sensitivity of the Quick Search feature, particularly because the find operation takes extra steps and causes distraction (displays the Find Results window).

When you place a splitter control on a panel with several controls and want to attach a few of them to the splitter, you can define for each of them whether the splitter moves or resizes the control ("attachment mode"). At present, however, this must be made individually control by control, which is time wasting if you have a bunch of similar controls to attach and define.

 

I suggest the splitter control is added the ability to select more controls and set for all of them the attachment mode in a single pass. Limiting this possibility to similar controls (e.g. only numerics or tables selected) can be accepted if this simplifies checks the editor does in this operation.

 

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

A control tooltip is hidden if the space below the control is overlapped by another panel.

I understand that the displayed tooltip is a panel, if so cant the floating style be changed so it is always on top ?

Add an option in FileSelectPopup() to escape the backslash (\) to (\\) in path names.  CVI and Win-7 do not work with single backslashes in path names.

 

example: 

  fp=fopen("C:\temp\TEST.txt","w"); // open the file for writing  *** Will not work. ***

 

  fp=fopen("C:\\temp\\TEST.txt","w"); // open the file for writing  *** Good ***

 

If we can add the backslash(s) in using a FileSelectPopup() option, this problem goes away.  

The PrintPanel function has the capability to display the print dialog box.  This would be a nice addition to PrintTextBuffer and PrintTextFile functions also.

On the tab control property page there is no way to set the control mode as indicator.

However this can be done programmatically with SetCtrlAttribute (panelHandle, PANEL_TAB, ATTR_CTRL_MODE, VAL_INDICATOR); which has the effect of preventing the operator to change the shown page.

 

It would be handy to be able to set this attribute at design time too.

Hi.  I find occasionally that it would be handy to be able to add items to the event que through the debugger.  Like, for example, to call a callback function as if the user had interacted with the user interface.  This would be especially handy for remote debugging, where I could add in an item in the que as if a button had been pushed on the user interface without having to physically walk over to the debuggee and push the button on the screen.  I'm not sure the best way to implement this, and I can picture some pretty sophisticated interfaces.  However, something simple could be perhaps a screen like the function panel for CallCtrlCallback(...) where I could enter in the Panel handle, Control ID, Event, etc. and have the event added to the event que?  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.

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.

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.

 

It would be nice if eventData1 and eventData2 were used when EVENT_VAL_COERCED is triggered.

 

I have an application in which I want to know if too high or low of a number entered.

 

GetCtrlVal always returns the coerced to number that is in range.

 

if eventData1 is 1 the max value was hit, if -1 the min value was hit.

 

eventData2 is always 0.

 

You can check the value returned by GetCtrlVal against the min and max of the control using GetCtrlAttribute.

 

I am running into an issue where my ranges change based on other control ranges and sometimes the min and max of a control are set to the same

number.  I want to know if the number entered was too high or low.

Hello all,

when a numeric is an integer, there's the option of having the radix preceeding the value in the control. For float/double, I'd like this tiny radix box to be extended for arbitrary strings in order to show the physical unit (m/s, kV, etc) of that numeric.

 

Right now the workarounds are:

- use a text box and display the value and the unit inside. Problem: works only for indicators, no arrows for changeable controls.

- display the unit in the label of the control.