setCheckResultData
現在実行しているチェックの結果のデータを設定
説明
関数
を使用して、現在実行しているチェックについてチェック結果のデータを設定します。チェックのコールバック関数のみがこの関数を呼び出せます。関数 success
= setCheckResultData(ma
,data
)getCheckResultData
を使用してチェック結果データを取得できます。
この関数により、Simulink® Check™ ソフトウェアで使用できるオプションの機能であるモデル アドバイザーのカスタマイズ API を使用して作成したカスタム チェックの結果データを設定できます。詳細については、カスタム モデル アドバイザー チェックの定義 (Simulink Check)を参照してください。
例
カスタム モデル アドバイザー チェックを定義し、関数 setCheckResultData
を使用してデータをチェック コールバック関数からチェック アクション コールバック関数に渡します。
この例では、Simulink Check を使用します。
モデル例 sldemo_bounce
を開きます。
openExample('sldemo_bounce')
現在の作業フォルダーに sl_customization.m
ファイルを作成します。MATLAB® の [ホーム] タブの [新規スクリプト] をクリックします。次のコードをコピーして貼り付け、ファイルを sl_customization.m
という名前で保存します。
function sl_customization(cm) % register custom check with the customization manager object (cm) addModelAdvisorCheckFcn(cm,@defineModelAdvisorCheck); end % ----------------------------- % define Model Advisor Check % ----------------------------- function defineModelAdvisorCheck mdladvRoot = ModelAdvisor.Root; % Definition for my custom check rec = ModelAdvisor.Check('myCustomCheckID'); rec.Title = 'My Custom Check Title'; rec.setCallbackFcn(@myCustomCheckCallbackFunc,'None','StyleThree'); % Specify a "Fix" action myAction = ModelAdvisor.Action; myAction.Name = 'My Custom Check Action'; myAction.setCallbackFcn(@myCustomCheckAction); rec.setAction(myAction); mdladvRoot.publish(rec,'CUSTOM CHECK FOLDER'); end function [ResultDescription, ResultDetails] = myCustomCheckCallbackFunc(system) % Initialize empty arrays ResultDescription = {}; ResultDetails = {}; affectedBlockIDs = []; % Get the Model Advisor handle for the current model or subsystem mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system); % Find the "Terminator" blocks blockIDs = Simulink.findBlocksOfType(system,'Terminator'); % Check if the "Terminator" block hides the automatic block name % If the name is hidden, fail the check and enable the Action for i = 1:numel(blockIDs) if (get_param(blockIDs(i),'HideAutomaticName') == "on") setCheckResultStatus(mdladvObj,'fail'); setActionEnable(mdladvObj, 1); affectedBlockIDs = [affectedBlockIDs blockIDs(i)]; else setCheckResultStatus(mdladvObj, 'pass'); end end % Add the affected "Terminator" block IDs to the check result data setCheckResultData(mdladvObj, affectedBlockIDs); end function result = myCustomCheckAction(taskobj) mdladvObj = taskobj.MAObj; % Get the affected "Terminator" block IDs from the check results affectedBlocksIDs = getCheckResultData(mdladvObj, 'myCustomCheckID'); % Make the automatic name visible for the "Terminator" blocks for i=1:length(affectedBlocksIDs) set_param(affectedBlocksIDs(i),'HideAutomaticName','off'); end % create the return text result = ModelAdvisor.Paragraph; addItem(result, 'Updated "Terminator" blocks to show the automatic name.'); % disable the action button setActionEnable(mdladvObj, false); end
このコードは、モデル内の Terminator ブロックを検索し、該当するブロックが自動ブロック名を非表示にしているかどうかをチェックするカスタム チェックを定義します。自動ブロック名が非表示の場合、チェックは失敗し、自動ブロック名を表示するようにモデル内の Terminator ブロックを更新できるアクションが有効になります。このコードは、チェック コールバック関数で関数 setCheckResultData
を使用して、チェックに失敗したブロックの ID を保存します。アクション コールバック関数は関数 getCheckResultData
を使用してそのデータにアクセスします。カスタム チェック コールバック関数とアクション コールバック関数の詳細については、カスタム モデル アドバイザー チェックの定義 (Simulink Check)を参照してください。
環境を更新して、sl_customization.m
ファイルで定義されているカスタム モデル アドバイザー チェックを含めます。MATLAB コマンド ウィンドウで次のように入力します。
Advisor.Manager.refresh_customizations
モデルでモデル アドバイザーを開きます。
modeladvisor('sldemo_bounce')
カスタム モデル アドバイザー チェックを選択して実行します。左側のペインで [製品別] 、 [CUSTOM CHECK FOLDER] 、 [My Custom Check Title] を選択し、[チェックの実行] をクリックします。
sldemo_bounce
モデル内の Terminator ブロックが自動ブロック名を非表示にしているため、チェックは失敗します。
チェックを右クリックし、[このチェックを修正] をクリックします。
このチェックでは、自動ブロック名を表示するように Terminator ブロックを更新するアクション コールバックを実行します。チェックを再実行すると、今度はチェックは成功します。
入力引数
現在実行しているチェックについての結果のデータを設定する Simulink.ModelAdvisor
オブジェクト。
カスタム チェックについて指定する結果のデータ。
出力引数
モデル アドバイザーが現在実行中のチェックの結果データを正常に設定したかどうかを示す Boolean
値。値 1
は、モデル アドバイザーがデータを正常に設定したことを示します。値 0
は、モデル アドバイザーがデータを設定しなかったことを示します。
バージョン履歴
R2006a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)