自版本以来4.1
OMNeT++ 引入了使用信号机制进行统计/指标收集和记录的概念。
简而言之,信号机制的工作原理如下:将给定值附加到(类型的内置对象)信号,并将该信息记录到输出文件(作为标量或向量),稍后可以按顺序进行分析来推断某些行为。
如果您不太了解此机制的工作原理,请务必首先阅读 OMNeT++ 手册的以下部分:
- 4.15 基于信号的统计记录 https://omnetpp.org/doc/omnetpp/manual/usman.html#sec195
- 12 结果记录与分析 https://omnetpp.org/doc/omnetpp/manual/usman.html#sec401
一旦您理解了这些概念,您就会更轻松地获得您想要的输出结果。
就您的问题而言,如果您想使用中的信号机制SimpleServerApp
你首先必须声明信号和相应的统计数据 in the .ned
file:
@signal[nameOfSignal](type="sameAsTypeOfVariable");
@statistic[nameOfStatistic](title="nameToAppearInTheOutputFile"; source="nameOfTheSourceOfThisStatistic"; record=typeOfStat1, typeOfStat2, typeOfStat2);
那么你需要声明信号变量 in .h
:
simsignal_t nameOfMetricSignal;
Then 注册信号 in the initialize()
in .cc
与您在中使用的名称相同.ned
对于信号:
nameOfMetricSignal = registerSignal("nameOfSignal");
最后,你所要做的就是emit()
信号。也就是说,将值附加到信号上并让它被记录下来。您想要执行此操作的位置取决于您的实施。
emit(nameOfMetricSignal, theVariableToBeAttached);
对你来说,这会是这样的:
NED:
@signal[delay](type="float");
@statistic[delay](title="delay"; source="delay"; record=mean, sum, stats, vector);
-
.h
simsignal_t delaySignal;
-
.cc
delaySignal = registerSignal("delay");
-
.cc
emit(delaySignal, delay);
如果你得到0
or Nan
这可能是由于与变量类型相比除以错误的数字、错误的信号类型。另外,请确保矢量和标量记录未关闭(false
) 在里面omnetpp.ini