以编程方式报告诊断消息
您可以使用 sldiagviewer
函数在诊断查看器中生成、显示和记录诊断消息。
您可以使用以下函数以编程方式报告诊断消息:
用于创建阶段的函数:
sldiagviewer.createStage
用于报告诊断消息的函数:
sldiagviewer.reportError
sldiagviewer.reportWarning
sldiagviewer.reportInfo
用于记录诊断信息的函数:
sldiagviewer.diary
创建诊断阶段
在诊断查看器中,错误、警告和信息消息基于操作(例如,模型加载、仿真和编译等)分组显示。这些组称为阶段。您可以使用 sldiagviewer.createStage
函数来创建阶段。还可以为阶段对象创建子阶段。要创建子阶段,父阶段对象必须处于活动状态。当您创建阶段对象时,Simulink® 将对阶段进行初始化。当您关闭阶段对象时,Simulink 将结束该阶段。如果您删除某个父阶段对象,诊断查看器中对应的父阶段和子阶段将关闭。创建阶段的语法为:
stageObject = sldiagviewer.createStage(StageName,'ModelName',ModelNameValue)
在此语法中,
StageName
指定阶段的名称,它是一个必需参数,例如'Analysis'
。使用
'ModelName'
,ModelNameValue
对组指定阶段的模型名称,例如'ModelName'
,'vdp'
。所有子阶段均从其父阶段继承模型名称。
创建阶段的示例
my_stage = sldiagviewer.createStage('Analysis','ModelName','vdp');
报告诊断消息
您可以使用 sldiagviewer
函数在诊断查看器中报告错误、警告或信息消息。报告诊断消息的语法为:
sldiagviewer.reportError(Message)
:报告错误消息。sldiagviewer.reportWarning(Message)
:报告警告。sldiagviewer.reportInfo(Message)
:报告信息消息。
Message
描述错误、警告或编译信息,是必需参数。Message
的值可以采用以下格式:
字符串
MSLException
或MException
对象
(可选)您可以在该语法中使用 'Component'
参数及其对应的值,指定生成消息的组件或产品,例如 'Simulink'
和 'Stateflow'
。
报告诊断信息的示例
% Create a Stage to display all the messages my_stage = sldiagviewer.createStage('Analysis', 'ModelName', 'vdp'); % Catch the error introduced in vdp as an exception. try sim('vdp'); catch error % Report the caught exception as warning sldiagviewer.reportWarning(error); end % Report a custom info message to Diagnostic Viewer sldiagviewer.reportInfo('My Info message');
记录诊断消息
您可以使用 sldiagviewer.diary
函数将仿真警告、错误和编译信息记录到文件中。生成日志文件的语法为:
sldiagviewer.diary
:截获传输到诊断查看器的编译信息、警告和错误,并将它们记录到当前目录中的文本文件diary.txt
中。sldiagviewer.diary(filename)
:切换由filename
指定的文本文件的日志记录状态。sldiagviewer.diary(toggle)
:切换日志记录功能。有效值为'on'
和'off'
。如果您没有指定日志文件名称,切换设置将应用于您为日志记录指定的最后一个文件名,或者应用于diary.txt
文件。sldiagviewer.diary(filename,'UTF-8')
:指定日志文件的字符编码。
在此语法中,
filename
指定用来记录数据的文件。toggle
将日志记录状态指定为'on'
或'off'
。
记录诊断消息
% Start logging build information and simulation warnings and errors to diary.txt sldiagviewer.diary open_system('vdp') set_param('vdp/Mu','Gain', 'xyz') set_param('vdp', 'SimulationCommand', 'Start') % This introduces an error and do UI simulation which you can see in the diary log % Open diary.txt to view logs. %### Starting build procedure for model: vdp %### Build procedure for model: 'vdp' aborted due to an error. %... % Set up logging to a specific file % Make sure you have write permission for this location sldiagviewer.diary('C:\MyLogs\log1.txt') % Switch the logging state of a file sldiagviewer.diary('C:\MyLogs\log2.txt') % Switch on logging and specify a log file. open_system('vdp') set_param('vdp/Mu', 'Gain', 'xyz') set_param('vdp', 'SimulationCommand', 'Start') sldiagviewer.diary('off') % Switch off logging. openExample('simulink_automotive/ModelingAFaultTolerantFuelControlSystemExample',... 'supportingfile','sldemo_fuelsys'); % Any operation you do after the previous command will not be logged sim('sldemo_fuelsys') sldiagviewer.diary('on') % Resume logging in the previously specified log file. % Specify the filename to log to and character encoding to be used sldiagviewer.diary('C:\MyLogs\log3.txt','UTF-8')