最新のリリースでは,このページがまだ翻訳されていません。このページの最新版は英語でご覧になれます。
この例では,スタンドアロンのStateflow®チャートでグラフィカルユーザーインターフェイスのロジックをモデル化する方法を説明します。スタンドアロンのチャートは,MATLAB®をアクション言語として经典チャートのセマンティクスを実装します。金宝app仿真软件®でのコード生成が制限されている関数を含めて,MATLABのすべての機能を使用してチャートをプログラミングできます。詳細については,MATLABオブジェクトとして実行するStateflowチャートの作成を参照してください。
スタンドアロンのStateflowチャートは,その入力イベントを呼び出して,時相演算子を使用することによって実行できます。イベントドリブンおよびタイマードリブンの実行ワークフローは、ヒューマンマシン インターフェイス (HMI) およびグラフィカル ユーザー インターフェイス (UI) の基となるロジックの設計に適しています。
MATLAB应用程序设计师を使用する場合は,インターフェイスウィジェットからのコールバック関数がチャート内のイベントを呼び出します。
Stateflowチャートでは,時相演算子とローカルデータがユーザーインターフェイスのプロパティを制御します。
MATLABを使用してグラフィカルユーザーインターフェイスを作成する方法の詳細については,程序设计师を使用したアプリ開発を参照してください。
このユーザーインターフェイスには,ランプを制御するオンとオフのスイッチが含まれています。スイッチが[在]の位置にある場合は,【模式】オプションボタンの位置によって,点灯(固体)または点滅(闪烁)のいずれかのモードでランプが光ります。点滅の速さは,闪烁速度]スライダーを動かして制御します。
ファイルsf_lamp_logic.sfx
は,ユーザーインターフェイスのロジックを実装するスタンドアロンのStateflowチャートを定義します。チャートには,入力イベント(在
、从
、闪烁的
および固体
)とローカルデータ(延迟
および应用程序
)が含まれています。チャート内のアクションは,各ステートからどのウィジェットにアクセス可能かを制御します。たとえば,从
ステートのアクションでは,ユーザーインターフェイスのランプウィジェット,【模式】オプションボタン,[闪烁速度]スライダーがグレー表示になります。
在
ステートでは,サブステート固体
と闪烁的
が2つの動作モードを示します。点滅するランプを実装するために,チャートは時相論理演算子后
に依存します。チャートがステート眨眼睛。从
に入ると,出力遷移上の式(延迟,sec)后
は,数秒後にチャートを実行するMATLABタイマーオブジェクトを作成します。その後チャートはステート眨眼睛。在
に遷移し,眨眼睛。从
に戻る遷移をトリガーする別のタイマーオブジェクトを作成します。チャートが2つのステートの間で遷移を続ける間,ローカルデータ遅延の値を変更して点滅の速さを調整したり,入力イベント固体
または从
を呼び出して点滅モードから出る遷移を実行したりできます。
在
ステートのヒストリジャンクションは,直近でアクティブだったサブステートに関する情報を保持して,ランプをオンにしたときにユーザーインターフェイスが前の動作モードに戻るようにします。
MATLABコマンドウィンドウで入力イベント関数を呼び出すことにより,スタンドアロンのチャートを実行できます。Stateflowエディターには、チャート アニメーションを使用してアクティブ ステートと遷移を強調表示することにより、これらの各コマンドの効果が表示されます。
1.Stateflowエディターでスタンドアロンのチャートを開きます。
编辑sf_lamp_logic.sfx
2.チャートオブジェクトl
を作成して延迟
0.5の値をに初期化します。この値は1秒あたり1回の点滅速度に対応します。
L = sf_lamp_logic (“延迟”, 0.5);
3.ランプをオンにします。
(左)
4.点滅モードに切り替えます。
眨眼(左)
5.延迟
0.25の値をに設定します。この値は1秒あたり2回の点滅速度に対応します。
L.delay = 0.25;
6.点灯モードに切り替えます。
固体(左)
7.ランプをオフにします。
(左)
8.チャートオブジェクトl
をMATLABワークスペースから削除します。
删除(左)
ユーザーインターフェイスとスタンドアロンのStateflowチャートの間に双方向接続を確立するには,软件设计师ウィンドウを開いて[コードビュー]を選択します。
1.程序设计师ウィンドウで,Stateflowチャートオブジェクトへのハンドルを保存するためのプライベートプロパティlampLogic
を作成します。
lampLogic . properties (Access = private结束
2.チャートオブジェクトを作成してそのローカルデータ应用程序
をユーザーインターフェイスハンドルに設定するコールバック関数StartupFcn
を作成します。チャートオブジェクトハンドルをlampLogic
プライベートプロパティに割り当てます。
%创建组件后执行的代码函数app. lamplogic = sf_lamp_logic(“延迟”, 0.5,“应用程序”、应用程序);结束
3.ユーザーインターフェイスを閉じたときにチャートオブジェクトを削除するコールバック関数CloseRequestFcn
を作成します。
%关闭请求功能:ui函数UIFigureCloseRequest(应用程序、事件)删除(app.lampLogic);删除(应用);结束
4.ユーザーインターフェイスのウィジェットごとに,スタンドアロンのチャートで適切なイベントを呼び出すコールバック関数を追加します。
开关ウィジェットのコールバック関数ValueChangedFcn
:
函数SwitchValueChanged(app,event) value = app. switch . value;开关低(值)情况下“关闭”(app.lampLogic);情况下“上”(app.lampLogic);结束结束
模式按钮ウィジェットのコールバック関数SelectionChangedFcn
:
函数ModeButtonGroupSelectionChanged(app,event) selectedButton = app. modebuttongroup . selectetobject;如果app.SolidButton == selectedButton SOLID(app.lampLogic);其他的眨眼(app.lampLogic);结束结束
闪烁速度滑块ウィジェットのコールバック関数ValueChangedFcn
:
函数app. lamplogic .delay = round(0.5/app. blinkrateslider . value,2);结束
ユーザーインターフェイスを実行すると,チャートキャンバス上およびランプウィジェット上での制御ウィジェットの調整の効果を観察できます。