問題タブ [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.

0 投票する
0 に答える
79 参照

c++ - boost::statechartおよびnon-constイベント

boost::statechart::in_state_reactions非定数イベントをリアクション関数に渡すことを許可することを定義する方法はありますか?

0 投票する
1 に答える
951 参照

c++ - boost.statechartsを使用して、異なる直交領域の複数の状態のイベントにカスタム反応できますか?

私のユースケースはこのSSCCEに似ています。問題は、遷移が発生しない場合、他の直交領域で処理されるように、不自然に見えるイベントを転送する必要があることです。さらに重要なのは、移行が必要な場合に、他の地域でイベントを反応させる方法が見つからないことです。これを回避するためにどのように再構築する必要がありますか?

これが重要な場合に備えて、ブースト1.53を使用しています。

0 投票する
1 に答える
315 参照

c++ - boost::bindを使用してboost::Statechartの関数を呼び出す

arduinoにファイルをアップロードするプログラムを書こうとしています。プログラムはシリアルポートを開き、arduinoからデータを受信できます。ステートチャート状態の関数へのコールバックを使用しようとすると、プログラムがクラッシュするという問題が発生します。

私はこれまでブーストを使用したことがなく、これを試す良い機会になると判断しました。

基本的な遷移を次のように持つステートチャートオブジェクトがあります。-> PortOpening; -> PortOpen; -> WaitForCurveChoiceConfirmation; -> ChooseFile; -> WaitForFileReceive; -> CompareFiles; -> CloseProgram;

ポートが閉じている状態もありますが、それは問題なく機能します。

私の主なプログラムは次のとおりです

シリアルポートを開けて、データを完全に受信できます。この問題は、WaitForCurveChoiceConfirmation状態の関数へのコールバックを使用しようとすると発生します。arduinoは数秒ごとにメッセージを送信します。プログラムが完全なメッセージを受信したときにコールバックを使用します。メッセージが受信されてコールバックが呼び出されるとすぐに、プログラムがクラッシュします。

WaitForCurveChoiceConfirmationStateは次のとおりです

myInterfaceクラスの関連部分は次のとおりです

クラッシュは、「fullMsgReceivedCallback(* msg);」の行で発生します。processReceivedDataで。関数を誤ってバインドしているか、関数ポインタオブジェクトを誤って宣言しているだけだと確信しています。

誰かが私がどこで間違っているのか見ることができますか?

ご協力いただきありがとうございます

0 投票する
1 に答える
609 参照

boost - ブーストin_state_reactionの使い方

を使おうとしていますin_state_reaction。奇妙なことに、これに対する反応関数は、呼び出された後に実行されないようですprocess_event ()。に変更in_state_reactionしましたがcustom_reaction、問題ないようです。

で動作させる方法を知りたいだけですin_state_reaction。私は何か間違ったことをしているに違いない。

サンプルコードを高く評価します。州内のサンプルはあまりありません。

ありがとう。

0 投票する
1 に答える
328 参照

c++ - boost::statechart ---「シリアル タイムアウト」イベントの投稿

私はブーストの非同期ステートチャートを使ってプログラムを書いています。このプログラムでは、非同期シリアル ポートを使用して別のデバイスと通信します。シリアルポート経由でデバイスからの確認を待ってから、「確認を受信しました」イベントを投稿する状態があります。これはうまくいきますが、「タイムアウト」イベントも実装したいと思います。

以前のプログラムでは、ループが実行されるたびに実行できるコードがあるステート マシンに switch case ステートメントを使用していました。これは、コードを実行して、何かがタイムアウトしたために状態を変更する必要があるかどうかを確認できることを意味しました。このような:

boost::StateChart を使用してこのようなものを実装するにはどうすればよいですか? これについては、まったく別の方法で考えるべきですか?

0 投票する
1 に答える
399 参照

c++ - Boost::Statechart に遷移遅延を追加する方法

Boost Statechart でノンブロッキング遷移遅延を実装するにはどうすればよいですか?

0 投票する
1 に答える
427 参照

c++ - boost::statechart:どちらがデフォルトかを指定せずに、特定の状態の 2 つのサブ状態を定義する方法は?

0 投票する
1 に答える
168 参照

c++ - ステート マシン コードをコンパイルできない

私はDcuClientMachine2つの状態を持つステートマシンを作ろうとしています - 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) を使用すると、コードはコンパイルされます。

このコードの何が問題になっていますか?

ありがとうございました。