从MATLAB中的COM对象获取多个输出

时间:2019-04-01 09:15:49

标签: matlab com

我正在尝试使用CST的COM对象从MATLAB中的CST Microwave Studio读取一些数据。

首先,我通过执行得到项目COM对象的引用

hApp = actxserver(ProgID);
hProj = hApp.OpenFile(ProjectFile);

此时,通常COM服务器通过执行

返回COM对象的所有可用方法的签名。
MethSig = invoke(hProj);

在例如MS Office程序,但对CST COM对象什么也不返回...(这与Cis中未实现的IDispatch接口有关吗?)

无论如何,可以使用以下语法(从CST VBS文档中获取MethodName及其参数)来调用CST COM对象的方法:

Out1 = hProj.invoke(MethodName, In1, In2, ...)

但是,某些方法会返回多个输出参数,例如(同样,来自CST VBS文档):

GetParameterCombination( string  resultID, variant parameterNames, variant  parameterValues  ) bool

其中resultID是输入参数,parameterNamesparameterValues是输出参数。 在这种情况下,在其他支持COM的应用程序(例如MS Office)中,MATLAB负责输出参数的拆分,并且以下语法将起作用:

[Out1, Out2, ...] = hWorkSheet.invoke(MethodName, In1, In2, ...);
% or even using dot-notation:
[Out1, Out2, ...] = hWorkSheet.MethodName(In1, In2, ...);

但是,它不适用于CST:

[RetVal, parameterNames, parameterValues] = hProj.invoke('GetParameterCombination', '3D:RunID:1');
Error using Interface.CSTStudio_Application.Active3D/invoke
Error: Missing a required parameter

我试图以与this问题类似的方式传递输出参数,但是没有成功,总是出现错误:

Error using Interface.CSTStudio_Application.Active3D/invoke
Error: Type mismatch, argument 2

在这种情况下,有什么方法可以从COM对象获取所有输出变量吗? 也许是某种Java包装器?

谢谢。

0 个答案:

没有答案