我想知道是否可以实施以下内容。
我想做什么?想象一下大本钟的旋律。我想每四分之一小时播放四分之一的旋律。我想要一个具有以下状态的FSM:
(xx =不关心)
对于每个州,我有另一个FSM。此FSM将确保音乐正常播放。
If(state = whole hour)
{
switch music_state
case A
{ play 1 sec, next_music_state = F}
case and so on ......
这有用吗?我可以制作一个具有一小时不同状态的FSM,并且每个州都有另一个FSM吗?
如果有什么不清楚,请告诉我,我会尽力澄清。我知道这部分并不难,但我仍然想知道这个实现是否有效。我希望,也会想,它会,虽然我想确定它。
提前多多感谢!
答案 0 :(得分:2)
具有“内部状态”和“外部状态”的元状态机当然是可能的。我已经做了类似的事情了一段时间,但只是在上周,便士下降了,我终于写了一个状态机,有两个独立的状态。在一个单一的过程SM中,它就像一个梦想。
“内部状态机”的运行方式与普通状态机一样,但在最后状态下,您可以测试元状态或外部状态,以确定要发送到下一个外部序列的哪个部分。
答案 1 :(得分:1)
您可以制作单个FSM以保持简单......
默认状态为IDLE:这将检查时间(整个小时,四分之一或一半),如果其中一个发生,您将只运行以下正确状态: MUSIC_FOR_WHOLE_HOUR,MUSIC_FOR_HALF_PAST ......
这些状态将运行他们不同的状态链,这些状态链将播放他们的音乐,并将返回到IDLE状态,等待下一个适当的时间再次播放。