【发布时间】:2014-07-04 08:09:46
【问题描述】:
我需要为硬件设备制作一个状态机。它将有超过 25 个州,我不确定要应用什么设计。
因为我使用的是C++11,所以我想到了使用OOP并使用State Pattern实现它,但我认为它不适合嵌入式系统。
应该更像C风格的设计吗?我以前没有编码过。有人可以给我一些关于什么是最适合的设计的建议吗?
系统信息:
ARM Cortex-M4
1 MB Flash
196 KB Ram
我还看到this 的问题,接受的答案指向表格设计,另一个答案指向State pattern 设计。
【问题讨论】:
-
这真的取决于环境。如果您已经有一个 C++ 环境并且您对 C++ 很熟悉,为什么不使用它。然而,C++ 通常需要更多的支持;设置 C++ 支持可能比用任何语言编写状态机花费更多的时间。状态机可以是数据驱动的,也可以使用函数指针(代码驱动)来完成。许多“C”系统使用结构中的简单变量和
switch/case来实现state。状态通常只是enum和允许的转换;如何实现转换通常是困难的部分。 -
另请参阅:Petri Nets,如果您在中断意义上是嵌入,则可能适用。 C++ 有非常好的语法来实现function pointers with state,这通常很有用,这取决于你希望你的状态机有多heavy。
-
状态机有点琐碎我不明白这个问题,任何和所有语言都可以正常工作。对于 arm cortex-m4 C 或 C++,只要从该平台的角度来看什么是好的语言/工具,您喜欢的任何一个都是您的最佳候选者。
标签: c++ c++11 embedded arm state-machine