필터 지우기
필터 지우기

How to display Command Window in App Designer in real time

조회 수: 225 (최근 30일)
Jimmy Neutron
Jimmy Neutron 2020년 10월 29일
댓글: Rik 2021년 7월 23일
My main script contains the following simple code:
%% Initializing diary
dfile ='diary.txt';
if exist(dfile, 'file')
delete(dfile);
end
diary(dfile)
diary on
%% Main Code
disp("first")
pause(5)
disp("second")
pause(5)
disp("third")
diary off
I have a button that starts a function and inside this button I have:
% Button pushed function: StartScriptButton
function StartScriptButtonPushed(app, event)
run("Test.m");
temp = regexp(fileread('diary.txt'), '\r?\n', 'split');
app.OutputTxt.Value = temp;
end
The .m file has a diary log that starts at the start of the matlab script and eds at the end. The problem is that the values are only printed after the whole script has executed... I want them to be displayed as soon as they are done. How could this be accomplished? Am I supposed to turn off the diary and turn it on afer every time I have a print in the .m script? Ii haven't found a solution that works for me online, so sorry if the question sounds like it has been already asked.
  댓글 수: 8
Rik
Rik 2020년 11월 5일
Where are you telling Matlab to do anything with app? How should Matlab know what you want to happen? Did you edit the disp function?
See my comment under the answer by Mario.
Jimmy Neutron
Jimmy Neutron 2020년 11월 5일
Dear Rik, your comment under Mario's worked splendidly! Thank you very much. If you could, please edit your answer so I could mark it as the right answer :)

댓글을 달려면 로그인하십시오.

채택된 답변

Rik
Rik 2020년 11월 5일
Slightly expanding on the answer by Mario Malic:
You need to retrieve the handle to your application, e.g. like this:
app = get(findall(0, 'Tag', 'AppUIFigure'), 'RunningAppInstance');
Then inside your script you can set the Value property of your text box, like the code below.
disp("first"),app.OutputTxt.Value="first";
pause(5)
disp("second"),app.OutputTxt.Value="second";
pause(5)
disp("third"),app.OutputTxt.Value="third";
  댓글 수: 3
David Alejandro Ramirez Cajigas
David Alejandro Ramirez Cajigas 2021년 7월 23일
how to display a window with the Command Windows in the App Designer in the first place?
Rik
Rik 2021년 7월 23일
@David: that is not possible. You will have to print results to a text field yourself. You can also use a diary to retrieve previous results.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Mario Malic
Mario Malic 2020년 10월 29일
Set a tag, or a unique name for your app in Component Browser, under UIFigure - Identifiers, and get its handle this way:
%% in your script
app = get(findall(0, 'Tag', 'AppUIFigure'), 'RunningAppInstance');
To remove diary from previous run, otherwise it appends to it
Diary_File = 'diary.txt'
if isfile (Diary_File)
delete(Diary_File)
end
diary (Diary_File)
Updating the text
Cmd_Window_Text = fileread(Diary_File);
app.OutputTxt.Value= Cmd_Window_String;
  댓글 수: 6
Rik
Rik 2020년 11월 4일
app = get(findall(0, 'Tag', 'AppUIFigure'), 'RunningAppInstance');
%% Main Code
disp("first"),app.OutputTxt.Value="first";
pause(5)
disp("second"),app.OutputTxt.Value="second";
pause(5)
disp("third"),app.OutputTxt.Value="third";
John K. George
John K. George 2021년 7월 9일
Hi, I am running Matlab R2019a and getting the following attached UnrecognizedMethod error. I am able to "Save Copy As" - R2017b and R2019a will run. Could you please save to one of these previous versions and resubmit an attachment? thx.

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2020년 11월 4일
"The problem is that the values are only printed after the whole script has executed... I want them to be displayed as soon as they are done. How could this be accomplished?"
A few years ago Mathworks modified diary to flush to file as each line is generated. If you are using Mac or Linux then you can read from the diary file as it is being generated.
If you are using Windows then you have the hassle that Windows might well have locked the file. Perhaps Mathworks deliberately made it shareable when it is open; I do not know.
  댓글 수: 1
Mario Malic
Mario Malic 2020년 11월 4일
If you are using Mac or Linux then you can read from the diary file as it is being generated.
Confirming above for Windows as well.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by