2016-12-15 36 views
1

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社のドキュメントにこれを読んでいるので:グローバルを使用して、ほかのコールバックから 関数を情報を抽出する他の方法があります私は、次の試してみました。たとえば、コールバック関数の追加引数としてハンドル オブジェクトを渡すことができます。 コールバック関数の定義の詳細については、 コールバック定義のドキュメントを参照してください。

残念ながら、これは動作しません。 testHandleは更新されておらず、常に1が表示されます。これをどうやって行うのですか? :) testHandleがあるので

答えて

1

問題があるstructないhandle objecthandleオブジェクトとは異なり、structsはない参照することにより値で渡されます。

おそらくあなたの最も簡単なオプションはmySub_CBmyFunctionサブファンクションを作ることであろうし、それはmyFunction

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

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

end 
のワークスペース内の変数にアクセスして変更することができます
関連する問題