2016-12-15 1 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 

내가

참고 매스 웍스 문서에이 글을 읽을 때문에 : 전역을 사용하는 외에 콜백에서 기능을 정보를 추출하는 다른 방법이 있습니다 나는 다음과 같은 노력했다. 예를 들어 콜백 함수에 추가 인수로 핸들을 전달할 수 있습니다. 콜백 함수를 정의하는 방법에 대한 자세한 내용은 콜백 정의 설명서를 참조하십시오.

불행히도 이것은 작동하지 않습니다. 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 
의 작업 공간에서 변수를 액세스하고 수정할 수 있습니다
관련 문제