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

从MATLAB中的COM对象获取多个输出,matlab,com,Matlab,Com,我试图在MATLAB中使用CST的COM对象从CST微波工作室读取一些数据 首先,我通过执行 hApp=actxserver(ProgID); hProj=hApp.OpenFile(ProjectFile); 此时,COM服务器通常通过执行 MethSig=invoke(hProj); 它在MS Office程序中运行良好,但对CST COM对象不返回任何结果。。。(是否与CST中未实现的IDispatch接口有关?) 无论如何,可以使用以下语法调用CST COM对象的方法(使用CST V

我试图在MATLAB中使用CST的COM对象从CST微波工作室读取一些数据

首先,我通过执行

hApp=actxserver(ProgID);
hProj=hApp.OpenFile(ProjectFile);
此时,COM服务器通常通过执行

MethSig=invoke(hProj);
它在MS Office程序中运行良好,但对CST COM对象不返回任何结果。。。(是否与CST中未实现的IDispatch接口有关?)

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

Out1=hProj.invoke(方法名,In1,In2,…)
但是,有些方法返回多个输出参数,例如(同样来自CST VBS文档):

GetParameterCombination(字符串结果、变量参数名称、变量参数值)bool
其中,
resultID
是输入参数,
parameterNames
parameterValues
是输出参数。 在这种情况下,在其他启用COM的应用程序(如MS Office)中,MATLAB负责输出参数拆分,以下语法将起作用:

[Out1,Out2,…]=hWorkSheet.invoke(MethodName,In1,In2,…);
%甚至使用点符号:
[Out1,Out2,…]=hWorkSheet.MethodName(In1,In2,…);
但是,它不适用于CST:

[RetVal,parameterNames,parameterValues]=hProj.invoke('getparametercomposition','3D:RunID:1');
使用Interface.CSTStudio_Application.Active3D/invoke时出错
错误:缺少必需的参数
我尝试过以与上述类似的方式传递输出参数,但没有成功,总是会出现错误:

Error using Interface.CSTStudio_Application.Active3D/invoke
Error: Type mismatch, argument 2
在这种情况下,有没有办法从COM对象获取所有输出变量? 也许是某种Java包装器


谢谢。

问题仍然是实际的。。。没有人知道?我不知道这是否有区别,但是
GetParameterCombination
的签名似乎有3个参数作为输入(即使其中2个也是输出)。在您的行
[RetVal,parameterNames,parameterValues]=hProj.invoke('GetParameterCombination','3D:RunID:1')您不应该再发送两个参数吗?即使它们实际上不会在Matlab中保存返回值,COM服务器也可能需要它们执行适当的操作(此外,错误消息
缺少所需参数
似乎表明它需要更多的输入…@Hoki,感谢您的评论。正如我在问题的结尾所提到的,我试图传递额外的参数(还提供了一个指向线程的链接,作者在那里尝试了类似的事情),但我总是得到错误
error:Type mismatch,argument 2
…您能显示产生此错误的完整行吗?(所以我们可以看到发送的参数是什么类型的)另外,这个Matlab工具箱能帮助您吗:?