在向量结果记录器中记录元组

时间:2016-07-21 13:28:30

标签: c++ omnet++

我在OMNeT ++ 4.4中运行模拟,其中我的节点发出的结果基本上是一个元组。元组的值是相互依赖的,所有节点都发出它们;即,在单个simtime中发出几个这样的元组。无法将元组“压缩”为单个双精度值。

我想在向量中记录这些元组。有没有办法为统计信息收集发出数据结构,并将其记录在OMNeT ++创建的* .vec文件中?我不关心NED文件中针对此特定信号可用的统计函数。

举个简单的例子,假设我有

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

某处作为我想要发出的信号的数据类型。有没有办法

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

在我的源代码中并将其记录在recular .vec结果文件中,例如:

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

如果不可能,仍然使用OMNeT的信号机制但是自己创建输出文件的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

默认情况下,OMNeT ++无法保存元组(因为内置工具无论如何都无法处理它),但信号可以携带cObject类似标量值的传输方式。从cObject派生你的元组,你就可以用信号发出它。显然,你还必须编写并注册一个ResultRecorder(派生自cResultRecorder),它可以处理给定的数据类型并写出文件。