問題タブ [boost-statechart]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost::statechartおよびnon-constイベント
boost::statechart::in_state_reactions
非定数イベントをリアクション関数に渡すことを許可することを定義する方法はありますか?
c++ - boost.statechartsを使用して、異なる直交領域の複数の状態のイベントにカスタム反応できますか?
私のユースケースはこのSSCCEに似ています。問題は、遷移が発生しない場合、他の直交領域で処理されるように、不自然に見えるイベントを転送する必要があることです。さらに重要なのは、移行が必要な場合に、他の地域でイベントを反応させる方法が見つからないことです。これを回避するためにどのように再構築する必要がありますか?
これが重要な場合に備えて、ブースト1.53を使用しています。
c++ - boost::bindを使用してboost::Statechartの関数を呼び出す
arduinoにファイルをアップロードするプログラムを書こうとしています。プログラムはシリアルポートを開き、arduinoからデータを受信できます。ステートチャート状態の関数へのコールバックを使用しようとすると、プログラムがクラッシュするという問題が発生します。
私はこれまでブーストを使用したことがなく、これを試す良い機会になると判断しました。
基本的な遷移を次のように持つステートチャートオブジェクトがあります。-> PortOpening; -> PortOpen; -> WaitForCurveChoiceConfirmation; -> ChooseFile; -> WaitForFileReceive; -> CompareFiles; -> CloseProgram;
ポートが閉じている状態もありますが、それは問題なく機能します。
私の主なプログラムは次のとおりです
シリアルポートを開けて、データを完全に受信できます。この問題は、WaitForCurveChoiceConfirmation状態の関数へのコールバックを使用しようとすると発生します。arduinoは数秒ごとにメッセージを送信します。プログラムが完全なメッセージを受信したときにコールバックを使用します。メッセージが受信されてコールバックが呼び出されるとすぐに、プログラムがクラッシュします。
WaitForCurveChoiceConfirmationStateは次のとおりです
myInterfaceクラスの関連部分は次のとおりです
クラッシュは、「fullMsgReceivedCallback(* msg);」の行で発生します。processReceivedDataで。関数を誤ってバインドしているか、関数ポインタオブジェクトを誤って宣言しているだけだと確信しています。
誰かが私がどこで間違っているのか見ることができますか?
ご協力いただきありがとうございます
boost - ブーストin_state_reactionの使い方
を使おうとしていますin_state_reaction
。奇妙なことに、これに対する反応関数は、呼び出された後に実行されないようですprocess_event ()
。に変更in_state_reaction
しましたがcustom_reaction
、問題ないようです。
で動作させる方法を知りたいだけですin_state_reaction
。私は何か間違ったことをしているに違いない。
サンプルコードを高く評価します。州内のサンプルはあまりありません。
ありがとう。
c++ - boost::statechart ---「シリアル タイムアウト」イベントの投稿
私はブーストの非同期ステートチャートを使ってプログラムを書いています。このプログラムでは、非同期シリアル ポートを使用して別のデバイスと通信します。シリアルポート経由でデバイスからの確認を待ってから、「確認を受信しました」イベントを投稿する状態があります。これはうまくいきますが、「タイムアウト」イベントも実装したいと思います。
以前のプログラムでは、ループが実行されるたびに実行できるコードがあるステート マシンに switch case ステートメントを使用していました。これは、コードを実行して、何かがタイムアウトしたために状態を変更する必要があるかどうかを確認できることを意味しました。このような:
boost::StateChart を使用してこのようなものを実装するにはどうすればよいですか? これについては、まったく別の方法で考えるべきですか?
c++ - Boost::Statechart に遷移遅延を追加する方法
Boost Statechart でノンブロッキング遷移遅延を実装するにはどうすればよいですか?
c++ - ステート マシン コードをコンパイルできない
私はDcuClientMachine
2つの状態を持つステートマシンを作ろうとしています - StandBy
(デフォルトのもの) とOperating
. StandBy
は単純な状態Operating
ですが、 はネストされた状態であり、状態はParsing
デフォルトです。EvConnecting
イベントの想定StandBy
-> Operating
( Parsing
)
(*1)と(*2)が生み出す
boost\statechart\simple_state.hpp(887): error C2039: 'inner_initial_list' : is not a member of 'DcuClientMachine'
(*3) を使用すると、コードはコンパイルされます。
このコードの何が問題になっていますか?
ありがとうございました。