以编程方式报告诊断消息
您可以使用 sldiagviewer
函数在诊断查看器中生成、显示和记录诊断消息。
通过使用这些函数,您可以通过编程方式:
创建新诊断阶段。
在诊断查看器中报告诊断消息。
在文本文件中记录诊断消息。
创建诊断阶段
诊断查看器组织并显示Diagnostic Message Pane中不同阶段的错误、警告和信息性消息。每个阶段代表一个运行时操作,例如模型加载、仿真、构建或图更新。随着更多操作的发生,新阶段被创建。对于涉及多项操作的情况,创建子阶段以形成层次结构。
要初始化一个阶段,并记录将要执行的运行时操作的诊断消息,请使用 sldiagviewer.createStage
函数创建一个阶段对象。如果在不结束当前阶段的情况下创建新阶段对象,则新阶段是当前阶段的子阶段。
要结束一个阶段,请关闭阶段对象。如果您删除某个父阶段对象,诊断查看器中的父阶段和子阶段将关闭。
创建显示诊断消息的阶段
使用 sldiagviewer.createStage
创建一个在诊断查看器中显示诊断消息的阶段。
加载模型 DiagnosticDemo
。
model = "DiagnosticDemo";
load_system(model);
创建一个显示诊断消息的阶段。
myStage = sldiagviewer.createStage("Analysis","ModelName",model);
创建阶段后,您可以在 Analysis
阶段的诊断查看器中报告下一次 Simulink® 操作的诊断信息。有关详细信息,请参阅Diagnostic Viewer。
报告诊断消息
使用 sldiagviewer.reportError
、sldiagviewer.reportWarning
和 sldiagviewer.reportInfo
函数分别在诊断查看器中报告错误、警告和信息性消息。
也可以选择指定生成诊断消息的组件或产品的名称,例如 Simulink
、Model Advisor
或 Stateflow
。
报告错误消息
使用 sldiagviewer.reportError
在诊断查看器中显示错误消息。
加载模型 DiagnosticDemo
。
model = "DiagnosticDemo";
load_system(model);
创建一个显示诊断消息的阶段。
myStage = sldiagviewer.createStage("Analysis","ModelName",model);
在 try
代码块中引入错误,并在 catch
块中捕获产生的错误。
try i = p; catch error end
在诊断查看器中报告错误消息。
output = sldiagviewer.reportError(error)
该模型的诊断窗口打开,并在 Analysis
阶段以红色显示错误消息。
在文件中记录诊断消息
使用 sldiagviewer.diary
函数在文本文件中记录诊断消息和编译信息。
默认情况下,sldiagviewer.diary
使用系统的默认字符编码将诊断消息记录在当前文件夹中的文本文件 diary.txt
中。您还可以指定记录消息的文件名,并将字符编码设置为 UTF-8。有关详细信息,请参阅Log Diagnostic Messages in Specific File和Specify Character Encoding of Log File。您还可以在当前日志文件中将记录状态切换到 on
或 off
。
切换文件记录状态
使用 sldiagviewer.diary
按文件创建日志并切换记录状态。
创建日志文件 diary.txt
并打开记录。
sldiagviewer.diary
加载模型 DiagnosticDemo
。
model = "DiagnosticDemo";
open_system(model);
在模型中引入错误。
set_param("DiagnosticDemo/Gain","Gain","xyz");
对模型进行仿真。
set_param(model,"SimulationCommand","Start")
这些错误记录在 diary.txt
中。
再次在模型中引入错误。
set_param("DiagnosticDemo/Gain","Gain","abc");
关闭记录。
sldiagviewer.diary("off")
对模型进行仿真。
set_param(model,"SimulationCommand","Start")
这些错误没有记录在 diary.txt
中。