simulink模型、模块、端口、GUI回调函数

回调函数的概念及作用

回调是当某些事件发生时被调用的方法,例如在玩游戏时,键盘上键可以控制方向向上,是因为按下上键时,此事件被调用且被识别,让电脑知道你要向上走。

model的回调函数,为什么只显示CloseFcn

1.新建model,找到model explorer
在这里插入图片描述
2.在edit下找到properties

Alt
3.点击callback,并在CloseFcn下用disp函数写出对应函数名,最后点击ok,在关闭model前需要保存,不然callback里的设置会消失
Alt

当关闭model时,matlab命令行会显示CloseFcn

Alt
4.InitFcn的用法
Constant value设为A变量
在这里插入图片描述
Alt
Scope中就显示10

5.更多用法可用help文档搜索Model Callbacks,找到Model Callback Parameter,(中文文档链接链接: link.找到模型回调参数)
在这里插入图片描述

block的回调函数

1.对模块进行回调,例如以下两个模块
注意这里只是对一个模块(constant)使用回调函数
在这里插入图片描述
2.在constant模块下点击右键,选择properties/属性
Alt
3.同model回调函数,通过添加disp函数,可执行相应动作触发事件,了解回调函数
Alt

模块端口的回调函数

当对信号线进行处理时发生的事件
这里只对红色处的端口进行回调函数
在这里插入图片描述
1.选中subsystem模块,在命令行或脚本输入以下

%得到所选模块的属性
get(gcbh);
%得到属性PortHandles的参数
port_h = get_param(gcb,'PortHandles');
%查看Inport属性
get(port_h.Inport);
%设置inport的ConnectionCallback
%my_callback是设置的一个函数
set_param(port_h.Inport,'ConnectionCallback','my_callback');

2.my_callback函数

function my_callback(~)
disp('ConnectionCallback called');
end

3.当这条线连接或断开时,在命令行会出现ConnectionCallback called
在这里插入图片描述

自定义控件GUI的回调函数

1.model插入subsystem模块

在这里插入图片描述

2.右键mask

Alt

3.icon/图标&port可以设置属性

Alt
在这里插入图片描述

4.创建简单GUI

在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
4.效果:
在这里插入图片描述
5.使用callback控制Parameter,要求User不勾选时,不显示Mode和Pullup,Mode为Output时不显示Pullup,先对Use Pin
进行callback
在这里插入图片描述
代码

usepin = get_param(gcbh,'g_use');
mode = get_param(gcbh,'g_mode');
mask_v = get_param(gcbh,'MaskVisibilities');
if strcmp('on',usepin)
    mask_v{2} = 'on';
    if strcmp('Input',mode)
        mask_v{3} = 'on';
    else
        mask_v{3} = 'off';
    end
else 
    mask_v{2} = 'off';
    mask_v{3} = 'off';
end
set_param(gcbh,'MaskVisibilities',mask_v)

6.对Mode进行callback,其代码为

mode= get_param(gcbh,'g_mode');
mask_v = get_param(gcbh,'MaskVisibilities');
if strcmp('Input',mode)
    mask_v{3} = 'on';
else
    mask_v{3} = 'off';
end
set_param(gcbh,'MaskVisibilities',mask_v)
在MatlabGUI里面启动或者暂停Simulink模型-start_and_stop_gui.m 针对这个问题:https://www.ilovematlab.cn/thread-23233-1-1.html 现在我做一个集中解答,从mathworks那里学习了一下。 第一步:创建你自己的Simulink模型,这个不用我讲吧,我们使用以下模型做演示: start_and_stop.mdl 第二步:创建自己的GUI, 这个论坛里也有例子,我们使用以下文件。 start_and_stop_gui.fig start_and_stop_gui.m Figure12.jpg 在start simulation里面,直接用sim函数,这个大家好像都会: % --- Executes on button press in startsim. function startsim_Callback % hObject handle to startsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data modelname = get; stoptime = str2num); sim复制代码 在stop simulation,里面,callback这样写: % --- Executes on button press in stopsim. function stopsim_Callback % hObject handle to stopsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data global GUIStopFlag; GUIStopFlag = 1; 复制代码第三步:写一个s函数,不停地检测这个GUIStopFlag参数,发送命令给STOP按钮,告诉他,可以结束了,简单吧? sysstop_new.m 第四步:在simulink模型里面,加上这个S函数 Figure13.jpg 好了,大功告成了,现在你就可以在GUI里随意控制Simulink模型了。 注:文中所用的模型GUI文件,由mathworks公司提供。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值