exponenta event banner

Свойство CallBackStyle

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

Ценности

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

Описание

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

'DetailStyle'

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

'StyleOne'

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

'StyleTwo'

Функция детального обратного вызова проверки

'StyleThree'

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

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

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