女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用FSME來(lái)定制狀態(tài)機(jī)

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

定制狀態(tài)機(jī)

目前得到的狀態(tài)機(jī)已經(jīng)能夠響應(yīng)來(lái)自外部的各種事件,并適當(dāng)?shù)卣{(diào)整自己當(dāng)前所處的狀態(tài),也就是說(shuō)已經(jīng)實(shí)現(xiàn)了狀態(tài)機(jī)引擎的功能,接下來(lái)要做的就是根據(jù)應(yīng)用的具體需求來(lái)進(jìn)行定制,為狀態(tài)機(jī)加入與軟件系統(tǒng)本身相關(guān)的那些處理邏輯。在FSME中,與具體應(yīng)用相關(guān)的操作稱為輸出(Output),它們實(shí)際上就是一些需要用戶給出具體實(shí)現(xiàn)的虛函數(shù),自動(dòng)生成的狀態(tài)機(jī)引擎負(fù)責(zé)在進(jìn)入或者退出某個(gè)狀態(tài)時(shí)調(diào)用它們。

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

添加輸出

圖片

當(dāng)所有的輸出都定義好之后,接下來(lái)就可以為狀態(tài)機(jī)中的每個(gè)狀態(tài)綁定相應(yīng)的輸出。首先在FSME界面左側(cè)的"States"項(xiàng)中選擇相應(yīng)的狀態(tài),然后從右下角的"Available"列表框中選擇與該狀態(tài)對(duì)應(yīng)的輸出,再單擊"<"按鈕將其添加到"In"列表中,如圖所示。用同樣的辦法可以為狀態(tài)機(jī)中的所有狀態(tài)設(shè)置相應(yīng)的輸出,同一個(gè)狀態(tài)可以對(duì)應(yīng)有多個(gè)輸出,其中In列表中的輸出會(huì)在進(jìn)入該狀態(tài)時(shí)被調(diào)用,而Out列表中的輸出則會(huì)在退出該狀態(tài)時(shí)被調(diào)用,輸出調(diào)用的順序是與其在In或者Out列表中的順序相一致的。

圖為狀態(tài)設(shè)置輸出

圖片

由于對(duì)狀態(tài)機(jī)模型進(jìn)行了修改,我們需要再次生成狀態(tài)機(jī)的框架代碼,不過(guò)這次不需要加上-d參數(shù):

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

我們?cè)谛碌臓顟B(tài)機(jī)模型中添加了enterOpend、enterClosed、enterLocked和enterUnlocked四個(gè)輸出,因此生成的類DoorFSM中會(huì)包含如下幾個(gè)純虛函數(shù):

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

顯然,此時(shí)生成的狀態(tài)機(jī)框架不能夠再被直接編譯了,我們必須從類DoorFSM派生出一個(gè)子類,并提供對(duì)這幾個(gè)純虛函數(shù)的具體實(shí)現(xiàn):

/*
* DoorFSMLogic.h
* 狀態(tài)機(jī)控制邏輯的頭文件
*/
#include "DoorFSM.h"

class DoorFSMLogic : public DoorFSM
{

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

正如前面所提到過(guò)的,這幾個(gè)函數(shù)實(shí)際上代表的正是應(yīng)用系統(tǒng)的處理邏輯,作為例子我們只是簡(jiǎn)單地輸出一些提示信息:

/*
* DoorFSMLogic.cpp
* 狀態(tài)機(jī)控制邏輯的實(shí)現(xiàn)文件
*/
#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;
}

同樣,為了對(duì)生成的狀態(tài)機(jī)進(jìn)行驗(yàn)證,我們還需要手工編寫(xiě)一段測(cè)試代碼:

/*
* TestFSM.cpp
* 測(cè)試狀態(tài)機(jī)邏輯
*/
#include "DoorFSMLogic.h"

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

使用下面的命令能夠?qū)⑸傻臓顟B(tài)機(jī)框架和測(cè)試代碼編譯成一個(gè)可執(zhí)行文件:

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

運(yùn)行結(jié)果如下所示:

[xiaowp@linuxgam code]$ ./logic
Enter Closed state.
Enter Locked state.
Enter Unlocked state.
Enter Opened state.
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4367

    瀏覽量

    64155
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3483

    瀏覽量

    49968
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    493

    瀏覽量

    28063
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)

    狀態(tài)機(jī)模塊在自動(dòng)駕駛系統(tǒng)中扮演著關(guān)鍵的角色,它負(fù)責(zé)管理和控制各個(gè)功能的狀態(tài)轉(zhuǎn)換和行為執(zhí)行。今天我們來(lái)聊聊如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)
    發(fā)表于 09-19 15:07 ?3325次閱讀
    如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的<b class='flag-5'>狀態(tài)機(jī)</b>

    Verilog狀態(tài)機(jī)+設(shè)計(jì)實(shí)例

    在verilog中狀態(tài)機(jī)的一種很常用的邏輯結(jié)構(gòu),學(xué)習(xí)和理解狀態(tài)機(jī)的運(yùn)行規(guī)律能夠幫助我們更好地書(shū)寫(xiě)代碼,同時(shí)作為一種思想方法,在別的代碼設(shè)計(jì)中也會(huì)有所幫助。 一、簡(jiǎn)介 在使用過(guò)程中我們常說(shuō)
    的頭像 發(fā)表于 02-12 19:07 ?5187次閱讀
    Verilog<b class='flag-5'>狀態(tài)機(jī)</b>+設(shè)計(jì)實(shí)例

    如何寫(xiě)好狀態(tài)機(jī)

    如何寫(xiě)好狀態(tài)機(jī):狀態(tài)機(jī)是邏輯設(shè)計(jì)的重要內(nèi)容,狀態(tài)機(jī)的設(shè)計(jì)水平直接反應(yīng)工程師的邏輯功底,所以許多公司的硬件和邏輯工程師面試中,狀態(tài)機(jī)設(shè)計(jì)幾乎是必選題目。本章在引入
    發(fā)表于 06-14 19:24 ?97次下載

    狀態(tài)機(jī)舉例

    狀態(tài)機(jī)舉例 你可以指定狀態(tài)寄存器和狀態(tài)機(jī)狀態(tài)。以下是一個(gè)有四種狀態(tài)的普通狀態(tài)機(jī)。 // Th
    發(fā)表于 03-28 15:18 ?1073次閱讀

    狀態(tài)機(jī)代碼生成工具

    狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具
    發(fā)表于 11-19 15:12 ?9次下載

    狀態(tài)機(jī)原理及用法

    狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    狀態(tài)機(jī)概述 如何理解狀態(tài)機(jī)

    本篇文章包括狀態(tài)機(jī)的基本概述以及通過(guò)簡(jiǎn)單的實(shí)例理解狀態(tài)機(jī)
    的頭像 發(fā)表于 01-02 18:03 ?1.1w次閱讀
    <b class='flag-5'>狀態(tài)機(jī)</b>概述  如何理解<b class='flag-5'>狀態(tài)機(jī)</b>

    FPGA:狀態(tài)機(jī)簡(jiǎn)述

    本文目錄 前言 狀態(tài)機(jī)簡(jiǎn)介 狀態(tài)機(jī)分類 Mealy 型狀態(tài)機(jī) Moore 型狀態(tài)機(jī) 狀態(tài)機(jī)描述 一段式
    的頭像 發(fā)表于 11-05 17:58 ?7909次閱讀
    FPGA:<b class='flag-5'>狀態(tài)機(jī)</b>簡(jiǎn)述

    什么是狀態(tài)機(jī)狀態(tài)機(jī)5要素

    玩單片機(jī)還可以,各個(gè)外設(shè)也都會(huì)驅(qū)動(dòng),但是如果讓你完整的寫(xiě)一套代碼時(shí),卻無(wú)邏輯與框架可言。這說(shuō)明編程還處于比較低的水平,你需要學(xué)會(huì)一種好的編程框架或者一種編程思想!比如模塊化編程、狀態(tài)機(jī)編程、分層思想
    的頭像 發(fā)表于 07-27 11:23 ?2.1w次閱讀
    什么是<b class='flag-5'>狀態(tài)機(jī)</b>?<b class='flag-5'>狀態(tài)機(jī)</b>5要素

    狀態(tài)模式(狀態(tài)機(jī))

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

    labview狀態(tài)機(jī)分享

    labview狀態(tài)機(jī)
    發(fā)表于 10-31 15:50 ?18次下載

    狀態(tài)機(jī)自動(dòng)生成工具FSME

    為實(shí)用的軟件系統(tǒng)編寫(xiě)狀態(tài)機(jī)并不是一件十分輕松的事情,特別是當(dāng)狀態(tài)機(jī)本身比較復(fù)雜的時(shí)候尤其如此,許多有過(guò)類似經(jīng)歷的程序員往往將其形容為“毫無(wú)創(chuàng)意”的過(guò)程,因?yàn)樗麄冃枰獙⒋罅康臅r(shí)間與精力傾注在如何管理
    的頭像 發(fā)表于 09-13 16:45 ?1785次閱讀
    <b class='flag-5'>狀態(tài)機(jī)</b>自動(dòng)生成工具<b class='flag-5'>FSME</b>

    自動(dòng)生成程序狀態(tài)機(jī)代碼狀態(tài)機(jī)建模方法

    首先運(yùn)行fsme命令來(lái)啟動(dòng)狀態(tài)機(jī)編輯器,然后單擊工具欄上的“New”按鈕來(lái)創(chuàng)建一個(gè)新的狀態(tài)機(jī)FSME
    的頭像 發(fā)表于 09-13 16:50 ?1535次閱讀
    自動(dòng)生成程序<b class='flag-5'>狀態(tài)機(jī)</b>代碼<b class='flag-5'>狀態(tài)機(jī)</b>建模方法

    如何生成狀態(tài)機(jī)框架

    生成狀態(tài)機(jī)框架 使用FSME不僅能夠進(jìn)行可視化的狀態(tài)機(jī)建模,更重要的是它還可以根據(jù)得到的模型自動(dòng)生成用C++或者Python實(shí)現(xiàn)的狀態(tài)機(jī)框架。首先在
    的頭像 發(fā)表于 09-13 16:54 ?1177次閱讀
    如何生成<b class='flag-5'>狀態(tài)機(jī)</b>框架

    什么是狀態(tài)機(jī)狀態(tài)機(jī)的種類與實(shí)現(xiàn)

    狀態(tài)機(jī),又稱有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)或米利狀態(tài)機(jī)(Mealy Machine),是一種描述系統(tǒng)狀態(tài)變化的模型。在芯片設(shè)計(jì)中,
    的頭像 發(fā)表于 10-19 10:27 ?1.1w次閱讀