Тип функции обратного вызова
'DetailStyle' |
'StyleOne' (по умолчанию) |
'StyleTwo' |
'StyleThree' |
The CallbackStyle
свойство задает тип функции обратного вызова.
| Проверьте функцию обратного вызова для детального набора результатов. рекомендуется. |
| Простая проверка функции обратного вызова. |
| Подробная проверка функции обратного вызова |
| Проверяйте функцию обратного вызова с гиперссылками результатов |
Чтобы использовать формат по умолчанию отчета Model Advisor, используйте функцию обратного вызова подробного набора результатов. Ключевое слово для этой функции обратного вызова DetailStyle
. Для определения проверки требуется это ключевое слово. С форматом по умолчанию вы не должны использовать ModelAdvisor.FormatTemplate
класс или другие API-интерфейсы Model Advisor Formatting для форматирования результатов, отображаемых в Model Advisor. Этот стиль также позволяет просматривать результаты по блокам, подсистемам или рекомендуемым действиям.
Для примеров смотрите Исправить модель, чтобы соответствовать условиям, которые вы задаете с помощью Model Advisor и Создать функцию определения проверки для проверки прохождения/отказа без действия исправления.
Если форматирование по умолчанию не соответствует вашим потребностям, используйте один из других стилей функции обратного вызова и ModelAdvisor.FormatTemplate
API или другие форматирующие API.
Функция обратного вызова набора результатов принимает следующие аргументы
Аргумент | Тип ввода-вывода | Описание |
---|---|---|
system | Вход | Путь к модели или подсистеме, проанализированной Model Advisor. |
CheckObj | Вход | ModelAdvisor.Check объект |
Чтобы указать, прошла ли модель или не прошла проверку, или рекомендовать устранить проблему с помощью API Model Advisor Formatting для форматирования результатов, используйте функцию простого обратного вызова проверки. Ключевое слово для этой функции обратного вызова StyleOne
. Для определения проверки требуется это ключевое слово.
Функция обратного вызова простого чека принимает следующие аргументы.
Аргумент | Тип ввода-вывода | Описание |
---|---|---|
system | Вход | Путь к модели или подсистеме, проанализированной Model Advisor. |
result | Выход | MATLAB® вектор символов, который поддерживает вызовы API Model Advisor Formatting или встроенные HTML для форматирования текста. |
Используйте функцию подробного обратного вызова для возврата и организации результатов в виде строк многоуровневым иерархическим способом. Функция предоставляет два выходных аргументов, чтобы можно было связать текстовые описания с одним или несколькими абзацами подробной информации. Ключевое слово для подробной функции обратного вызова StyleTwo
. Для определения проверки требуется это ключевое слово.
Подробная функция обратного вызова принимает следующие аргументы.
Аргумент | Тип ввода-вывода | Описание |
---|---|---|
system | Вход | Путь к модели или системе, проанализированный Model Advisor. |
ResultDescription | Выход | Массив ячеек из символьных векторов MATLAB, который поддерживает Вызовы Model Advisor Formatting или встроенные HTML для форматирования текста. Model Advisor конкатенирует ResultDescription вектор символов с соответствующим массивом ResultDetails векторы символов. |
ResultDetails | Выход | Массив ячеек из массивов ячеек, каждый из которых содержит один или несколько векторы символов. The ResultDetails массив ячеек должен быть такой же длины, как и ResultDescription массив ячеек. |
В этом примере показана функция подробной проверки обратного вызова, которая проверяет настройки оптимизации для симуляции и генерации кода.
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 Formatting или встроенные HTML для форматирования текста. |
ResultDetails | Выход | Массив ячеек из массивов ячеек, каждый из которых содержит один или несколько Simulink® объекты, такие как блоки, порты, линии и Stateflow® чарты. Объекты должны быть в форме указателя или пути Simulink. The ResultDetails массив ячеек должен быть такой же длины, как и ResultDescription массив ячеек. |
Model Advisor автоматически конкатенирует каждый вектор символов с ResultDescription
с соответствующим массивом объектов из ResultDetails
. Model Advisor отображает содержимое ResultDetails
как набор гиперссылок, по одной для каждого объекта, возвращаемого в массивах ячеек. При клике гиперссылки Model Advisor отображает целевой объект, подсвеченный в модели Simulink.
Этот пример показывает функцию обратного вызова с гиперссылкой результатов. Этот пример проверяет модель на последовательное использование типа шрифта и размера шрифта в его блоках. Он также содержит входные параметры, действия и вызов Model Advisor Result Explorer, которые описаны в последующих разделах.
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);