simulink模型、模块、端口、GUI回调函数
回调函数的概念及作用
回调是当某些事件发生时被调用的方法,例如在玩游戏时,键盘上键可以控制方向向上,是因为按下上键时,此事件被调用且被识别,让电脑知道你要向上走。
model的回调函数,为什么只显示CloseFcn
1.新建model,找到model explorer
2.在edit下找到properties
3.点击callback,并在CloseFcn下用disp函数写出对应函数名,最后点击ok,在关闭model前需要保存,不然callback里的设置会消失
当关闭model时,matlab命令行会显示CloseFcn
4.InitFcn的用法
Constant value设为A变量
Scope中就显示10
5.更多用法可用help文档搜索Model Callbacks,找到Model Callback Parameter,(中文文档链接链接: link.找到模型回调参数)
block的回调函数
1.对模块进行回调,例如以下两个模块
注意这里只是对一个模块(constant)使用回调函数
2.在constant模块下点击右键,选择properties/属性
3.同model回调函数,通过添加disp函数,可执行相应动作触发事件,了解回调函数
模块端口的回调函数
当对信号线进行处理时发生的事件
这里只对红色处的端口进行回调函数
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
3.icon/图标&port可以设置属性
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)