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