MATLAB CTL-C GUI Cleanup
이전 댓글 표시
Hello, I have created a GUI to collect some data. This GUI uses some equipment that has to be connected/disconnected to MATLAB with commands. I want to make it so that when you push CTL-C to stop running something any of the functions, the equipment is disconnected properly. Is that possible without using "oncleanup" with putting it in every function used in the GUI?
답변 (1개)
Walter Roberson
2018년 6월 25일
0 개 추천
When you launch the GUI, have a function create an oncleanup, and then have the function uiwait() or waitfor() the gui figure. The control-C will trigger exiting the uiwait() or waitfor(), causing the function to exit, triggering the oncleanup .
... at least in theory.
댓글 수: 5
Sarah Crimi
2018년 6월 28일
Walter Roberson
2018년 6월 28일
See https://www.mathworks.com/help/matlab/ref/matlab.ui.figure-properties.html#buiwuyk-1-CloseRequestFcn for controlling what happens when the figure closes including by clicking on the "X" window decoration.
If you are using GUIDE then look in the *OpeningFcn callback that gets created for your GUI. You will see a pair of lines like
% UIWAIT makes MyGUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);
Before those lines, put in a onCleanup call. Then, remove the comment marker from the second line, so it would look like
% UIWAIT makes MyGUI wait for user response (see UIRESUME)
uiwait(handles.figure1);
That will cause MATLAB to not return to the command prompt: instead it will wait for the figure to be closed or for control-C . When either of those happens then the *OpeningFcn would exit, triggering the onCleanup action.
Sarah Crimi
2018년 6월 28일
Walter Roberson
2018년 6월 28일
Hmmm, https://www.mathworks.com/matlabcentral/answers/156803-detection-of-ctrl-c-in-m-file suggests using onCleanup, which agrees with my memory, and when I test the code there it works. But I agree that the onCleanup does not seem to get invoked for ^C for waitfor() or uiwait() so I do not know what the solution is.
Sarah Crimi
2018년 7월 3일
카테고리
도움말 센터 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!