CallbackStyle property

Тип функции обратного вызова

Значения

'DetailStyle'
'StyleOne' (по умолчанию)
'StyleTwo'
'StyleThree'

Описание

The CallbackStyle свойство задает тип функции обратного вызова.

'DetailStyle'

Проверьте функцию обратного вызова для детального набора результатов. рекомендуется.

'StyleOne'

Простая проверка функции обратного вызова.

'StyleTwo'

Подробная проверка функции обратного вызова

'StyleThree'

Проверяйте функцию обратного вызова с гиперссылками результатов

Примеры функций обратного вызова

Чтобы использовать формат по умолчанию отчета 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);