我将非常感谢您的帮助、建议或建议。我有一个使用同步接口控制大地测量仪器的应用程序。但是,某些命令本质上是异步的,例如GetReflectors
. 触发此命令后,我会收到与可用反射器数量一样多的服务器答案。所以我注册了一个 COM 事件并关联处理函数。到目前为止,一切都很好。我可以显示即将到来的数据,但我不知道如何将一些变量传递给主函数。我试图将变量保存为 .mat 文件或 .txt 文件并读取它。实际上它在 Matlab 中工作,但在编译的 .exe 应用程序中不起作用(错误触发事件)。甚至disp
命令在已编译的应用程序中不起作用(不显示任何内容)。所以主要问题是:如何将变量从处理程序传递到主函数。有办法吗?全局变量?谢谢菲利普
编辑:我正在添加一个代码来演示这个问题......我需要保存反射器名称和反射器 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