Yakindu中Slave状态机如何响应Master事件并解决Python引用为None问题
问题原因
你只声明了状态机引用变量的类型,没有手动为变量赋值,生成的Python代码会默认将这类引用属性初始化为None,这不是Python绑定的问题,属于遗漏了手动绑定引用的步骤。
解决方法
方案1:Slave监听Master事件实现需求
- 保留你原有Slave状态机的配置不变:
import: "Master.ysc" var master: Master # 过渡规则保持master.B触发跳转到StateB即可
- 在业务代码中实例化两个状态机后,启动状态机前手动为Slave的master属性赋值:
# 先实例化两个状态机 master = Master() slave = Slave() # 手动绑定引用 slave.master = master # 绑定完成后再启动状态机 master.start() slave.start()
完成以上步骤后,Slave即可正常识别Master触发的B事件,完成状态跳转。
方案2:Master主动触发Slave事件实现需求
- 保留你原有Master状态机的配置不变:
import: "Slave.ysc" var slave: Slave # 触发逻辑保持raise slave.goto_b即可
- 在业务代码中实例化两个状态机后,启动状态机前手动为Master的slave属性赋值:
# 先实例化两个状态机 master = Master() slave = Slave() # 手动绑定引用 master.slave = slave # 绑定完成后再启动状态机 master.start() slave.start()
如果需要双向交互,同时绑定两个属性即可:
master = Master() slave = Slave() master.slave = slave slave.master = master master.start() slave.start()
内容的提问来源于stack exchange,提问作者ketla
相关产品推荐
相关产品推荐

