Borrar filtros
Borrar filtros

How to create a GUI in matlab where the user can select a single testcase he wants to run?

20 visualizaciones (últimos 30 días)
Hello,
I'm trying to create a GUI for Model In loop Regression testing using the Matlab script. Here I have 100 testcases,
I want to select single testcase out of 100 and that selected testcase should run. I want the format to look like below
  1. Testcase 1
(i)TestCase1a
(ii)TestCase2a
2. TestCase 2
(i)TestCase1b
(ii)TestCse2b
etc
Currently, I'm using prompt command to enter the Testcase number I want to run. But I want to improvise this in GUI format which has all the testcases for the user selection.
Any inputs greatly appreciated!
Thank you!
  4 comentarios
Voss
Voss el 15 de Mzo. de 2024
Editada: Voss el 17 de Mzo. de 2024
You're welcome!
Here is a code structure you can use (you should take care that only one node is selected at a time, too):
function TreeSelectionChanged(app, event)
switch app.Tree.SelectedNodes
case app.Sensor1FaultNode % <- the name of Sensor1 Fault Node in your app
TC_RunNum = 10;
case app.Sensor2FaultNode % <- the name of Sensor2 Fault Node in your app
TC_RunNum = 11;
% etc.
end
% then run your script here
end
yogi
yogi el 16 de Mzo. de 2024
I have added the switch cases in the mlapp file
I tried to call this mlapp file from .m script by running
run("app1.mlapp");
Looks like it is not running that command and going through the other lines of the .m script. Below is the .m script(just initial couple of lines)
clc;
run("app1.mlapp");
TC_size = size(TC_data);
TC_row = TC_size(1);
TC_len = length(TC_data(:,TC_RunNum).Variables);
After running the above lines, it throughs the below error:
Unrecognized function or variable 'TC_RunNum'.
Error in RunSelectTC (line 40)
TC_len = length(TC_data(:,TC_RunNum).Variables);
I have mentioned the TC_RunNum in the .mlapp file like below
methods (Access = private)
% Selection changed function: Tree
function TreeSelectionChanged(app, event)
switch app.Tree.SelectedNodes
case app.FNRFltNode
TC_RunNum = 25;
case app.StrFltNode %
TC_RunNum = 28;
case app.PrkbrkswfltNode
TC_RunNum = 40;
case app.PBSolfltNode
TC_RunNum = 41;
end
Quesions:
  1. How to call the mlapp file in the .m script? so that user can select the testcase.
  2. The mlapp file which I'm creating is only for the testcase selection. Once the user selects the testcase, it should come back to the .m script. Should I add any logic over here in the mlapp script to go back to .m script? Or something to do add in the m script?
Thank you!!

Iniciar sesión para comentar.

Respuesta aceptada

Voss
Voss el 17 de Mzo. de 2024
Editada: Voss el 17 de Mzo. de 2024
I misunderstood the situation before; I thought you were running a script from an app, not the other way around.
If all you need is a single selection to set a variable in your script, you can run a simple GUI (not an app) from your script. Something like this would work. Here I'm using a popupmenu, but you could use a uitree.
function out = get_case_number()
f = figure( ...
'NumberTitle','off', ...
'IntegerHandle','off', ...
'HandleVisibility','off', ...
'Name','Select Case', ...
'Menubar','none', ...
'Toolbar','none', ...
'Units','pixels', ...
'Position',[300 400 200 140]);
p = uicontrol(f, ...
'Style','popupmenu', ...
'String',{'FNRFlt';'StrFlt';'Prkbrkswflt';'PBSolflt'}, ... % specify the case names
'UserData',[25;28;40;41], ... % and corresponding TC_RunNum value
'Value',1, ...
'Units','pixels', ...
'Position',[20 100 80 22]);
b = uicontrol(f, ...
'Style','pushbutton', ...
'String','Select', ...
'Units','pixels', ...
'Position',[30 20 65 22], ...
'Callback',@cb_button);
out = [];
uiwait(f);
function cb_button(~,~)
UD = get(p,'UserData');
out = UD(get(p,'Value'));
delete(f);
end
end
Then in your script, at the point where the user should make a selection, just say:
TC_RunNum = get_case_number();
and continue with the rest of the script, e.g.:
TC_size = size(TC_data);
TC_row = TC_size(1);
TC_RunNum = get_case_number();
TC_len = length(TC_data(:,TC_RunNum).Variables);
  12 comentarios
Voss
Voss el 20 de Mzo. de 2024
See the attached modifed m-file.
You need the uiwait in order to be able to return the selected value. But also the button needs a callback, which was missing for uibutton. I put that in place.
Also, Value means different things for a uicontrol button vs a uibutton (as described in the links I posted earlier), so I fixed the button callback to work for a uibutton.
I also repositioned the objects to have a reasonable initial arrangement.
yogi
yogi el 21 de Mzo. de 2024
Thank you so much!!
idx = find(strcmp(get(p,'Items'),get(p,'Value')),1);
Sorry, I did not understand 'Value' in the get command

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Develop uifigure-Based Apps en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by