Omnet++ OMNeT++;
为了测量数据包传输/接收计数,我声明了一个标量变量,并编写了一个与record相关的函数。看起来是这样的: A.hOmnet++ 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)
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()
函数。因此,在运行模拟时,确认只有一个统计数据无条件插入。