MATLAB与C#之间的双向通信

本文关键字:双向通信 之间 MATLAB | 更新日期: 2023-09-27 18:26:28

我有一个第三方MATLAB工具箱,它对一组数据执行一些计算。我正在用C#设计一个基于Windows窗体的应用程序,将其与MATLAB工具箱集成。以下是主要要求-

  1. 可以从MATLAB调用Windows窗体,即C#应用程序
  2. 如果使用在Windows窗体中执行任何操作,窗体应该能够调用该方法并将参数传递给MATLAB工具箱。表单也应该能够获得MATLAB返回的数据
  3. 此外,如果用户在MATLAB中修改数据/参数,则应将其反映在Windows窗体中

从谷歌搜索中,我得到了大量使用COM方法从MATLAB调用C#应用程序的结果。我正在寻找MATLAB和C#之间的双向通信。请注意,沟通应尽可能快。

MATLAB与C#之间的双向通信

我已经尝试过做一些与此相关的事情,您可以看到我在这个问题中得到的解决方案。最终,如果你计划在两个程序之间进行任何有意义的交互,你就必须使用COM。我研究过UIAutomation,但不幸的是,Matlab没有公开任何可以使用的东西。

单独回答您的问题:

  1. 使用shell转义调用C#应用程序应该非常简单。您的应用程序应该支持命令行参数,或者使用某种互操作将任何内容传递给正在运行的应用程序实例(请参阅3)
  2. 这也是可行的。请参阅相关问题,了解如何与C#中正在运行的Matlab实例进行互操作
  3. 这将是最困难的部分。你必须在应用程序中编写自己的COM服务器,并在Matlab中创建一个COM客户端来与你的应用程序进行互操作。但这并不是自动的,因为用户必须键入某种命令才能从Matlab启动互操作。我能想到的唯一方法是让你的应用程序在固定的时间间隔内使用COM轮询Matlab的工作空间,并找出是否有任何变化(既不简单也不高效)

结论?这通常是太多的工作,你最好只写一个Matlab GUI。如果你需要.NET框架的任何功能,你可以简单地使用Matlab的.NET接口。