Define Custom Event Data - MATLAB & Simulink (original) (raw)

Main Content

Class Event Data Requirements

Suppose that you want to create a listener callback function that has access to specific information when the event occurs. This example shows how by creating custom event data.

Events provide information to listener callback functions by passing an event data argument to the specified function. By default, MATLAB® passes an event.EventData object to the listener callback. This object has two properties:

Provide additional information to the listener callback by subclassing the event.EventData class.

Define and Trigger Event

The SimpleEventClass defines a property set method (see Property Get and Set Methods) from which it triggers an event if the property is set to a value exceeding a certain limit. The property set method performs these operations:

classdef SimpleEventClass < handle properties Prop1 = 0 end events Overflow end methods function set.Prop1(obj,value) orgvalue = obj.Prop1; obj.Prop1 = value; if (obj.Prop1 > 10) % Trigger the event using custom event data notify(obj,'Overflow',SpecialEventDataClass(orgvalue)); end end end end

Define Event Data

Event data is always contained in an event.EventData object. The SpecialEventDataClass adds the original property value to the event data by subclassing event.EventData:

classdef (ConstructOnLoad) SpecialEventDataClass < event.EventData properties OrgValue = 0 end methods function eventData = SpecialEventDataClass(value) eventData.OrgValue = value; end end end

Create Listener for Overflow Event

To listen for the Overflow event, attach a listener to an instance of the SimpleEventClass class. Use the addlistener method to create the listener. Also, you must define a callback function for the listener to execute when the event is triggered.

The function setupSEC instantiates the SimpleEventClass class and adds a listener to the object. In this example, the listener callback function displays information that is contained in the eventData argument (which is a SpecialEventDataClass object).

function sec = setupSEC sec = SimpleEventClass; addlistener(sec,'Overflow',@overflowHandler) function overflowHandler(eventSrc,eventData) disp('The value of Prop1 is overflowing!') disp(['Its value was: ' num2str(eventData.OrgValue)]) disp(['Its current value is: ' num2str(eventSrc.Prop1)]) end end

Create the SimpleEventClass object and add the listener:

sec = setupSEC; sec.Prop1 = 5; sec.Prop1 = 15; % listener triggers callback

The value of Prop1 is overflowing! Its value was: 5 Its current value is: 15

See Also

Topics