2016-07-21 22 views
0

OMNeT ++ 4.4でシミュレーションを実行しています。このノードでは、結果として基本的にタプルの結果が出力されます。タプルの値は相互に依存し、すべてのノードがそれらを出力します。すなわち、単一のシミュレーション時間に放出されるいくつかのそのようなタプルが存在する。タプルを単一のdouble値に「圧縮」することはできません。ベクトル結果レコーダーのタプルの記録

これらのタプルをベクターに記録したいと思います。統計収集用のデータ構造を生成し、OMNeT ++で作成された* .vecファイルに記録する方法はありますか?私はこの特定の信号のNEDファイルで利用可能な統計関数については気にしません。簡単な例

、私はどこかに私が放出したい信号のデータ型として

typedef boost::tuple<boost::DateTime, bool, Unit::Watt, Unit::VAr> MyTuple; 

があるとします。最善の方法はまだへとどうなるか

vector 1 MyNodeName MyResultVectorName TV 
1 14.126 2013-01-22T23:22:19+10:00 true 125300 12000 

ことができない場合は、:のように、例えば、私のソースコード内の

MyTuple myTuple(/* ... data ... */); 
emit(mySignal, myTuple); 

を持っており、recular .vec結果ファイルに記録する方法はありますOMNeTのシグナルメカニズムを使用しますが、出力ファイルを自分で作成しますか?

答えて

2

デフォルトでは、OMNeT ++ではタプルを保存できません(ビルトインツールでは処理できないため)。信号は同様にスカラー値の転送方法と同様にcObjectを持ちます。 cObjectからタプルを派生させ、信号でそれを放出することができます。明らかに、指定されたデータ型を処理してファイルに書き出すことができるResultRecorder(cResultRecorderから派生)を作成して登録する必要があります。

+0

ありがとう、それは私が多くを助ける!結果ディレクトリのパスはどこから取得されますか?つまり、omnetpp.iniにスカラーファイルとベクトル結果ファイルが設定されていますか?私はベクトルファイルのスキーマを使用して、私のカスタム結果ファイルを同じディレクトリに配置し、同様に別の拡張子を付けて名前を付けたいと思います。 – Technaton

+1

getEnvir() - > getConfig() - > getAsFilename(CFGID_OUTPUT_VECTOR_FILE).c_str()OMNeTのFileOutputVectorManagerで使用されるものです。 – Rudi

+0

すごく、ありがとう! – Technaton

関連する問題