色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用FSME來定制狀態機

麥辣雞腿堡 ? 來源:車端 ? 作者:車端 ? 2023-09-13 16:57 ? 次閱讀

定制狀態機

目前得到的狀態機已經能夠響應來自外部的各種事件,并適當地調整自己當前所處的狀態,也就是說已經實現了狀態機引擎的功能,接下來要做的就是根據應用的具體需求來進行定制,為狀態機加入與軟件系統本身相關的那些處理邏輯。在FSME中,與具體應用相關的操作稱為輸出(Output),它們實際上就是一些需要用戶給出具體實現的虛函數,自動生成的狀態機引擎負責在進入或者退出某個狀態時調用它們。

仍然以控制城門的那個狀態機為例,假設我們希望在進入每個狀態時都添加一部分處理邏輯。首在FSME界面左邊的樹形列表選擇"Outputs"項,然后按下鍵盤上的Insert鍵來添加一個新的輸出,接著在右下方的"Name"文本框中輸入相應的名稱,再單擊"Apply"按鈕,一個新的輸出就創建好了,如圖所示。用同樣的辦法可以添加狀態機所需要的所有輸出。

添加輸出

圖片

當所有的輸出都定義好之后,接下來就可以為狀態機中的每個狀態綁定相應的輸出。首先在FSME界面左側的"States"項中選擇相應的狀態,然后從右下角的"Available"列表框中選擇與該狀態對應的輸出,再單擊"<"按鈕將其添加到"In"列表中,如圖所示。用同樣的辦法可以為狀態機中的所有狀態設置相應的輸出,同一個狀態可以對應有多個輸出,其中In列表中的輸出會在進入該狀態時被調用,而Out列表中的輸出則會在退出該狀態時被調用,輸出調用的順序是與其在In或者Out列表中的順序相一致的。

圖為狀態設置輸出

圖片

由于對狀態機模型進行了修改,我們需要再次生成狀態機的框架代碼,不過這次不需要加上-d參數

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

我們在新的狀態機模型中添加了enterOpend、enterClosed、enterLocked和enterUnlocked四個輸出,因此生成的類DoorFSM中會包含如下幾個純虛函數:

virtual void enterOpened() = 0;
virtual void enterLocked() = 0;
virtual void enterUnlocked() = 0;
virtual void enterClosed() = 0;

顯然,此時生成的狀態機框架不能夠再被直接編譯了,我們必須從類DoorFSM派生出一個子類,并提供對這幾個純虛函數的具體實現:

/*
* DoorFSMLogic.h
* 狀態機控制邏輯的頭文件
*/
#include "DoorFSM.h"

class DoorFSMLogic : public DoorFSM
{

protected:
virtual void enterOpened();
virtual void enterLocked();
virtual void enterUnlocked();
virtual void enterClosed();
};

正如前面所提到過的,這幾個函數實際上代表的正是應用系統的處理邏輯,作為例子我們只是簡單地輸出一些提示信息

/*
* DoorFSMLogic.cpp
* 狀態機控制邏輯的實現文件
*/
#include "DoorFSMLogic.h"
#include

void DoorFSMLogic::enterOpened()
{
std::cout << "Enter Opened state." << std::endl;
}

void DoorFSMLogic::enterClosed()
{
std::cout << "Enter Closed state." << std::endl;
}

void DoorFSMLogic::enterLocked()
{
std::cout << "Enter Locked state." << std::endl;
}

void DoorFSMLogic::enterUnlocked()
{
std::cout << "Enter Unlocked state." << std::endl;
}

同樣,為了對生成的狀態機進行驗證,我們還需要手工編寫一段測試代碼:

/*
* TestFSM.cpp
* 測試狀態機邏輯
*/
#include "DoorFSMLogic.h"

int main()
{
DoorFSMLogic door;
door.A(DoorFSM::Close);
door.A(DoorFSM::Lock);
door.A(DoorFSM::Unlock);
door.A(DoorFSM::Open);
}

使用下面的命令能夠將生成的狀態機框架和測試代碼編譯成一個可執行文件:

[xiaowp@linuxgam code]$ g++ DoorFSM.cpp DoorFSMLogic.cpp TestLogic.cpp -o logic

運行結果如下所示:

[xiaowp@linuxgam code]$ ./logic
Enter Closed state.
Enter Locked state.
Enter Unlocked state.
Enter Opened state.
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4353

    瀏覽量

    63295
  • 模型
    +關注

    關注

    1

    文章

    3415

    瀏覽量

    49476
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27779
收藏 人收藏

    評論

    相關推薦

    如何設計自動駕駛系統的狀態機

    狀態機模塊在自動駕駛系統中扮演著關鍵的角色,它負責管理和控制各個功能的狀態轉換和行為執行。今天我們聊聊如何設計自動駕駛系統的狀態機
    發表于 09-19 15:07 ?3012次閱讀
    如何設計自動駕駛系統的<b class='flag-5'>狀態機</b>

    Verilog狀態機+設計實例

    在verilog中狀態機的一種很常用的邏輯結構,學習和理解狀態機的運行規律能夠幫助我們更好地書寫代碼,同時作為一種思想方法,在別的代碼設計中也會有所幫助。 一、簡介 在使用過程中我們常說
    的頭像 發表于 02-12 19:07 ?4509次閱讀
    Verilog<b class='flag-5'>狀態機</b>+設計實例

    如何寫好狀態機

    如何寫好狀態機:狀態機是邏輯設計的重要內容,狀態機的設計水平直接反應工程師的邏輯功底,所以許多公司的硬件和邏輯工程師面試中,狀態機設計幾乎是必選題目。本章在引入
    發表于 06-14 19:24 ?97次下載

    狀態機舉例

    狀態機舉例 你可以指定狀態寄存器和狀態機狀態。以下是一個有四種狀態的普通狀態機。 // Th
    發表于 03-28 15:18 ?1020次閱讀

    狀態機代碼生成工具

    狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具
    發表于 11-19 15:12 ?9次下載

    狀態機原理及用法

    狀態機原理及用法狀態機原理及用法狀態機原理及用法
    發表于 03-15 15:25 ?0次下載

    狀態機概述 如何理解狀態機

    本篇文章包括狀態機的基本概述以及通過簡單的實例理解狀態機
    的頭像 發表于 01-02 18:03 ?1.1w次閱讀
    <b class='flag-5'>狀態機</b>概述  如何理解<b class='flag-5'>狀態機</b>

    FPGA:狀態機簡述

    本文目錄 前言 狀態機簡介 狀態機分類 Mealy 型狀態機 Moore 型狀態機 狀態機描述 一段式
    的頭像 發表于 11-05 17:58 ?7632次閱讀
    FPGA:<b class='flag-5'>狀態機</b>簡述

    什么是狀態機狀態機5要素

    玩單片還可以,各個外設也都會驅動,但是如果讓你完整的寫一套代碼時,卻無邏輯與框架可言。這說明編程還處于比較低的水平,你需要學會一種好的編程框架或者一種編程思想!比如模塊化編程、狀態機編程、分層思想
    的頭像 發表于 07-27 11:23 ?2.1w次閱讀
    什么是<b class='flag-5'>狀態機</b>?<b class='flag-5'>狀態機</b>5要素

    狀態模式(狀態機)

    share,作者:亞索老哥)),原來狀態機還可以這么簡單地玩~~亞索老哥提出的狀態機六步法(1)、定義狀態接口(2)、定義系統當前狀態指針(3)、定義具體
    發表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態</b>模式(<b class='flag-5'>狀態機</b>)

    labview狀態機分享

    labview狀態機
    發表于 10-31 15:50 ?18次下載

    狀態機自動生成工具FSME

    為實用的軟件系統編寫狀態機并不是一件十分輕松的事情,特別是當狀態機本身比較復雜的時候尤其如此,許多有過類似經歷的程序員往往將其形容為“毫無創意”的過程,因為他們需要將大量的時間與精力傾注在如何管理
    的頭像 發表于 09-13 16:45 ?1607次閱讀
    <b class='flag-5'>狀態機</b>自動生成工具<b class='flag-5'>FSME</b>

    自動生成程序狀態機代碼狀態機建模方法

    首先運行fsme命令啟動狀態機編輯器,然后單擊工具欄上的“New”按鈕創建一個新的狀態機FSME
    的頭像 發表于 09-13 16:50 ?1299次閱讀
    自動生成程序<b class='flag-5'>狀態機</b>代碼<b class='flag-5'>狀態機</b>建模方法

    如何生成狀態機框架

    生成狀態機框架 使用FSME不僅能夠進行可視化的狀態機建模,更重要的是它還可以根據得到的模型自動生成用C++或者Python實現的狀態機框架。首先在
    的頭像 發表于 09-13 16:54 ?1081次閱讀
    如何生成<b class='flag-5'>狀態機</b>框架

    什么是狀態機狀態機的種類與實現

    狀態機,又稱有限狀態機(Finite State Machine,FSM)或米利狀態機(Mealy Machine),是一種描述系統狀態變化的模型。在芯片設計中,
    的頭像 發表于 10-19 10:27 ?1w次閱讀
    主站蜘蛛池模板: 一道精品视频一区二区三区 | 精品久久综合1区2区3区激情 | 国产亚洲欧洲日韩在线三区 | x8国产精品视频 | 亚洲人成网77777色在线播放 | 国产成人无码视频一区二区三区 | 国产精品成人观看视频免费 | 女厕所边摸边吃奶边做爽视频 | 99久久999久久久综合精品涩 | 中国videos1314tv| 国产69精品久久久久妇女 | 国产精品嫩草影院 | 中文字幕亚洲无线码高清不卡 | 暖暖 日本 视频 在线观看免费 | 校花娇喘呻吟校长陈若雪视频 | YELLOW视频直播在线观看高清 | 强奸日本美女小游戏 | 国产偷啪自怕网 | 亚州AV人片一区二区三区99久 | 捆绑调教网站 | 日本无修肉动漫在线观看 | 欧美日韩亚洲第一区在线 | 国产欧美精品国产国产专区 | 琪琪午夜福利免费院 | 黄色免费网址在线观看 | 色婷婷欧美在线播放内射 | 美娇妻的性奴史1一4 | 欧美zozofoot | 年轻的女教师2017韩国在线看 | 亚洲午夜久久影院 | 日本久久道一区二区三区 | 99国产在线精品观看二区 | 国产欧美第一页 | 爱情岛论坛免费在线观看 | 嗯啊快拔出来我是你老师视频 | 巨胸美女狂喷奶水www网麻豆 | 中文字幕一区久久久久 | 国产又粗又黄又爽的大片 | WWW国产亚洲精品久久 | 天美麻豆成人AV精品 | 手机看片国产日韩欧美 |