boost-statechart

    1熱度

    1回答

    我已閱讀boost.statechart庫及其示例教程,並且我有一個與轉換及其操作有關的問題。 有兩種方法可以使用transition<>和custom_reaction來定義轉換,但是它們之間的主要區別是什麼以及何時使用這些轉換?

    0熱度

    1回答

    我已經實現了一個繼承boost :: statechart的狀態機。當我打電話給fsm.process_event(some_event())哪個反應預計會拋出異常時,事實證明,在我用try-catch塊處理異常之後,我的statemachine實例fsm被終止。即,fsm.terminated()返回true。在某些情況下,我不希望它終止。就像我希望狀態機拋出異常,通知調用者fsm.proces

    0熱度

    1回答

    我有一個狀態機,其中如果我進入特定狀態,有時需要定期轉換到另一個狀態,而其他時間我需要返回到以前的狀態。 例如,具有狀態ABC,說過渡S將狀態A移動到C並從B移動到C.我需要一個轉換T將C移動到A,當S發生在狀態A和C發生在B時狀態B. 在下面的代碼中,轉換S發生在狀態B中,因此我希望轉換T返回到狀態B(而當前它返回到狀態A)。 #include <boost/mpl/list.hpp> #i

    0熱度

    1回答

    我正在嘗試編寫一個程序來上傳文件到一個arduino。該程序可以打開串口並從arduino接收數據。當我嘗試在狀態圖狀態中使用回調函數時,問題就出現了,程序崩潰了。 我以前從未使用過增強功能,並決定這是一個很好的嘗試的機會。 我有一個狀態圖對象,其基本轉換如下: Idle; - > PortOpening; - > PortOpen; - > WaitForCurveChoiceConfirmat

    1熱度

    1回答

    我正在嘗試使用in_state_reaction。 奇怪的是,在調用process_event()之後,似乎並沒有執行此功能。 我改變了in_state_reaction到custom_reaction,它似乎很好。 只是想知道如何使它與in_state_reaction一起工作。 我一定在做錯事。 我會appriciate示例代碼。在州內沒有很多樣品。 謝謝。 struct Reset : sc

    0熱度

    1回答

    我希望能夠將事件中的數據傳遞到作爲轉換結果構造的狀態。 從this發佈在2009年和this 2010年一個建議使用triggering_event()。但是,我無法找到演示如何使用它的任何示例。 任何人都可以幫忙嗎?

    0熱度

    1回答

    我一直在使用boost的異步狀態圖來編寫程序。在這個程序中,我使用異步串行端口與其他設備進行通信。我有一個狀態,通過串口等待設備確認,然後發佈「收到確認」事件。這很好,但我也想實現一個「超時」事件。 在以前的程序中,我一直在爲我的狀態機使用switch case語句,我的代碼可以在每次循環運行時運行。這意味着我可以運行代碼並檢查是否應該由於某些事情超時而改變狀態。像這樣: while(1){

    0熱度

    1回答

    如何在Boost狀態圖中實現非阻塞轉換延遲?

    1熱度

    1回答

    在Boost狀態圖中註冊狀態變化是否有一種直接的方法? 對於Digital Camera示例,假設我決定將GUI添加到應用程序。除了查詢州之外,是否有可能通知州之間的轉換? if(0 != state_cast<const State1 *>()) { context<OuterCotext>().Notify(1); } else if(0 != state_cast<const

    0熱度

    1回答

    下面的代碼無法編譯: namespace sc = boost::statechart; class Active; class FSM : public sc::state_machine< FSM, startup> { }; class ev_1 : public sc::event<ev_1> {}; class ev_2 : public sc::event<ev_2>