状态机 | 如何从零开始构建一个QM项目
内容提要
QM建模工具是一种强大的工具,提供了交互式GUI模式和命令行模式两种操作方式。可以在Windows、Linux和MacOS上运行。可以从零开始构建一个QM项目,并在桌面上运行并将结果打印到屏幕上。可以添加包、类、时间事件、状态机等模型项。可以生成代码,添加目录和文件。可以编辑文件和编译工程。
延伸解读
QM 的跨平台与双模式操作
QM 建模工具支持 Windows、Linux 和 MacOS,并提供交互式 GUI 和命令行两种模式。这意味着开发者可以根据习惯选择操作方式,例如在 Windows 上通过双击快捷方式或拖放模型文件启动 GUI,或在命令行下生成可执行文件。跨平台特性使得同一模型可以在不同系统上构建和运行,降低了环境迁移成本。
从零构建项目的关键步骤
文章演示了从新建模型开始,依次添加包、类、时间事件和状态机的完整流程。包用于组织模型项,类承载状态机行为,时间事件周期性触发状态转换。通过绘制状态图并定义状态与转换,最终生成代码。这一步骤化方法适合初学者理解 QM 的项目结构,但需注意每一步都依赖前一步的正确配置。
代码生成的反转控制与混合编程
QM 将代码生成“颠倒”过来,允许开发者自定义生成代码的结构、目录名、文件名及包含元素,并能将手写代码与生成代码混合。这提供了灵活性,但也要求开发者清楚代码生成指令(如 $declare、$define)的作用。文章示例中,用户需手动添加 BSP 函数和 main 函数,说明生成代码并非完全自动,仍需补充平台相关实现。
桌面运行与编译的注意事项
文章以“闪烁”应用为例,通过 printf 输出 LED 状态,并展示了在 Windows 命令提示符下生成 blinky.exe 的方法。这表明 QM 项目可以针对桌面操作系统编译运行,但需要自行实现板级支持包(BSP)函数,如 BSP_ledOn、BSP_ledOff 和时钟节拍处理。若移植到其他平台,这些底层函数需相应调整,否则无法正常编译或运行。
Q&A
QM建模工具支持哪些操作系统和操作模式?
QM建模工具支持Windows、Linux和MacOS操作系统,并提供交互式GUI模式和命令行模式两种操作方式。
如何在Windows上启动QM建模工具?
在Windows上,可以双击桌面上的快捷方式启动QM,也可以将QM模型文件拖放到QM快捷方式上来启动。
从零开始创建QM项目时,需要选择哪些初始配置?
新建Model时,选择默认的qpc框架类型,选择自定义路径,模型模板选择None,以便从头开始构建模型。
在QM中,包和类的作用分别是什么?
包用于将其他模型项组合到更高级别的单元中,最常见的用途是将类分组在一起;类用于实现行为,是状态机的基础。
QM如何生成代码?可以自定义哪些方面?
QM将代码生成“颠倒”,用户可以确定生成的代码结构、目录名、文件名以及每个文件中包含的元素,也可以将自己的代码与生成的代码混合,并控制生成代码的多少。
在QM中如何添加时间事件并配置其触发状态机?
在Model Explorer中右键单击类(如Blinky:QActive),选择Add Attribute添加时间事件属性,然后在状态机中通过转换动作调用QTimeEvt_armX来周期性触发。