Omnet++ OMNeT++;

Omnet++ OMNeT++;,omnet++,veins,Omnet++,Veins,为了测量数据包传输/接收计数,我声明了一个标量变量,并编写了一个与record相关的函数。看起来是这样的: A.h class VEINS_API A : public DemoBaseApplLayer { private: long StaticsFrsaPacketCount; cOutVector frsaPacketCountVector; ... } A.cc void A::initialize(int stage)

为了测量数据包传输/接收计数,我声明了一个标量变量,并编写了一个与record相关的函数。看起来是这样的:

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

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

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

谢谢您的建议。正如所回答的,代码逻辑有问题。缺少
scheduleAt()
函数。因此,我们确认在运行模拟时只无条件插入了一个统计数据。感谢您的建议。正如所回答的,代码逻辑有问题。缺少
scheduleAt()
函数。因此,在运行模拟时,确认只有一个统计数据无条件插入。