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 中启动应用程序并逐步执行模拟并确保它按您预期的方式工作。