主要内容

本页采用了机器翻译。点击此处可查看英文原文。

为目标计算机的事件创建监听器

本示例演示了如何为在 Simulink® Real-Time™ 目标计算机上发生的事件定义 MATLAB® 监听器。监听器通过一个代表目标计算机的 Target 对象来检测事件。本示例中,监听器监听的 Target 对象事件包括:

  • 目标计算机已连接

  • 目标计算机已断开连接

  • 目标计算机上已安装实时应用程序

  • 目标计算机已开始运行实时应用程序

  • 目标计算机停止运行实时应用程序

注意:与其定义监听器,不如使用 EventManager 组件来管理一组事件观察者和回调函数。有关详细信息,请参阅EventManager

创建目标对象并连接

该代码创建了一个 Target 对象来表示目标计算机,并连接到该目标计算机。在命令行窗口中,输入:

tg = slrealtime;
connect(tg);

开放模型并编译实时应用

为了演示如何处理与目标对象和实时应用程序相关的事件,本示例使用了模型 slrt_ex_osc

model = 'slrt_ex_osc';
open_system(model);
modelSTF = getSTFName(tg);
set_param(model,"SystemTargetFile",modelSTF);

构建实时应用程序

要构建模型,请在命令行窗口中输入:

evalc('slbuild(model)');

创建目标对象和事件监听器

该代码为某些目标计算机事件定义了 MATLAB 监听器。

listenerConnected = listener(tg,'Connected',@(~,~)disp('Connected to target computer'));
listenerDisconnected = listener(tg,'Disconnected',@(~,~)disp('Disconnected from target computer'));
listenerLoaded = listener(tg,'Loaded',@(~,~)disp('Loaded application on target computer'));
listenerStarted = listener(tg,'Started',@(~,~)disp('Started application on target computer'));
listenerStopped = listener(tg,'Stopped',@(~,~)disp('Stopped application on target computer'));

监听目标对象事件发出的监听器消息

该代码执行一系列目标计算机操作,并在各操作之间设置暂停,以便留出时间观察事件状态消息。

load(tg,model);
start(tg);
stop(tg);
disconnect(tg);
Loaded application on target computer
Started application on target computer
  Importing Log file 1 of 1 ...
Stopped application on target computer
Disconnected from target computer

运行脚本以观察监听器的运行情况

要观察 Target 对象事件监听器的运行情况,请运行该脚本。

run CreateListenersForTargetComputerEventsExample

关于目标对象事件的更多信息

要列出可用的 Target 对象事件,请使用 events(tg) 函数。有关目标计算机事件的信息,请参阅Target对象事件列表。有关 MATLAB 监听器的更多信息,参阅 事件和侦听程序概述

bdclose(model);