信号(Signal)

 

目录

    1. 定义信号
    2. 接收(Reception)中应用信号类型
    3. 活动图中“发送信号动作”和“接收事件动作”中应用信号类型

信号代表对象之间异步通讯的一种数据结构。信号也是一种类目(是Classifier的特化类型),但是信号只能有“属性”(Property)这一种特征。

“信号”工具在模块定义图的工具栏中,定义一个信号元素的方法和定义模块的方法一致。

信号可以定义在某个包中,在定义模块(block)的接收(Reception)时使用。

信号作为异步通讯的数据使用,意思是发送信号的模块执行发送动作之后,他不会等待接收模块返回消息,而是直接进行下面的动作。但是接收模块执行和这个信号对应的接收(Reception)行为之后,是有可能返回数据给发送模块的。发送模块对这个返回数据的处理是在一个事件中进行处理的。

定义信号

操作方法:从模块定义图的工具栏拉出信号工具到图中,然后通过节点的右键菜单或拖拽属性工具到节点上,为信号添加属性。

例如,在下图中定义了一个名称为“SensorData”代表传感器数据的信号类型。

接收(Reception)中应用信号类型

在模块的“接收”(Reception)中,选择某个“接收”,右键“选择类型”,选择一个信号元素作为类型。选择之后,接收的名称、参数会自动采用信号的名称、属性。

如下图中定义了一个传感器网络的案例。其中“接收数据服务”模块有一个信号类型为“SensorData”的接收。这个接收的“方法”(Method)是一个名称为“数据接收和存储”的活动。也就是说,这个“SensorData”接收的实现是在“数据接收和存储”这个行为的活动图中体现的。在后面案例说明中展示了这个活动的活动图内容。

活动图中“发送信号动作”和“接收事件动作”中应用信号类型

在上图中“传感器组件”模块有一个“数据发送”活动(Activity),这个活动的活动图中有一个发送“SensorData”的发送信号动作,而这个发送信号动作的目标是“接收数据服务”。也就是它将把“SensorData”信号发送到“接收数据服务”模块,相当于调用了“接收数据服务”的“SensorData”接收,而这个接收将引发“数据接收和存储”活动。在“数据接收和存储”的活动图中有一个“接收事件动作”,它的触发器事件类型为“接收信号”事件,这个事件的信号类型为“SensorData”。所以,前面的“数据发送”动作发送的信号,最终传给了这个“接收事件动作”。图中,这个“接收事件动作”将类型为“SensorData”的“栓”(Pin)数据传给“存储传感器数据”动作。

 

上图中,设置“发送信号动作”的信号类型,通过节点的“设置信号类型”菜单。

 

在上图中,选择“接收事件动作”节点,通过右键菜单“设置触发器”,定义触发器的事件类型为信号事件,然后通过“选择信号”定义信号类型为“SendsorData”。操作界面如下: