Тип функции обратного вызова
'DetailStyle' |
'StyleOne' (значение по умолчанию) |
'StyleTwo' |
'StyleThree' |
CallbackStyle свойство задает тип функции обратного вызова.
| Проверяйте функцию обратного вызова на подробный набор результата. (Рекомендуемый). |
| Простая функция обратного вызова проверки. |
| Подробная функция обратного вызова проверки |
| Проверяйте функцию обратного вызова со связанными гиперссылками результатами |
Чтобы использовать формат по умолчанию отчета Model Advisor, используйте подробную функцию обратного вызова набора результатов. Ключевым словом для этой функции обратного вызова является DetailStyle. Определение проверки требует этого ключевого слова. С форматом по умолчанию вы не должны использовать ModelAdvisor.FormatTemplate класс или другие API Форматирования Model Advisor, чтобы отформатировать результаты, которые появляются в Model Advisor. Этот стиль также позволяет вам просматривать результаты блоком, подсистемой или рекомендуемым действием.
Для примеров смотрите, Фиксируют Модель, чтобы Выполнить Условия, которые Вы Задаете С Model Advisor и Создаете Функцию Определения Проверки для Проверки Передачи/Сбоя без Действия Фиксации.
Если форматирование по умолчанию не удовлетворяет ваши потребности, используйте один из других стилей функции обратного вызова и используйте ModelAdvisor.FormatTemplate API или другие API форматирования.
Подробная функция обратного вызова набора результатов берет следующие аргументы
| Аргумент | Тип ввода-вывода | Описание |
|---|---|---|
system | Входной параметр | Путь к модели или подсистеме анализируется Model Advisor. |
CheckObj | Входной параметр | ModelAdvisor.Check объект |
Чтобы указать, передала ли модель или привела проверку к сбою, или рекомендовать устранить проблему с помощью API Форматирования Model Advisor, чтобы отформатировать результаты, используют простую функцию обратного вызова проверки. Ключевым словом для этой функции обратного вызова является StyleOne. Определение проверки требует этого ключевого слова.
Простая функция обратного вызова проверки берет следующие аргументы.
| Аргумент | Тип ввода-вывода | Описание |
|---|---|---|
system | Входной параметр | Путь к модели или подсистеме анализируется Model Advisor. |
result | Вывод | Вектор символов MATLAB®, который поддерживает Model Advisor, Форматирующий вызовы API или встроенные HTML-тэги для текстового форматирования. |
Используйте подробную функцию обратного вызова проверки, чтобы возвратить и организовать результаты как строки многоуровневым, иерархическим способом. Функция обеспечивает два выходных аргумента, таким образом, можно сопоставить текстовые описания с одним или несколькими абзацами подробной информации. Ключевым словом для подробной функции обратного вызова является StyleTwo. Определение проверки требует этого ключевого слова.
Подробная функция обратного вызова берет следующие аргументы.
| Аргумент | Тип ввода-вывода | Описание |
|---|---|---|
system | Входной параметр | Путь к модели или системе анализируется Model Advisor. |
ResultDescription | Вывод | Массив ячеек векторов символов MATLAB, который поддерживает Model Advisor, Форматирующий вызовы API или встроенные HTML-тэги для текстового форматирования. Model Advisor конкатенирует ResultDescription вектор символов с соответствующим массивом ResultDetails векторы символов. |
ResultDetails | Вывод | Массив ячеек массивов ячеек, каждый из которых содержит один или несколько векторов символов. ResultDetails массив ячеек должен быть той же длиной как ResultDescription cellArray. |
Этот пример показывает подробную функцию обратного вызова проверки что настройки оптимизации проверок для симуляции и генерации кода.
function [ResultDescription, ResultDetails] = SampleStyleTwoCallback(system) ResultDescription ={}; ResultDetails ={}; model = bdroot(system); mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system); % get object mdladvObj.setCheckResultStatus(true); % init result status to pass % Check Simulation optimization setting ResultDescription{end+1} = ModelAdvisor.Paragraph(['Check Simulation '... 'optimization settings:']); if strcmp(get_param(model,'BlockReduction'),'off'); ResultDetails{end+1} = {ModelAdvisor.Text(['It is recommended to '... 'turn on Block reduction optimization option.',{'italic'}])}; mdladvObj.setCheckResultStatus(false); % set to fail mdladvObj.setActionEnable(true); else ResultDetails{end+1} = {ModelAdvisor.Text('Passed',{'pass'})}; end % Check code generation optimization setting ResultDescription{end+1} = ModelAdvisor.Paragraph(['Check code generation '... 'optimization settings:']); ResultDetails{end+1} = {}; if strcmp(get_param(model,'LocalBlockOutputs'),'off'); ResultDetails{end}{end+1} = ModelAdvisor.Text(['It is recommended to'... ' turn on Enable local block outputs option.',{'italic'}]); ResultDetails{end}{end+1} = ModelAdvisor.LineBreak; mdladvObj.setCheckResultStatus(false); % set to fail mdladvObj.setActionEnable(true); end if strcmp(get_param(model,'BufferReuse'),'off'); ResultDetails{end}{end+1} = ModelAdvisor.Text(['It is recommended to'... ' turn on Reuse block outputs option.',{'italic'}]); mdladvObj.setCheckResultStatus(false); % set to fail mdladvObj.setActionEnable(true); end if isempty(ResultDetails{end}) ResultDetails{end}{end+1} = ModelAdvisor.Text('Passed',{'pass'}); end
Чтобы автоматически отобразить гиперссылки для каждого объекта, возвращенного проверкой, используйте функцию обратного вызова связанными гиперссылками результатами. Ключевым словом для этого типа функции обратного вызова является StyleThree. Определение проверки требует этого ключевого слова.
Эта функция обратного вызова берет следующие аргументы.
| Аргумент | Тип ввода-вывода | Описание |
|---|---|---|
system | Входной параметр | Путь к модели или системе анализируется Model Advisor. |
ResultDescription | Вывод | Массив ячеек векторов символов MATLAB, который поддерживает Model Advisor, Форматирующий вызовы API или встроенные HTML-тэги для текстового форматирования. |
ResultDetails | Вывод | Массив ячеек массивов ячеек, каждый из которых содержит один или несколько объектов Simulink®, таких как блоки, порты, линии и графики Stateflow®. Объекты должны быть в форме пути Simulink или указателя. ResultDetails массив ячеек должен быть той же длиной как ResultDescription cellArray. |
Model Advisor автоматически конкатенирует каждый вектор символов от ResultDescription с соответствующим массивом объектов от ResultDetails. Model Advisor отображает содержимое ResultDetails в виде набора гиперссылок, один для каждого объекта, возвращенного в массивах ячеек. Когда вы кликаете по гиперссылке, Model Advisor отображает целевой объект, подсвеченный в вашей модели Simulink.
Этот пример показывает функцию обратного вызова проверки связанными гиперссылками результатами. Этот пример проверяет модель на сопоставимое использование типа шрифта и размера шрифта в его блоках. Это также содержит входные параметры, действия и вызов Проводника Результата Model Advisor, которые описаны в более поздних разделах.
function [ResultDescription, ResultDetails] = SampleStyleThreeCallback(system) ResultDescription ={}; ResultDetails ={}; mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system); mdladvObj.setCheckResultStatus(true); needEnableAction = false; % get input parameters inputParams = mdladvObj.getInputParameters; skipFontCheck = inputParams{1}.Value; regularFontSize = inputParams{2}.Value; regularFontName = inputParams{3}.Value; if skipFontCheck ResultDescription{end+1} = ModelAdvisor.Paragraph('Skipped.'); ResultDetails{end+1} = {}; return end regularFontSize = str2double(regularFontSize); if regularFontSize<1 || regularFontSize>=99 mdladvObj.setCheckResultStatus(false); ResultDescription{end+1} = ModelAdvisor.Paragraph(['Invalid font size. '... 'Please enter a value between 1 and 99']); ResultDetails{end+1} = {}; end % find blocks inside current system allBlks = find_system(system); % block diagram doesn't have font property % get blocks inside current system that have font property allBlks = setdiff(allBlks, {system}); % find regular font name blocks regularBlks = find_system(allBlks,'FontName',regularFontName); % look for different font blocks in the system searchResult = setdiff(allBlks, regularBlks); if ~isempty(searchResult) ResultDescription{end+1} = ModelAdvisor.Paragraph(['It is recommended to '... 'use same font for blocks for a uniform appearance in the model. '... 'The following blocks use a font other than ' regularFontName ': ']); ResultDetails{end+1} = searchResult; mdladvObj.setCheckResultStatus(false); myLVParam = ModelAdvisor.ListViewParameter; myLVParam.Name = 'Invalid font blocks'; % pull down filter name myLVParam.Data = get_param(searchResult,'object')'; myLVParam.Attributes = {'FontName'}; % name is default property mdladvObj.setListViewParameters({myLVParam}); needEnableAction = true; else ResultDescription{end+1} = ModelAdvisor.Paragraph(['Block font names '... 'are identical.']); ResultDetails{end+1} = {}; end % find regular font size blocks regularBlks = find_system(allBlks,'FontSize',regularFontSize); % look for different font size blocks in the system searchResult = setdiff(allBlks, regularBlks); if ~isempty(searchResult) ResultDescription{end+1} = ModelAdvisor.Paragraph(['It is recommended to '... 'use same font size for blocks for a uniform appearance in the model. '... 'The following blocks use a font size other than ' ... num2str(regularFontSize) ': ']); ResultDetails{end+1} = searchResult; mdladvObj.setCheckResultStatus(false); myLVParam = ModelAdvisor.ListViewParameter; myLVParam.Name = 'Invalid font size blocks'; % pull down filter name myLVParam.Data = get_param(searchResult,'object')'; myLVParam.Attributes = {'FontSize'}; % name is default property mdladvObj.setListViewParameters... ({mdladvObj.getListViewParameters{:}, myLVParam}); needEnableAction = true; else ResultDescription{end+1} = ModelAdvisor.Paragraph([' Block font sizes '... 'are identical.']); ResultDetails{end+1} = {}; end mdladvObj.setActionEnable(needEnableAction); mdladvObj.setCheckErrorSeverity(1); % enddocexample check_callback_hyperlink_fcn % - % Sample StyleOne callback function, % please refer to Model Advisor API document for more details. % - % begindocexample simple_check_callback_fcn function result = SampleStyleOneCallback(system) mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system); % get object if strcmp(get_param(bdroot(system),'ScreenColor'),'white') result = ModelAdvisor.Text('Passed',{'pass'}); mdladvObj.setCheckResultStatus(true); % set to pass mdladvObj.setActionEnable(false); else result = ModelAdvisor.Text(['It is recommended to select a Simulink '... 'window screen color of white for a readable and printable model.']); mdladvObj.setCheckResultStatus(false); % set to fail mdladvObj.setActionEnable(true);