我以为我可以区分event and guard。但我遇到了一个与守卫类似的事件:
counter > 4 [pin is high] / switch on
^^^^^^^^^^^
event
我将变量计数器从小于 4 的某个值更改为大于 4 的值作为事件。这是否意味着事件也可以是像守卫这样的条件?
An event是触发转变的事情。在你的情况下counter > 4
是一个变化事件,意思是“计数器值已更改,其值现在大于 4".
括号内的代码是guard。在你的情况下pin is high
, 意义 ”仅当引脚为高电平时才会启用转换".
switch on
is the behavior当执行转换时执行。
脚注:在您的示例中,该事件确实与守卫非常相似。
在 C 中它可能看起来像这样:
/**
* this interrupt is triggered when the
* counter exceeds the threshold (4)
*/
static void counter_isr(void)
{
if (pin_is_high(PIN))
switch_on();
}
来自 UML 2.5 规范:
14.2.3.8 转换...
一个 Transition 可能拥有一组 Trigger,每个 Trigger 指定一个 Event
其发生在调度时可能会触发对
过渡。如果已分派,则称转换触发器已启用
事件发生与其事件类型匹配。
14.2.4.9 过渡...
转换的默认文本符号定义为
以下 BNF 表达式:
[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
换句话说:trigger [guard] / behavior
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)