OMNeT++ 中与统计收集相关的值不会增加
Statistics collection related values do not increase in OMNeT++
为了统计数据包transmission/reception的个数,声明了一个标量变量,写了一个记录相关的函数。它看起来像这样:
A.h
class VEINS_API A : public DemoBaseApplLayer
{
private:
long StaticsFrsaPacketCount;
cOutVector frsaPacketCountVector;
...
}
A.cc
void A::initialize(int stage)
{
DemoBaseApplLayer::initialize(stage);
if(stage == 0)
{
StaticsFrsaPacketCount = 0;
frsaPacketCountVector.setName("fR_SA packet count");
...
}
}
void A::finish()
{
recordScalar("fR_SA Packet", StaticsFrsaPacketCount);
...
}
void A::handleSelfMsg(cMessage* msg)
{
switch(msg -> getKind())
{
case SEND_FRSA_EVT:
{
...
StaticsFrsaPacketCount++;
frsaPacketCountVector.record(StaticsFrsaPacketCount);
...
sendDelayedDown(wsm, uniform(0.01, 0.50));
}
...
}
}
我是参考OMNeT++官方Tictoc
教程中写的统计数据写的代码。但是,模拟完成后通过生成的.anf
文件标量值的结果如下图所示。
换句话说,该值似乎递增了 1
次,之后就没有递增了。是什么原因?
(this part) 你的代码看起来不错。结果中有 1 的最可能原因是因为实际上只发送了一个数据包。统计数据显示了实际发生的情况。如果您希望发送多个数据包,我建议在 Qtenv 中启动应用程序并逐步执行模拟并确保它按您预期的方式工作。
为了统计数据包transmission/reception的个数,声明了一个标量变量,写了一个记录相关的函数。它看起来像这样:
A.h
class VEINS_API A : public DemoBaseApplLayer
{
private:
long StaticsFrsaPacketCount;
cOutVector frsaPacketCountVector;
...
}
A.cc
void A::initialize(int stage)
{
DemoBaseApplLayer::initialize(stage);
if(stage == 0)
{
StaticsFrsaPacketCount = 0;
frsaPacketCountVector.setName("fR_SA packet count");
...
}
}
void A::finish()
{
recordScalar("fR_SA Packet", StaticsFrsaPacketCount);
...
}
void A::handleSelfMsg(cMessage* msg)
{
switch(msg -> getKind())
{
case SEND_FRSA_EVT:
{
...
StaticsFrsaPacketCount++;
frsaPacketCountVector.record(StaticsFrsaPacketCount);
...
sendDelayedDown(wsm, uniform(0.01, 0.50));
}
...
}
}
我是参考OMNeT++官方Tictoc
教程中写的统计数据写的代码。但是,模拟完成后通过生成的.anf
文件标量值的结果如下图所示。
换句话说,该值似乎递增了 1
次,之后就没有递增了。是什么原因?
(this part) 你的代码看起来不错。结果中有 1 的最可能原因是因为实际上只发送了一个数据包。统计数据显示了实际发生的情况。如果您希望发送多个数据包,我建议在 Qtenv 中启动应用程序并逐步执行模拟并确保它按您预期的方式工作。