基于APP Designer 实现串口数据监测功能App总结(1)——函数间变量传递


基于R2016a版本,我做了一个实现串口数据监测功能的app。分篇总结一下,本文主要介绍函数间怎么实现变量的传递。

1、全局变量类型 global;

定义global类型的变量,即全局变量。
每一个要用到该全局变量的函数,都要重新声明 gloal x。当然,如果你在一个地方修改了 x的值,那么所有x的值就都变了!有的时候恐怕会出现紊乱。另一个更重要的问题在于,套用C++的一句话,全局变量破坏了程序的封装性!所以,全局变量是能少用尽量少用。

2、作为app的属性传递;

如下定义Serial变量
在这里插入图片描述
访问该变量的方式如下:

app.Serial

3、setappdata函数为句柄添加数据;

相关函数setappdata(obj,name,val)、getappdata(obj,name)、rmappdata(obj,name) ,其中obj为对象的句柄(可缺省,用 0来代替),name为变量名,val为给变量更新的值

举例:
定义变量COM,给变量赋值

setappdata(0,'COM',0);

获取COM的值

value=getappdata(0,'COM');

删除该变量

mappdata(0,'COM')

4、跨空间计算evalin和赋值assignin;

这里的跨空间跨的是matlab工作区和app 工作区两个函数运行的空间,在app工作区可以通过evalin和assignin实现与matlab工作区的交互。

  • Assignin函数基本语法
assignin(ws, 'var', val)

其中ws可赋值为’base’ or ‘caller’,分别表示基本工作空间和app工作空间,
Assinin函数将值val指定给工作空间ws中的变量var,若变量var不存在,则创建一个变量var。
从一个函数function向MATLAB工作空间中输入数据;
在一个函数function内部,需要改变一个在caller function函数工作空间中定义的变量,

  • evalin函数基本语法
evalin(ws, expression);
[a1, a2, a3, ...] = evalin(ws, expression);

在特定的工作空间ws执行MATLAB语句expression,expression执行返回值可以通过[a1, a2, a3, …] 读取。
举例,在app中获取文件名和路径后在matlab 工作区加载,代码如下:

    [filename,pathname] =uigetfile({'*.mat';'*.m';},'Select Cfg parameter','..\App\ParaCfg');          
    if ~filename              
      return;               
    end
    assignin('base','filename',filename);
    assignin('base','pathname',pathname); 
    evalin('base','load([pathname,filename]);');

5. 将数据保存到文件,需要时读取

save 存储数据
save (filename, var)%filename:存储的文件名;var 待存储的变量
load(importdata)加载数据
importdata(filename);

load(filename);

这种方式涉及到磁盘读写,速度当然会有影响的,一般情况不用,通常用在保存以及导入某个较大变量时才会使用!

更多方式:

还有其他的传递方式,但我感觉以上的几种基本上够用了,感兴趣的可以参考GUI的参数传递方式,和app 的原理基本上是一致的,不赘述。

  • 13
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

modolllee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值