发现者和记者减少时间和复杂性要求写代码的数量来查找和Simulink的报告金宝app®模型元素,如图表和块,并在状态流®图表和过渡等。金宝app仿真软件报告生成器™报告API是对DOM API之上的一层。它的发现者和记者都是基于Simulink和Stateflow的发现基类。金宝app指定要在其中找到特定元素,诸如在一个子系统的块或状态的图表中的容器中。取景器对象返回取景结果对象中的相应阵列中的他们的结果。
Simu金宝applink的报告API还包括记者类,返回容器的图像。此图片是一个模型的顶层。
通过取景器返回的每个结果对象有一个相关的报道对象,对这些报告的结果。记者对象保存的内容和格式的内容,如属性和数据图表。你记者对象添加到您的报告。使用MATLAB®报告API记者确定共同的报告要素。看到记者是什么?(MATLAB报告生成器)。
所有的发现者和记者有以下功能:
默认行为和价值
允许覆盖和定制它们的输出
所有发现者有找
,hasNext
和下一个
方法。的找
方法查找并返回结果中的对象的数组指定类型的每一个找到的元素的所有元素。的hasNext
和下一个
方法一次查找并返回一个元素,并用于遍历结果列表。的hasNext
方法检查容器是否具有指定类型的至少一个元素。如果容器有一个或多个元素,则hasNext
方法排队它的下一个
方法找到并返回结果对象。
所有记者都有预定义模板。每个记者的模板定义其格式,布局和内容的孔。除非你想自定义报表,您不需要更改模板或指定任何格式,布局,或孔。您可以通过复制和编辑它的默认模板或使用新的模板定义报表。编辑默认模板的副本给你一个起点和结构按照自定义您的模板。使用新的模板,可以完整地定义你的模板开始一个空白文件。要更改报告内容的顺序,重新排列模板中的孔。拾得人不使用模板。定制类记者另一种方法是通过继承它。
每个输出类型的默认报告模板位于模板库中,该模板库位于
matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ @ <记者> \资源\ templates \ <输出>
DiagramReporter
对于PDF输出matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ \ \ pdf模板\ default.pdftx @DiagramReporter \资源
Simu金宝applink报告API提供了这些查找程序、结果和报告程序类。要在报表生成器程序中使用这些类,必须创建类型容器slreportgen.report.Report
持有报告。
报告API类 | 描述 |
---|---|
slreportgen.finder.AnnotationFinder |
发现Simu金宝applink的框图注释。 |
slreportgen.finder.BlockFinder |
发现块中的Simulink框图。金宝app |
slreportgen.finder.BlockResult |
包含由发现了一个块BlockFinder 宾语。 |
slreportgen.finder.ChartDiagramFinder |
发现模型中的Stateflow图。 |
slreportgen.finder.DiagramElementFinder |
查找Simulink方框图或状态流图的元金宝app素。 |
slreportgen.finder.DiagramElementResult |
包含由发现的图元件DiagramElementFinder 宾语。 |
slreportgen.finder.DiagramFinder |
发现方框图示和图表在Simulink模型。金宝app |
slreportgen.finder.DiagramResult |
包含a找到的图表DiagramFinder 宾语。 |
slreportgen.finder.ModelVariableFinder |
查找Simulink模型使用的变量。金宝app |
slreportgen.finder.ModelVariableResult |
包含a找到的模型变量ModelVariableFinder 宾语。 |
slreportgen.finder.StateFinder |
在状态流图表中找到状态。 |
slreportgen.finder.StateflowDiagramElementFinder |
发现一个状态流图表的元素。 |
slreportgen.finder.SystemDiagramFinder |
查找在Simulink模型系统框图。金宝app |
报告API类 | 描述 |
---|---|
slreportgen.report.BusObject |
在报告金宝appSimulink.Bus 模型使用的对象。 |
slreportgen.report.Diagram |
创建的Simulink框图或状态流图表的快照。金宝app |
slreportgen.report.DocBlock |
在Simulink的报告金宝appDocBlock。 |
slreportgen.report.LookupTable |
在Simulink的查找表块的断点和输出点的报告。金宝app |
slreportgen.report.MATLABFunction |
在报告 |
slreportgen.report.ModelVariable |
报告在模型变量。 |
slreportgen.report.Notes |
关于Simulink或金宝appStateflow图表的报告说明。 |
slreportgen.report.金宝appSimulinkObjectProperties |
创建Simulink对象的属性表。金宝app |
slreportgen.report.StateflowObjectProperties |
创建Stateflow的对象的属性的表。 |
slreportgen.report.SystemHierarchy |
创建一个Simulink模型或子系统的子系统的嵌套列表。金宝app |
slreportgen.report.SystemIO |
Simulink的系统金宝app输入和输出信号的报告。 |
slreportgen.report.TruthTable |
Simulink的真值表块金宝app或Stateflow的真值表对象上的报告。 |
此示例显示如何查找和报告。中的所有Simulink块金宝appVDP
模型使用BlockFinder
类。生成的HTML报告包含默认信息,并为每个块使用默认格式。
导入报告API包,它让你使用类名称,而不包括其包名。例如,你可以使用BlockFinder
而不是slreportgen.finder.BlockFinder
。除了导入Simulink报告API基类之外,还要导入MAT金宝appLAB报告API基类。典型的报告包括标题页、目录、章节和小节,这些都是MATLAB报告API中的报告类。
进口slreportgen.finder。*进口slreportgen.report。*进口mlreportgen.report。*
加载VDP
模型。
MODEL_NAME = 'VDP';load_system(MODEL_NAME)
创建容器对象来保存报表并打开报表。在这种情况下,输出报告以压缩的形式保存vdp_model.htmx
HTML报告。你可以使用任何你想要的输出名称。如果您运行报告生成不止一次使用相同的输出文件名,输出文件将被覆盖。要使用Simu金宝applink的报告API发现者和记者在报表生成器程序,您必须使用完全合格的名称创建容器对象。
rpt = slreportgen.report.Report (“vdp_model”、“html”);打开(rpt)
添加一个章节并指定它的标题。
ch = Chapter(‘Simulink v金宝appdp模型中的块’);
使用BlockFinder
类来创建查找程序。在这种情况下,BlockFinder
发现模型中的所有的块。使用找
方法查找查找程序指定的块。
仪= BlockFinder (model_name);结果=找到(仪);
遍历find方法的结果并为每个块创建一个节,然后将块属性表添加到该节中。然后,将每个部分添加到本章中。在添加所有块之后,将该章节添加到报告中。
为结果=结果SECT =科( '标题',result.Name);添加(节,结果)加(CH,A节)末尾添加(RPT,CH);
关闭该报表和模型,并查看报告。
关闭(RPT);close_system(模型名称);rptview(RPT);
完整的程序是
。进口slreportgen.finder *进口slreportgen.report *进口mlreportgen.report *模型名称= 'VDP'。load_system(模型名称);rpt = slreportgen.report.Report (“vdp_model”、“html”);开放(RPT)CH =章( '块在Simulink VDP模型');金宝app仪= BlockFinder (model_name);结果=找到(仪);为结果=结果SECT =科( '标题',result.Name);添加(节,结果)加(CH,A节);最后添加(RPT,CH);接近(RPT)close_system(模型名称)rptview(RPT)
章节标题和章节标题和所得到的报告的前两个块的属性表被示出。
方法中查找所有块的PDF报告生成器sldemo_radar_eml
模型。
要查找所有的块,用BlockFinder
。的如果
声明显示了如何测试MATLAB功能块。使用MATLABFunction
记者报道MATLAB功能块的细节。的其他
声明显示了如何块比其他MATLAB功能块使用BlockFinder
找
方法的结果。
blkfinder = BlockFinder (model_name);黑色=找到(blkfinder);如果slreportgen.utils.isMATLABFunction(blks(i).Object)) rptr = MATLABFunction(blks(i).Object);秒=节(黑色(i) . name);add(sec,rptr) add(ch,sec) else sec = Section(blks(i).Name);添加(sec,黑色(我)添加(ch, sec)
blkfinder = BlockFinder (model_name);黑色=找到(blkfinder);
完整的程序是
。进口slreportgen.report *进口slreportgen.finder *进口mlreportgen.report *模型名称= 'sldemo_radar_eml'。load_system(模型名称)RPT = slreportgen.report.Report( '雷达', 'PDF');开放(RPT)blkfinder = BlockFinder(模型名称);黑色=找到(blkfinder);CH =章( '中的块sldemo_radar_eml模型');对于i = 1:长度(盖帽)如果slreportgen.utils.isMATLABFunction(盖帽(ⅰ).Object)RPTR = MATLABFunction(盖帽(ⅰ).Object);秒=节(黑色(i) . name);add(sec,rptr) add(ch,sec) else sec = Section(blks(i).Name);添加(秒,盖帽(i))的附加(CH,秒)结束端加载(RPT,CH)靠近(RPT)close_system(模型名称)rptview(RPT)
为a报告的信息的一个例子MATLAB功能块的MATLABFunction
记者
的信息的示例报告的找
的方法BlockFinder
是
这个例子说明如何发现和Stateflow的状态,转换和路口报告。它报告的control_logic
图表的sldemo_fuelsys
模型。
这部分代码使用StateFinder
和它的找
方法查找和图表中的状态报告。它通过循环状态中发现的阵列,并增加了每一个章节。
stFinder = StateFinder(SUBSYS);状态=找到(stFinder);对于状态=状态添加(章,状态)末尾添加(RPT,章)
要报告转换,请使用StateflowDiagramElementFinder
和它的找
方法。以显示与比默认更窄的宽度的属性表中,定制的输出。首先,获得记者的结果。要设置宽度,使用TableWidth
记者的财产。
章=章( '标题', '视线');trFinder = StateflowDiagramElementFinder ...( '容器',SUBSYS, '类型', '过渡');过渡=找到(trFinder);对于过渡=过渡RPTR = transition.getReporter;rptr.PropertyTable.TableWidth = '3英寸';加(章RPTR)末尾添加(RPT,章)
完整的程序是
导入mlreportgen.report *进口slreportgen.report *进口slreportgen.finder *模型名称= 'sldemo_fuelsys'。;load_system(模型名称);SUBSYS = strcat的(模型名称,... '/ fuel_rate_control / control_logic');RPT = slreportgen.report.Report( '输出', 'PDF');开放(RPT)TP =扉页( '标题',... 'sldemo_fuelsys的控制逻辑图');添加(RPT,TP)加载(RPT,TableOfContents);章=章( '标题', '国家');stFinder = StateFinder(SUBSYS);状态=找到(stFinder);对于状态=状态添加(章,状态)末尾添加(RPT,章)章=章(“标题”,“视线”); trFinder = StateflowDiagramElementFinder... ('Container',subsys,'Types','transition'); transitions = find(trFinder); for transition = transitions rptr = transition.getReporter; rptr.PropertyTable.TableWidth = '3in'; add(chapter,rptr) end add(rpt,chapter) close(rpt) close_system(model_name) rptview(rpt)