Пакет: ModelAdvisor
Задает объекты детали результата
Как часть функции обратного вызова проверки, ModelAdvisor.ResultDetail
объекты создаются для каждого блока что find_system()
API возвращается как нарушение проверки. Сопоставлять эти объекты с ModelAdvisor.Check
объект, используйте setResultDetails
метод. ModelAdvisor.ResultDetail
объекты сохранены как ResultDetails
свойство ModelAdvisor.Check
класс.
setData | Сопоставьте идентификатор Simulink с ModelAdvisor.ResultDetail object |
Этот пример показывает детали результата, которые соответствуют выполнению проверки Check whether block names appear below blocks в AdvisorCustomizationExample
модель. Чтобы просмотреть файлы в этом примере, смотрите, Создают и Развертывают Пользовательскую конфигурацию Model Advisor.
defineDetailStyleCheck
проверяйте, что функция определения содержит DetailStyleCallback
проверяйте функцию обратного вызова. Возвратить элементы модели в system
это соответствует заданным критериям, DetailStyleCallback
функционируйте использует find_system
API. В этом примере, find_system()
API возвращает блоки, имя которых не появляется ниже блока (violationBlks
).
% find all blocks whose name does not appear below blocks violationBlks = find_system('System','Type','block','NamePlacement','alternate','ShowName', 'on');
ModelAdvisor.ResultDetail
создает ResultDetailObjs
для каждого элемента модели, возвращенного find_system
API. Когда violationBlks
пусто, ElementResults
набор состоит из отдельного объекта. Name,Value
пары задают набор для ненарушенной проверки. Для этого типа набора, Simulink.ModelAdvisor.setCheckResultStatus(true)
метод указывает, что проверка не нарушена и отображает Passed
на Model Advisor.
В этом примере кода, find_system
API не идентифицирует блоки, имя которых появляется ниже блока, поэтому ElementResults
обеспечивает информационное содержимое только.
if isempty(violationBlks) ElementResults = ModelAdvisor.ResultDetail; ElementResults.IsInformer = true; ElementResults.Description = 'Identify blocks where the name is not displayed below the block.'; ElementResults.Status = 'All blocks have names displayed below the block.'; mdladvObj.setCheckResultStatus(true);
Когда find_system
API возвращает список элементов модели, которые соответствуют заданным критериям, ModelAdvisor.ResultDetail
класс создает ResultDetailObjs
объект для каждого элемента в violationBlks
. Name,Value
пары задают ElementResults
как набор объектов, которые нарушают проверку. Для этого набора, Simulink.ModelAdvisor.setCheckResultStatus(false)
метод указывает, что проверка нарушена и отображает Warning
или Failed
на Model Advisor. Simulink.ModelAdvisor.setActionEnable(true)
метод включает способности устранить проблему нарушения проверки от Model Advisor.
В этом примере кода, find_system
API возвращает список блоков, имя которых появляется ниже блока. ElementResults
включает каждый ResultDetailObjs
объект, который нарушает проверку и предоставляет рекомендуемое сообщение действия для фиксации нарушения проверки.
else ElementResults(1,numel(violationBlks))=ModelAdvisor.ResultDetail; for i=1:numel(ElementResults) ElementResults(i).setData(violationBlks{i}); ElementResults.Description = 'Identify blocks where the name is not displayed below the block.'; ElementResults.Status = 'The following blocks have names that do not display below the blocks:'; ElementResults.RecAction = 'Change the location such that the block name is below the block.'; end mdladvObj.setCheckResultStatus(false); mdladvObj.setActionEnable(true);
ModelAdvisor.Check.setResultDetails
метод сопоставляет результаты с проверкой (CheckObj
).
CheckObj.setResultDetails(ElementResults);
После выполнения проверки можно просмотреть результаты в Model Advisor как набор, такой как рекомендуемым действием, блоком или подсистемой. Чтобы задать этот стиль отчета, задайте 'DetailStyle
'как стиль коллбэка в ModelAdvisor.Check.setCallbackFcn
метод.
% Create ModelAdvisor.Check object and set properties. rec = ModelAdvisor.Check('com.mathworks.sample.detailStyle'); rec.Title = 'Check whether block names appear below blocks'; rec.TitleTips = 'Check position of block names'; rec.setCallbackFcn(@DetailStyleCallback,'None','DetailStyle');