加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

GUI和simulink的数据交换

(2017-05-26 17:45:15)
     这是端午节前的帖子啦,节假日和周末不写,太懒。
     前一段时间在做GUI的时候遇见的一个问题就是simulink和GUI的数据交互。在前面已经介绍了一个数据访问的方法,但是感觉挺滑稽的,而且很多的时候在搭simulink模型的时候为了简化模型,直接使用s函数来写。这样再进行数据交互就比较布置措施了。在GUI设计学习手记里,都是喜欢使用全局变量的方法。这个是很简单的。
    首先搭建一个模型,要实现的功能是将s函数中设置的增益在GUI的编辑框中显示出来(就是说显示GUI的一些数据到GUI的显示器里),当然这是为了举例咱们使用的是s函数来实现。模型的名称是wsx
http://s7/mw690/00688zkAzy7bntTroAC76&690
然后就在outpu写下一句简单的话

然后搭建GUI 模型,命名为GUI11
http://s6/bmiddle/00688zkAzy7bnxOZtGJ25&690
然后在s函数的输出下写的是
function sys=mdlOutputs(t,x,u)
global a
a=9;
sys=a*u;
就是说增益是9;
然后在GUI11的按钮下写的是:
open('wsx')
sim('wsx')
global a;

set(handles.edit1,'String',num2str(a));
这样的一句话就实现了。http://s10/bmiddle/00688zkAzy7bnxZXeR329&690
我不喜欢GUI的一点就是写程序的时候字母打错了或者说有些单词拼错了自己检查不出来。这个会非常浪费时间,我也没有办法。
以上举的例子的实用的意义是,如果你想从simulink中输出一堆数据到GUI的显示器里,实用这个s函数就会非常简单,比如希望输出5个数据显示到GUI中的5个编辑器里。可以这样:
function sys=mdlOutputs(t,x,u)
global a
a=u;
sys=[];
在GUI下按钮的程序是
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

open('wsx')
sim('wsx')
global a;

set(handles.edit1,'String',num2str(a(1)));
set(handles.edit2,'String',num2str(a(2)));
set(handles.edit3,'String',num2str(a(3)));
set(handles.edit4,'String',num2str(a(4)));
set(handles.edit5,'String',num2str(a(5)));
对,就是这样,结果是
好吧,就写这么多吧。完成了数据从模型到GUI的传递。就是记住不要直接复制我的程序,要自己写一遍,写一遍然后自己调。因为很多东西很容易写错。
嗯,周末和端午节就不写了,过了端午节再写博客!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有