問題タブ [fsm]

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 投票する
2 に答える
1137 参照

c++ - 同じ状態タイプのさまざまな画面を切り替えますか?

作業中のプログラムの基本構造に問題があります。私は、複数の状態を使用するプログラムの基本を自分自身に教えようとしている、非常に経験の浅いプログラマーです。

現在、イベント、ロジック、レンダリングをStateManagerクラスにリダイレクトするゲームループを備えた非常にシンプルなゲーム風のプログラムがあります。このクラスは、状態をにプッシュおよびポップします。次に、StateManagerクラスは、イベント、ロジック、およびレンダリングを、ベクターのback()にある状態にリダイレクトします。アイデアは、プログラムのフェーズごとにさまざまな状態を用意することです(この場合、スプラッシュスクリーン、メニュー、ゲームプレイ、デススクリーンなどを備えたシンプルなゲーム)...

しかし、私は非常に初心者のコーダーであり(最善を尽くして学習しようとしています)、最初の州のクラスからプログラムで根本的な問題に遭遇しました...

私が作成した最初のクラスはSplashScreenStateです。そして、基本的な考え方は、基本的に一連の「スプラッシュ画面画像」(例として3つ)を表示するだけの状態にすることでした。ユーザーがキーを押すたびに、次の画像に切り替わり、最後に(スプラッシュ画面の画像が表示されていない場合)、次の状態(menustate)に切り替わります。

私の問題は、これをどのように構成するかを理解するのに苦労していることです。もともと、私はそれぞれの異なるスプラッシュ画面画像をSplashScreenStateのインスタンスとして扱うという間違いを犯しました。ただし、3つのスプラッシュ画面はすべて技術的に同じ「状態」の一部であるため、これは正しくないと考えました。

だから今私は2つの主要な問題があります:

  • 最初の問題は、すべてのスプラッシュスクリーン画像をどのように/どこに保存するかがわからないことです。プログラムの起動時に3つの異なる画面イメージを循環させたい場合、それらをすべてSplashScreenStateクラスのメンバーにする必要がありますか?または、「currentImage」に1つのクラスメンバーを設定し、ユーザーがキーを押すたびにload()関数を実行して、次の画像をcurrentImageポインターにロードする方が賢明ですか?画像の配列またはベクトルを作成し、それらを循環させる方が良いですか?よくわかりません...

  • 2番目の問題は、SplashScreenStateのeventhandling()に関するものです。画面上の画像を次のように変更したいことはわかっています。* image1-> image 2-> image 3-> changeState(menuState)..ユーザーがキーボードのキーを押すたびに、最後のスプラッシュ画面まで次のスプラッシュ画面に切り替わり、そこで変更されます。メインメニューに状態します。これを行うための最良の方法もわかりません。各スプラッシュ画面に列挙型を作成し、それらをインクリメントする必要がありますか(状態が変化する最後の画面まで)?また、さまざまな画面をすべて配列に格納すると、簡単にインクリメントできると思いますが、すべての画面を常にメモリに格納する必要があるため、最適化されていないのでしょうか。

とにかく、私はこの質問が非常に基本的で無愛想であるかもしれないことを知っています、しかしそれは残念ながら私が今いるところです!私はプログラミングの正式な教育を受けておらず、自分自身を教えてきたので、このサイトにあるすべての助けと専門知識に本当に感謝しています!^^

ありがとう!

0 投票する
3 に答える
520 参照

c++ - 自分自身を返すboost::function(または他のジェネリック関数ラッパー)を取得するにはどうすればよいですか?

私は最近、Erlangのアクターベースの並行性モデルのシンプルさに夢中になり、C++でその一部を実装するためのアイデアを試しています。これらの方針に沿って、状態を表す関数のコレクションとして有限状態マシンを実装するというアイデアも気に入っています。ここでは、ある関数から次の関数への末尾呼び出しによって遷移が行われます。

C++で似たようなものを試してみたいです。しかし、これを単純に実装すると、コンパイラ(GCC 4.1 with -O0)で末尾呼び出しを行うと、最終的にスタックオーバーフローが発生する可能性があります。代わりに、私がやりたいのは、各状態/関数にファンクター(次に入る状態)を返し、ファンクターを順番に呼び出し、次に返されたファンクターを呼び出し、次にファンクターを呼び出す基になるループを作成することです。このように返されるなど。

だから、私の質問は、どのように定義するのstatefunctorですか?boost::bind(...)特に、関数ポインタだけでなく、任意のファンクタ(作成する可能性がある)を保持できるようにしたいです。

注: C ++11をサポートしていないGCC4.1を使用しているため、対応するものの代わりに、boost::bindを使用しています。C++03で有効なソリューションを歓迎します;-)。boost::functionboost::refstd::

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

c - セグメンテーション違反C有限状態マシン

私はCプログラミングに比較的慣れておらず、区切り文字チェッカーを作成しようとしていますが、何らかの理由でコードを実行して区切り文字をチェックするための入力を取得するたびに、セグメンテーション違反(コアダンプ)エラーが発生します。

以下はメインプログラムのコードです。

ただし、サブプログラムの先頭に右fsmを入れても表示されないため、サブプログラムに入らないようです。ただし、入力を要求し、メインプログラムのサブプログラム行の前にprintf入力すると出力されます。printf

これが私のプロトタイプです:

それが助けになるなら、これがサブプログラムの始まりです:

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

verilog - 有限状態マシンの verilog

Verilog でパターン fsm をコーディングして、8 つの LED で 4 つの異なるパターンを生成し、LED がティック パルスごとに変化する方法について、誰かが光を当てることができるかどうか疑問に思っていました。ステート レジスタと次のステート ロジックの組み合わせを使用する必要があることはわかっていますが、どのように記述すればよいかわかりません。

誰かが例を提供してくれることを願っています。

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

regex - 迅速な解析、正規表現生成のための Perl 有限状態マシン

テキストの非常に短いセグメント (1 ~ 7 文字) を照合する必要があり、有限状態マシンで許容可能な文字列を指定する方法を知っています。このアプリケーションの正規表現を構築すると、面倒で保守が難しくなると思います。FSM を記述できる使いやすいモジュールが必要です。そのモジュールで正規表現を生成して使用できるようになれば、大きなメリットになります。これを簡単に実行できるモジュールを知っている人はいますか?

0 投票する
2 に答える
2468 参照

java - Erlang Alternativesとは何ですか?

特にJava、C++などの他のプログラミング言語のErlangに最も近いフレームワークは何ですか

  1. 組み込みLinuxアプリケーション
  2. フレームワークは、Erlangの他の主要な機能に加えて、ErlangのFSMモデルの緊密なフレーバーをサポートしているため、たとえばNode.jsは、私が収集するそのような要件に対して実際には優れたオプションではありません。
0 投票する
3 に答える
542 参照

vhdl - グッド プラクティス (FSM 向け): BUSY または IDLE

VHDL のステート マシンを考えてみましょう。これらのステート マシンは、トリガーされてしばらく動作し、再びアイドル状態になるまでアイドル状態になります。

より良い方法は何ですか:

  • 「私は何かをすることができます」というシグナルを出すために、外界へのIDLEシグナルを含めます。
  • 外の世界へのBUSY信号を含めて、「今はできない」ことを知らせます。
0 投票する
1 に答える
543 参照

c# - 長時間実行プロセス用のFSMを設計するためのベストプラクティス

私は主にac#開発者であり、一連の長時間実行プロセス用の有限状態マシンの設計に関するガイダンス(理論および/またはコードサンプル)を探しています。定義された各操作は、数分間実行できます。スケジューリングとインスタンス化を管理するために、Windowsタスクスケジューラを使用しているだけです。

以下は私が見ているものの簡略化された概要です。これまで、ステートレスを使用してOpStatusFSMを構築してきました。今、私は、項目#3のショーなど、いくつかの条件がスローされた状態で操作のシーケンスを処理するための最良の方法を見つけようとしています。これらの条件は、Op2から得られたデータに基づいています。

これまでに検討したオプション:

  • 操作シーケンスのFSMを作成します(非常に複雑に見えますが、基本的な部分がどこかに欠けている可能性があります)
  • 操作ごとに操作マネージャーを作成し、各マネージャーに、次の状態がどうあるべきかとともに、関心のある状態について心配させます。

操作->シーケンスの次の操作

  1. なし->Op1
  2. Op1-> Op2
  3. Op2->Op3またはOp4条件付き
  4. Op3-> Op4
  5. Op4-> Op5
  6. Op5->なし

OPステータス

  • アイドル
    • トリガー:スケジュール済み->保留中
    • 制約:操作を設定する必要があります
  • 保留中
    • トリガー:実行->実行中
  • ランニング
    • トリガー:失敗->エラー
    • トリガー:成功->アイドル
    • トリガー:NotReady->保留中
  • エラー
    • トリガー:再試行->保留中
    • トリガー:キャンセル->アイドル(割り当てられた操作を削除)
0 投票する
1 に答える
515 参照

c++ - 有限状態マシンをアプリケーションに統合するにはどうすればよいですか?

こんにちは。これがすでにカバーされている場合は、申し訳ありません。

私は主に数値ソフトウェアの作成に夢中になっていますが、アプリケーションの設計に関しては少し初心者です。

基本的に、さまざまなデータストリームまたは静的ファイルから入力を受け取り、データ分析を実行し、データを画面やファイルなどに出力するライブラリを作成しました。もう少しユーザーフレンドリーにするために、guiアプリケーションを作成することにしました。

ライブラリ呼び出しを行う必要があるシーケンスはかなり単純ですが、アプリケーションの状態に応じて、どのイベントを処理するかについていくつかの制約があります。つまり、ユーザーがデータソースから取得を開始したくない場合です。すでに別のものから処理しています。

そこで、有限状態マシンを使用することにしました。ただし、有限状態マシンをアプリケーションに統合するためのベストプラクティスは何であるか疑問に思いました。これをライブラリへのパブリックインターフェイスにする必要がありますか、それとも基本的にMVCフレームワークのコントローラーとして使用する必要がありますか?ライブラリはモデルであり、GUIはビューです。または、アプリケーションのフローを制御するためのより良い方法はありますか?

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

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

vhdl - VHDLステートマシンがループしていません

仲間のSOユーザー、

ADC(Spartan-3 FPGAボードに接続されたブレッドボードにマウントされているADC0804)をプログラミングしています。現在、このADCを使用して、湿度センサーにデジタル出力を提供しています。ADCは、FPGAボードのLEDに表示している8ビット値を出力します。

現在、湿度レベルを変更してもADCが常に値を出力し続けるようにステートマシンを作成しています。しかし、現在の実装に関しては、最初の状態にループバックしていますが、値の連続ストリームを取得していません。一度に取得できる8ビット値は1つだけです(つまり、LEDに表示される値を更新するには、リセットボタンを押し続ける必要があります)。以下は私のコードです。

状態「READ2」では、最初にループバックしていることに気付くでしょう(状態が遷移するときに値を継続的に読み取り続けることができるように)が、どういうわけかこれは機能していないと思います。誰かがこれを解決する方法についていくつかの支援を提供できますか?