我正在寻找一个框架,该框架可以执行层次结构机器(HSM)。

这些是该框架的要求:

  • 符合UML状态机的语义(尽可能多)
  • 至少支持
    • 运行到完成语义
    • 等级状态
    • 进入和退出行动
    • 过渡动作
    • 警卫
    • 带有自定义参数的事件
  • 面向对象或至少不禁止OO设计

目标平台是具有OS的中型至大型嵌入式系统。

您知道满足上述要求的框架吗?您的框架有什么利弊?

有帮助吗?

解决方案

查看 量子平台.

我在几个嵌入式项目(从非常小到非常大)上使用了它,它支持您需要的所有子弹项目等等。

QP的网页比我在这里做的更好地解释了自己。

请注意,QP并未实施UML规范中指定的功能的100%,但是清楚地解释了出发性,并且在我对QP的所有经验中,它们都不是该项目的问题。

您似乎还知道2个Boost Statechart软件包。

其他提示

你应该去检查 提升MSM, ,对于Boost 1.44来说是新的,但似乎很完整。我自己还没有尝试过,但看起来很有希望。

截至今天,有一个新的 C ++ (支持C ++ 11和C ++ 03具有Boost)可用的替代方案。叫做 Yasmine (我是建筑师)。它满足了上述所有要求。

一些优点和缺点(从Yasmine网页引用):

使用Yasmine的优点

  • 她提供了UML状态机语义学的完整实现。
  • Yasmine是使用C ++ 11的现代C ++实现(也可以使用C ++ 03支持)。
  • 因为它是c ++(而不是c)代码很好地集成到OO代码中。
  • 她有据可查[...
  • 因为她是开源的,您可以检查她的实现。这也保证了长期的可用性和可用性。
  • 该库使您可以在运行时创建状态机。
  • [...]

Yasmine不是什么

她不是一个最小脚印库,无论可用的资源很少,在每个系统上都可以优先运行。 Yasmine并不是资源的饥饿,但她不能(也不想)与基于开关案例的裸机无抗曲库竞争。

笔记

我知道这是一个古老的问题,但这是“ C ++ UML状态机”的Google#1,这使其非常相关。

如果您正在寻找一个支持层次和并发状态机的框架,则使用UML语义(条目/退出,过渡,警卫,带有参数的事件,异步/同步),请查看我的 状态机代码和图生成器.

相反,在“手动”实现状态计算机时,请在简单的人类可读且可写的XML描述中描述状态计算机,并让状态计算机生成器在C ++,C#或Java中编写代码源。

实际上,对于C ++版本,对于中/大尺寸嵌入式系统,可以轻松地对生成的代码进行交叉编译。它已经完成了。

您可能会查看我的C ++模板类框架 sttcl 目的是将UML 2.2状态图表示法映射到实施类。 STTCL方法是对GOF状态模式的改进,并试图将空白填充到UML状态图表符号中。

对于OS依赖项,可以将框架实现用于将这些依赖性的配置(仅适用于异步执行模型)。

有个 PDF文档 可用来详细解释该概念。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top