Passing a changing logical variable (boolean constant) to AppDesigner from Simulink during the simulation.
35 views (last 30 days)
Show older comments
I have already written a GUI in AppDesigner in which buttons are pressed to change logical variables in the Simulink model during the simulation. I have used an event listener in the subsystem callbacks to do this and it works fine. I now have to run some code in AppDesigner which depends on the state of a boolean constant (1 or 0 / true or false) in the Simulink model which changes during the simulation - I am doing this manually using a radio button (see pic).
The constant is connected to a subsystem using an input port (port number 1) as shown. In order to change a button icon, I am then trying to pick up the value in AppDesigner using the following code using rto.InputPort:
methods (Access = private)
function results = updateGUI(app, rto, b)
if ~isvalid(app) || (now-app.lastTime)*24*60*60 < 0.5
return
else
app.lastTime = now;
end
portData = rto.InputPort(1);
app.valve_open = portData;
if app.valve_open == 1
app.SB_1_Button.Icon = 'icon_1.jpg';
elseif app.valve_open == 0
app.SB_1_Button.Icon = 'icon_2.jpg';
end
end
end
I suspect my problem is something to do with the syntax of the "portData = rto.InputPort(1)" line. Either way, portData is not being picked up and hence the logic is not working. Any ideas anybody?
Kind Regards and Thanks
Neil
0 Comments
Accepted Answer
More Answers (1)
Gayathri
on 20 Nov 2024 at 5:26
I understand that you are trying to import a value from Simulink model into the App.
This can be done by directly getting the value in variable “rto” using the following command.
rto = get_param('Modelname/HP1_Blow_Valve','value');
The variable “rto” will contain the value ‘0’/’1' as a character value. So, we will have to convert it to a double value before storing it in “valve_open” and use it to set the icon of the “Button”. This can be implemented as shown below.
app.valve_open = str2double(rto);
if app.valve_open == 1
app.Button.Icon = 'icon_1.jpg';
else
app.Button.Icon = 'icon_2.jpg';
end
This would help set different icons for the “Button” depending on the value imported from the Simulink model.
For more information on “get_param” function, please refer to the following documentation link.
Hope you find this information helpful.
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!