CMOS图像传感器IC集成电路芯片-亿配芯城-如何生成状态机框架
你的位置:CMOS图像传感器IC集成电路芯片-亿配芯城 > 芯片资讯 > 如何生成状态机框架
如何生成状态机框架
发布日期:2024-01-04 07:28     点击次数:162
生成状态机框架

使用FSME不仅能够进行可视化的状态机建模,更重要的是它还可以根据得到的模型自动生成用C++或者Python实现的状态机框架。首先在FSME界面左边的树形列表中选择"Root"项,然后在右下角的"Name"文本框中输入状态机的名字"DoorFSM",再从"Initial State"下拉列表中选择状态"Opened"作为状态机的初始化状态,如图6所示。

设置初始属性

图片

在将状态机模型保存为door.fsm文件之后,使用下面的命令可以生成包含有状态机定义的头文件:

[xiaowp@linuxgam code]$ fsmc door.fsm -d -o DoorFSM.h

进一步还可以生成包含有状态机实现的框架代码:

[xiaowp@linuxgam code]$ fsmc door.fsm -d -impl DoorFSM.h -o DoorFSM.cpp

如果想对生成的状态机进行验证,只需要再手工编写一段用于测试的代码就可以了:

/* * TestFSM.cpp * 测试生成的状态机框架 */#include "DoorFSM.h"int main(){  DoorFSM door;  door.A(DoorFSM::Close);  door.A(DoorFSM::Lock);  door.A(DoorFSM::Unlock);  door.A(DoorFSM::Open);}

有限状态机是由事件来进行驱动的, 芯片交易网IC交易网在FSME生成的状态机框架代码中, ATMEGA系列ATMEL芯片COM方法A()可以被用来向状态机发送相应的事件, CMOS图像传感器集成电路芯片从而提供状态机正常运转所需要的"动力"。状态机负责在其内部维护一个事件队列, 电子元器件PDF资料大全CMOS图像传感器IC集成电路芯片所有到达的事件都会先被放到事件队列中进行等候,EEPROM带电可擦可编程存储器芯片大全从而能够保证它们将按照到达的先后顺序被依次处理。在处理每一个到达的事件时,状态机都会根据自己当前所处的状态,检查与该状态对应的转换条件是否已经被满足,如果满足的话则激活相应的状态转换过程。

使用下面的命令能够将生成的状态机框架和测试代码编译成一个可执行文件:

[xiaowp@linuxgam code]$ g++ DoorFSM.cpp TestFSM.cpp -o fsm

由于之前在用fsmc命令生成状态机代码时使用了-d选项,生成的状态机框架中会包含一定的调试信息,包括状态机中每次状态转换时的激活事件、转换前的状态、所经历的转换、转换后的状态等,如下所示:

[xiaowp@linuxgam code]$ ./fsmDoorFSM:event:'Close'DoorFSM:state:'Opened'DoorFSM:transition:'closeDoor'DoorFSM:new state:'Closed'DoorFSM:event:'Lock'DoorFSM:state:'Closed'DoorFSM:transition:'lockDoor'DoorFSM:new state:'Locked'DoorFSM:event:'Unlock'DoorFSM:state:'Locked'DoorFSM:transition:'unlockDoor'DoorFSM:new state:'Unlocked'DoorFSM:event:'Open'DoorFSM:state:'Unlocked'DoorFSM:transition:'openDoor'DoorFSM:new state:'Opened'