【问题标题】:How can I react to events from a master statechart in Yakindu?我如何对来自 Yakindu 的主状态图的事件做出反应?
【发布时间】:2021-10-30 02:09:27
【问题描述】:

我有一个状态图,它依赖于另一个状态图。让我们称他们为主人和奴隶。

在 Slave 状态图中,我导入 Master 并将其分配给一个变量。

import: "Master.ysc"
var master: Master

假设 Slave 状态图在 StateA 中,当 Master 触发事件 B 时,它想转到 StateB。然后作为转换触发器,我使用master.B

我的问题是从状态图看不到主事件。在 Slave 的 init 方法中生成的(Python)代码self.master = None,它始终保持在None。有没有办法正确地做到这一点?

我还尝试直接从 Master 中引发 Slave 中的事件,如 this 问题:

import: "Slave.ysc"
var slave: Slave

raise slave.goto_b

但是在这里我也有一个问题,参考是无。

    self.slave.raise_goto_b()
AttributeError: 'NoneType' object has no attribute 'raise_goto_b'

我是否遗漏了一些简单的东西(对主/从变量的赋值或其他东西),还是 Python 绑定有问题?

【问题讨论】:

    标签: statechart


    【解决方案1】:

    我确实错过了一项任务。我应该更加努力地回答this question

    所以我将主状态机的引用发送给从属。在主要:

    master_fsm = MasterFsm()
    slave_fsm = SlaveFsm(master_fsm)
    

    “Fsms”在生成的类中有一个sm 属性。 所以在 SlaveFsm 的 init 方法中我做了:

    def __init__(self, master_fsm):
        self.sm = Slave()
        self.sm.master = master_fsm.sm
    

    然后它就起作用了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      相关资源
      最近更新 更多