Пакет: ModelAdvisor
Определяет объекты детализации результатов
Как часть функции обратного вызова проверки, ModelAdvisor.ResultDetail
объекты создаются для каждого блока, find_system()
API возвращается как нарушающий проверку. Чтобы связать эти объекты с ModelAdvisor.Check
объект, используйте setResultDetails
способ. The ModelAdvisor.ResultDetail
объекты сохраняются как ResultDetails
свойство ModelAdvisor.Check
класс.
setData | Связать идентификатор Simulink с объектом ModelAdvisor.ResultDetail |
В этом примере показаны подробные данные результата, которые соответствуют выполнению проверки Check whether block names appear below blocks в AdvisorCustomizationExample
модель. Чтобы просмотреть файлы в этом примере, смотрите Создание и развертывание Пользовательского строения Model Advisor.
The 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
набор состоит из одного объекта. The 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
. The Name,Value
пары задают ElementResults
как набор объектов, нарушающих проверку. Для этого набора, Simulink.ModelAdvisor.setCheckResultStatus(false)
метод задает, что проверка нарушена, и отображает Warning
или Failed
на Model Advisor. The 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);
The 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');