我有一个第三方MATLAB工具箱,它对一组数据执行一些计算 . 我正在用C#设计一个基于Windows窗体的应用程序,以便将它与MATLAB Toolbox集成 . 以下是主要要求 -
-
可以从MATLAB调用Windows Form,即C#应用程序
-
如果uses在Windows窗体中执行任何操作,Form应该能够调用该方法并将参数传递给MATLAB Toolbox . 表格也应该能够获得MATLAB返回的数据 .
-
另外如果用户在MATLAB中修改数据/参数,那么它应该反映在Windows窗体中 .
从谷歌搜索,我得到了很多结果,通过使用COM方法从MATLAB调用C#应用程序 . 我正在寻找MATLAB和C#之间的双向通信 . 请注意,沟通应尽可能快 .
1 回答
我试图做一些与此相关的事情,你可以看到我在this question找到的解决方案 . 最后,你看了UIAutomation但不幸的是Matlab暴露了你无法使用的任何东西 .
单独解决您的问题:
使用shell转义来调用你的C#应用程序应该非常简单 . 您的应用程序应支持命令行参数,或使用某种互操作将任何内容传递给应用程序的正在运行的实例(请参阅3) .
这也是可行的 . 请参阅链接的问题,了解如何与C#中正在运行的Matlab实例互操作 .
这将是困难的部分 . 您将不得不在您的应用程序中编写自己的COM服务器,并在Matlab中创建一个COM客户端以与您的应用程序互操作 . 这在固定的时间间隔内使用COM赢得了't be automatic though since your user will have to type some kind of command to initiate the interop from Matlab. The only way I can think of making this automatic would be to have your app poll Matlab'的工作空间,并确定是否有任何变化(既不简单也不高效) .
结论?这通常是太多的工作需要打扰,而你只是编写一个Matlab GUI会好得多 . 如果您需要.NET框架中的任何功能,您只需使用Matlab's .NET interface即可 .