도움, 조언 또는 제안에 매우 감사드립니다. 동기 인터페이스를 사용하여 측지 도구를 제어하는 응용 프로그램이 있습니다. 그러나 일부 명령은 그 특성상 비동기식입니다. GetReflectors
. 이 명령을 실행하면 사용 가능한 반사기 수만큼의 서버 응답을받습니다. 그래서 나는 COM 이벤트를 등록하고 핸들러 함수를 연관시켰다. 여태까지는 그런대로 잘됐다. 나는 데이터를 표시 할 수 있지만 주 변수에 변수를 전달하는 방법을 모르겠습니다. 변수를 .mat 파일이나 .txt 파일로 저장하려고 시도했습니다. 사실 Matlab에서 작동하지만 컴파일 된 .exe 응용 프로그램에서는 작동하지 않습니다 (오류 발생 이벤트). 심지어 disp
명령은 컴파일 된 응용 프로그램에서 작동하지 않습니다 (아무 것도 표시하지 않음). 그래서 주된 질문은 핸들러에서 주요 기능으로 변수를 전달하는 방법입니다. 방법이 있습니까? 전역 변수? 고마워요 Filip이벤트 핸들러에서 변수 전달하기
편집 : 문제를 demostrate하는 코드를 추가하고 있습니다 ... 사용자가 하나를 선택할 수 있도록 (리플렉터가 여러 개 있기 때문에) 리플렉터 이름과 리플렉터 ID를 저장해야합니다.
function pushbutton_GetReflectors_Callback(hObject, eventdata, handles)
ltsync = actxserver ('LTControl.LTCommandSync2'); %Act as server: LTConnect2
ltsync.events() %List of all COM events
ltsync.registerevent({'ReflectorsData' 'ReflectorsHandler'}) %Register event
ltsync.GetReflectors() %Ask instrument for reflectors
pause(3) %Time to receive answers
end
function ReflectorsHandler(varargin) %Handler of the event ReflectorsData
%var1,var2,reflectorID,reflectorName,var5,surfaceOffset,reflectorsTotal,var8,var9
disp('Reflector Data:');
disp(varargin{3}) %Reflector ID
disp(varargin{4}) %Reflector name
end
이것은 순전히 MATLAB입니까? 그렇다면'event.EventData'에서 클래스를 파생시켜이 작업을 수행 할 수 있다고 생각합니다. 예제를 게시합니다. – wakjah
예, 순수 MATLAB입니다. – flogs