Пакет: 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 for i=1:numel(violationBlks) ElementResults(1,i) = ModelAdvisor.ResultDetail; end for i=1:numel(ElementResults) ModelAdvisor.ResultDetail.setData(ElementResults(i), 'SID',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');