我试图计算静脉-LTE终端到端到端延迟SimpleServerApp,我无法得到任何结果,当我打开结果文件有关的所有延误的统计数据是0或NaN。
我看着在TIC-TOC的教程,并试图做这样的事情,但这样,我甚至没有得到统计:
在模块:
delayVector.record(delay);
delayHist.collect(delay);
并调用结束时():
delayHist.recordAs("delayFinish");
哪里
simtime_t delay;
cOutVector delayVector;
cLongHistogram delayHist;
然后我试图从其他统计记录复制的过程,但我认为不能在我的情况下使用,因为我想送长:
在NED文件:
@signal[delay](type="long");
@statistic[delay](title="delay"; source="delay"; record=vector, stats, histogram);
在模块:
emit(delay,delay); //where the first delay is the signal and the second one, the value.
这就是我做什么来计算延时:
在发送模块:
msg->setSendingTime();
在接收模块:
simtime_t delay = simTime() - msg->getSendingTime();
我会很感激任何帮助!
由于版本4.1
的OMNeT ++引入统计/度量收集和记录的使用信号机制的概念。
简言之,信号机构的工作原理如下:一个给定的值被连接到一个(内置型的对象)的信号,并且该信息被记录到输出文件(或者作为标量或作为载体),其稍后可以在为了进行分析,以推断某些行为。
如果你不明白这个机制确实是如何工作的,请务必先阅读的OMNeT ++手册的以下部分:
- 基于信号统计4.15录音
- 12结果记录与分析
一旦你环绕这个概念,你的头,你会感觉更舒适,让你的输出结果方面想要的东西。
至于你的问题而言,如果你想使用的信令机制在SimpleServerApp
你首先必须声明的信号,并在相应的统计 .ned
文件:
@signal[nameOfSignal](type="sameAsTypeOfVariable");
@statistic[nameOfStatistic](title="nameToAppearInTheOutputFile"; source="nameOfTheSourceOfThisStatistic"; record=typeOfStat1, typeOfStat2, typeOfStat2);
然后,你需要声明的信号变量 .h
:
simsignal_t nameOfMetricSignal;
然后在注册信号 initialize()
在.cc
一样,你在使用的名称.ned
的信号:
nameOfMetricSignal = registerSignal("nameOfSignal");
最后所有你所要做的就是emit()
的信号 。 也就是说,价值附加到信号,并让它recoreded。 要做到这一点的位置取决于您的实现。
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
或Nan
,可能是由错误的号码,由于分工,相比变量的类型错误类型的信号。 另外,还要确保矢量和标量记录在不关闭( false
的) omnetpp.ini