问题描述
为了测量数据包的发送/接收计数,我声明了一个标量变量并编写了一个与record相关的函数。它看起来像这样:
啊
---
title: "El Code-Book de Guibi"
output:
html_document:
toc: yes
toc_depth: 5
toc_float: yes
pdf_document:
toc: yes
toc_depth: '5'
editor_options:
markdown:
wrap: 72
---
A.cc
class VEINS_API A : public DemoBaseApplLayer
{
private:
long StaticsFrsaPacketCount;
cOutVector frsaPacketCountVector;
...
}
我参考OMNeT++ 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));
}
...
}
}
官方教程中写的统计数据编写了代码。但是,模拟完成后通过生成的Tictoc
文件标量值的结果如下图所示。
换句话说,该值似乎增加了 .anf
次,之后不再增加。是什么原因?
解决方法
(这部分)你的代码看起来不错。结果中有 1 的最可能原因是因为实际上只发送了一个数据包。统计数据显示了实际发生的情况。如果您希望发送多个数据包,我建议在 Qtenv 中启动应用程序并逐步执行模拟并确保它按预期工作。