【问题标题】:Statistics collection related values do not increase in OMNeT++OMNeT++ 中与统计收集相关的值不会增加
【发布时间】:2021-04-25 03:30:13
【问题描述】:

为了测量数据包的发送/接收计数,我声明了一个标量变量并编写了一个与记录相关的函数。它看起来像这样:

啊.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 时间,之后不再增加。是什么原因?

【问题讨论】:

    标签: omnet++ veins


    【解决方案1】:

    (这部分)您的代码看起来不错。结果中出现 1 的最可能原因是因为实际上只发送了一个数据包。统计数据显示了实际发生的情况。如果您希望发送多个数据包,我建议在 Qtenv 中启动应用程序并跳过模拟并确保它按预期工作。

    【讨论】:

    • 感谢您的建议。正如所回答的那样,代码逻辑存在问题。缺少scheduleAt() 函数。因此,确认在运行模拟时只有一个无条件插入的统计数据。
    猜你喜欢
    • 1970-01-01
    • 2015-03-18
    • 2023-04-05
    • 2014-09-11
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2021-03-18
    相关资源
    最近更新 更多