从回调中获取数据

时间:2016-12-15 13:03:57

标签: matlab callback

我想在不使用MATLAB中的全局变量的情况下从回调中接收数据。这不适用于GUI编程,而是使用rossubscriber。我尝试过以下方法:

function [mySub] = myFunction(cloudTopic)
    testHandle.a = 0;
    mySub = rossubscriber(cloudTopic,{@mySub_CB,testHandle}, 'BufferSize', 30);
end

function mySub_CB(src, msg, objHandle)
objHandle.a = objHandle.a + 1
end

因为我在Mathworks文档

上阅读了这篇文章
  

注意:还有其他方法可以从回调中提取信息   使用全局变量的函数。例如,您可以传递句柄   object作为回调函数的附加参数。见   回调定义文档以获取有关定义的更多信息   回调函数。

不幸的是,这不起作用。 testHandle未更新,并且不断显示1。怎么做对了? :)

1 个答案:

答案 0 :(得分:1)

问题是因为testHandlestruct 而不是一个handle object,与handle个对象不同,structs是通过价值不是通过参考。

您最简单的选择可能是mySub_CB {em} ,然后它可以访问和修改myFunction工作空间中的变量

myFunction