Двусторонняя связь между MATLAB и C #

1

У меня есть сторонний набор инструментов MATLAB, который выполняет некоторый расчет по набору данных. Я разрабатываю приложение на основе Windows Form на С# для его интеграции с MATLAB Toolbox. Ниже приведены основные requirements-

  1. Приложение Windows Form, т.е. С#, может быть вызвано из MATLAB
  2. Если использование выполняет любую операцию в форме Windows, форма должна иметь возможность вызвать метод и передать параметры в MATLAB Toolbox. Форма должна иметь возможность получать данные, возвращенные MATLAB.
  3. Также, если пользователь изменяет данные/параметры в MATLAB, то он должен быть отражен в Windows Form.

Из Google Search у меня появилось много результатов, чтобы вызвать приложение С# из MATLAB с помощью COM-подхода. Я ищу двухстороннюю связь между MATLAB и С#. Обратите внимание, что сообщение должно быть максимально быстрым.

  • 0
    Любые предложения или подходы, пожалуйста
Теги:

1 ответ

1

Я пытался сделать что-то, связанное с этим, и вы можете увидеть решение, к которому я пришел в этом вопросе. В конечном итоге вам придется использовать COM, если вы планируете иметь какое-либо значимое взаимодействие между этими двумя программами. Я просмотрел UIAutomation, но, к сожалению, Matlab не предоставляет ничего, что вы можете использовать.

Чтобы ответить на ваши вопросы индивидуально:

  1. Должно быть довольно просто, используя escape-код оболочки, чтобы вызвать ваше приложение С#. Ваше приложение должно поддерживать аргументы командной строки или использовать какой-то interop для передачи чего-либо в исполняемый экземпляр вашего приложения (см. 3).
  2. Это также выполнимо. См. Связанный вопрос о том, как взаимодействовать с запущенным экземпляром Matlab из С#.
  3. Это будет трудная часть. Вам нужно будет написать свой собственный COM-сервер в своем приложении и создать COM-клиент в Matlab для взаимодействия с вашим приложением. Это не будет автоматически, так как ваш пользователь должен будет ввести какую-то команду для инициирования взаимодействия из Matlab. Единственный способ, с помощью которого я могу думать, что это автоматический, - это заставить ваше приложение просматривать рабочую область Matlab с помощью COM в фиксированные интервалы времени и выяснить, изменилось ли что-либо (не просто и не эффективно).

Вывод? Это, как правило, слишком много работы, чтобы вас беспокоить, и вам гораздо лучше просто написать графический интерфейс Matlab. Если вам нужны какие-либо функции из платформы.NET, вы можете просто использовать интерфейс Matlab.NET.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню