Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

以编程方式报告诊断消息

您可以使用 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 的值可以采用以下格式:

  • 字符串

  • MSLExceptionMException 对象

(可选)您可以在该语法中使用 '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')

相关主题