Main Content

以编程方式报告诊断消息

您可以使用 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.reportErrorsldiagviewer.reportWarningsldiagviewer.reportInfo 函数分别在诊断查看器中报告错误、警告和信息性消息。

也可以选择指定生成诊断消息的组件或产品的名称,例如 SimulinkModel AdvisorStateflow

报告错误消息

使用 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 FileSpecify Character Encoding of Log File。您还可以在当前日志文件中将记录状态切换到 onoff

切换文件记录状态

使用 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 中。

另请参阅

工具

相关主题