概述
及时获取更多文章,欢迎关注个人微信公众号 AutoGeeker
在使用Simulink开发过程中,为了提高效率,多会借助M脚本实现批量修改、自动化处理等工作。
今天要介绍的是如何将你编写好的各种M脚本,与Simulink进行深度结合,通过菜单选项就可以直接运行你的脚本,而不是通过run 命令或者打开脚本文件再运行。
例如我们把实现一些自动处理的脚本都集成到一个‘工具箱’里,暂且叫MyTool,先预览一下效果:
菜单栏添加MyTool
右键菜单中添加MyTool
要实现上述功能,需要在MATLAB路径下,新建一个sl_customization函数,相关内容均可以在help中找到。除了添加自定义菜单外,在这个函数里其实还有可以自定义配置很多Simulink环境,有兴趣的可以仔细研究一下。
下面介绍一下使用M脚本如何实现功能:
Step1——使用cm对象的addCustomMenuFcn函数,添加自定义菜单
新建m文件,命名为sl_customization,新建函数如下:
贴一个Help中的示例:
上述脚本功能就是在Simulink菜单栏Tool选项下,新添加自定义菜单。其中‘Simulink:ToolsMenu’是特定的字符串,表示Tools菜单对应的标签,要想知道不同的菜单选项对应的是什么标签,那就先要做以下操作
在MATLAB命令行中输入一下内容运行:
cm = sl_customization_manager;
cm.showWidgetIdAsToolTip=true;
Simulink的界面会变成如下,每个菜单后面都显示了对应的标签,当你不需要显示标签时,命令行输入cm.showWidgetIdAsToolTip=false;即可,当然你也可以在help文档下的Menu Tags列表
我们可以看到原有的Tools菜单对应的标签是‘Simulink:ToolsMenu’
除此之外,如果你想直接自定义一个和Tools并列的菜单,而不是在Tools菜单之下,那对应的标签应当写成‘Simulink:MenuBar’,实现之后的效果就如前面介绍的预览效果。
相应的如果你想在右键菜单选项下新建,那对应的应该是‘Simulink:ContextMenu’。
另外一个 getMyMenuItems 是自定义菜单对应的函数句柄,这个实际可根据自己的命名规则自行命名,往下看Step2中创建对应的函数。
Step2——自定义菜单创建函数
这里我们以文章开头的效果预览为例,新建一个MyTool菜单,该菜单下包含Test1和Test2两个子菜单,其中Test1又包含两个子菜单Test1_1和Test1_2....,
这一步主要是对自定义的主菜单进行创建,指定主菜单名称,相应的子菜单句柄,代码如下:
因为MyTool下有两个子菜单,对于多级菜单需要将其定义成Container Schema Object,使用sl_container_schema进行创建
Container Schema Object中有两个属性必须进行定义
- label属性:指定该菜单的显示名称,这里显示为‘MyTool’
- childrenFcns属性 :指定子菜单对应的函数句柄
这里MyTool菜单包含多个子菜单,所以使用了Container Schema Object,如果你的MyTool菜单没有子菜单,即点击MyTool菜单选项后就执行相应的功能操作的话,就应当在这里直接使用Action Schema Object,使用sl_action_schema创建,并指定callback属性,childrenFcns属性也就不存在。
可以下面参照Step3中的function schema=AddItem1(callbackInfo)
Step3——自定义菜单创建函数(包含多级子菜单)
这一步主要是对Step2中的具体的菜单句柄AddItem0和AddItem1进行创建,可以理解为对主菜单下子菜单的创建,示例代码如下:
这里分两种情况,Test1菜单下还有两个子菜单,而Test2已经没有子菜单,点击Test2时即开始执行相应的功能操作
所以AddItem0中对Test1,使用sl_container_schema创建,与Step2中对MyTool的定义类似
- label 属性:指定菜单名称
- childrenFcns 属性:指定子菜单对应的函数句柄;
AddItem1中Test2, 需要Action Schema Object,使用sl_action_schema进行创建,并指定callback属性,即指定其菜单动作对应的回调函数。
因为上述Test1菜单下又有两个子菜单Test1Item1和Test1Item2,所以还需对这两个函数进行定义,定义方法和function schema=AddItem1(callbackInfo)类似,代码如下:
Step4——Action菜单回调函数
这一步主要是对菜单的Action回调函数进行创建,即具体指定点击菜单后执行什么样动作,示例代码如下:
这里方便演示,每个菜单对应的Action回调函数就写的比较简单,点击不同的菜单分别在命令窗口输出对应的提示符;如果你已经有比较成熟的脚本函数,就可以在Action函数中进行调用。
除了Action菜单 之外,其实还有Toggle菜单, 使用sl_toggle_schema进行创建,这种菜单即在点击该Toggle菜单后,相应的该菜单项显示会变化,比如前面打钩,选项凹陷等等,这里不做介绍。
另外,补充一个:
上述m脚本函数编写好后,保存,并确定已经在MATLAB文件路径下,命令行输入 sl_refresh_customizations
会对Simulink环境进行刷新,待刷新完成后,即可实现自定义菜单的显示;当然你也可以重新启动MATLAB实现刷新。
最终实现效果如下:
最后
以上就是难过面包为你收集整理的Java中的action函数干什么的_MATLAB自动化——实现Simulink环境中添加自定义菜单/右键菜单的功能...的全部内容,希望文章能够帮你解决Java中的action函数干什么的_MATLAB自动化——实现Simulink环境中添加自定义菜单/右键菜单的功能...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复