APPdesingnerを使用した場合のアプリ間の数値の引き渡しについて
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Aというメインアプリにてfor文でループさせ、ある条件(if文)でTrueのときにBアプリを起動させfor文の値をBアプリに渡す方法を教えてください。
具体的には、Aアプリを実行した際に、下記のプログラムが流れて、Bアプリ(record)が立ち上がるように考えており、Bアプリにはfor文のidxの値を渡したいと考えております。
%カメラデータが保管してあるエクセルの読込
caminfo = readtable('camera_adress.xlsx');
caminfo = table2cell(caminfo);
%NWカメラobjectを作成するためにエクセルのカメラ情報を読取camに格納
for idx = 1:height(caminfo)
cam = ipcam(caminfo{idx,1},caminfo{idx,2},caminfo{idx,3});
eval(['cam',num2str(idx) '= cam'])
%もし、4列目の値が1であればrecordアプリを立ち上げて録画を開始。
if caminfo{idx,4} ==1
record%Bアプリ(record.mlapp)
end
end
0 comentarios
Respuestas (1)
Kojiro Saito
el 24 de Mzo. de 2022
ドキュメント(マルチウィンドウ アプリでのデータ共有)が参考になると思います。
openExample('matlab/TopLevelMultiwindowAppExample','supportingFile','DialogAppExample');appdesigner('MainAppExample');
で2つのアプリ間のデータやり取りの例を確認できます。
メインアプリAのプロパティにアプリBのプロパティを入れておき、
properties (Access = private)
RecordApp % Record app
end
Bの(recordApp.mlapp)のコードオプションの入力引数に「idx」を入れておきます。recordだと既存の関数と名前が競合してしまうので、ここではrecordApp.mlappというファイル名にしています。
コードオプションの入力引数に「idx」を入れると、自動的にBのstartupFcnにidxが追加されるので、この値を使います。
メインアプリAから呼び出すときにAのidxの値をBに渡します。
if caminfo{idx,4} ==1
app.RecordApp = recordApp(idx);
end
また、Aを終了したときにBが終了するように、AのコールバックでUIFigureに対してCloseRequestFcn関数を設定します。
CloseRequestFcnの中では、Bのアプリのオブジェクト(app.RecordApp)をdeleteする行を追加します。
function UIFigureCloseRequest(app, event)
delete(app.RecordApp)
delete(app)
end
以上参考になれば幸いです。
Ver también
Categorías
Más información sobre MATLAB Support Package for IP Cameras en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!