フィルターのクリア

How to connect matlab and C# to create a winform gui to run a simulink model

13 ビュー (過去 30 日間)
John Smith
John Smith 2020 年 10 月 16 日
回答済み: Mario Malic 2020 年 10 月 16 日
I am new to Matlab and trying to code a winform based GUI for a simulink model in C#. But i had issue about how to communicate them efficiently.
2 different ways i tried:
1) I tried is COM communication between C# to matlab but after loading model, it was frozen.
C# script for communicating matlab over COM:
MLApp.MLApp matlab = new MLApp.MLApp();
matlab.Visible = 0;
matlab.Execute(@"cd('path to model')");
matlab.Execute("model");
matlab.Execute("set_param('model','SimulationCommand','start')");
It looks like a buffer overflow to me but I couldn't find any resources on the subject.
How can i prevent freezing?
2) I tried to communicate c# and matlab to control simulink model using udp protocol. I coded a matlab script to be bridge. However, i realized that i need to create more than one thread that will communicate with each other. Eventhough i used parellel computing toolbox in matlab, i can not accomplish it.
matlab script :
u = udp('', 'LocalHost', '127.0.0.1', 'LocalPort', 49013);
fopen(u);
while(true)
command = fread(u);
if(command == 1)
%start model
set_param('model','SimulationCommand','start')
elseif(command == 3)
%pause model
set_param('model','SimulationCommand','pause')
.
.
.
else(command == 4)
%stop model
set_param('model','SimulationCommand','pause')
end
end
Is there a way to communicate threads each other in matlab?
Any suggestion would be nice.
  7 件のコメント
John Smith
John Smith 2020 年 10 月 16 日
It worked.
Thank you :D
Mario Malic
Mario Malic 2020 年 10 月 16 日
Ok, then I'll post my comments as an answer so you can close this question.

サインインしてコメントする。

採用された回答

Mario Malic
Mario Malic 2020 年 10 月 16 日
Based on the comments section, looks like this would be the way to start up the Simulink externally without freezing.
matlab.Execute("cd('path to model')");
matlab.Execute("start_simulink")
matlab.Execute("model");
% or
% matlab.Execute("open_system(model)");

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgrammatic Model Editing についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by