CallbackStyle property

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

Значения

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

Описание

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

'DetailStyle'

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

'StyleOne'

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

'StyleTwo'

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

'StyleThree'

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

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

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