Тип функции обратного вызова
'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);